Delen via


Semantic Kernel Vector Store-codevoorbeelden (preview)

Waarschuwing

De Semantische Kernel Vector Store-functionaliteit is in preview en verbeteringen waarvoor wijzigingen die fouten veroorzaken, kunnen nog steeds in beperkte omstandigheden optreden voordat ze worden uitgebracht.

End-to-end RAG-voorbeeld met Vector Stores

Dit voorbeeld is een zelfstandige consoletoepassing die RAG laat zien met behulp van Semantische kernel. Het voorbeeld heeft de volgende kenmerken:

  1. Hiermee kunt u kiezen uit chat- en insluitingsservices
  2. Hiermee kunt u een keuze maken uit vectordatabases
  3. Leest de inhoud van een of meer PDF-bestanden en maakt een segment voor elke sectie
  4. Hiermee genereert u embeddings voor elk tekstgedeelte en voegt deze toe aan de gekozen vectordatabase.
  5. Registreert de Vector Store als een invoegtoepassing voor tekst zoeken met de kernel
  6. Roept de invoegtoepassing aan om de prompt voor het AI-model met meer context te verbeteren

Voor twee zeer eenvoudige voorbeelden van het uitvoeren van gegevensopname in een vectorarchief en het uitvoeren van vectorzoekopdrachten, bekijkt u deze twee voorbeelden, die gebruikmaken van Qdrant- en InMemory-vectorarchieven om hun gebruik te demonstreren.

Algemene code met meerdere winkels

Vectorarchieven kunnen in bepaalde aspecten verschillen, bijvoorbeeld met betrekking tot de typen sleutels of de typen velden die elk ondersteunen. Toch is het mogelijk om code te schrijven die agnostisch is voor deze verschillen.

Zie voor een voorbeeld van gegevensopname dat dit laat zien:

Zie de volgende voorbeelden voor een voorbeeld van vectorzoekopdrachten waarin hetzelfde concept wordt gedemonstreerd. Elk van deze voorbeelden verwijst naar dezelfde algemene code en verschilt alleen van het type vectorarchief dat ze maken voor gebruik met de algemene code.

Ondersteuning van meerdere vectoren in dezelfde record

De Vector Store-abstracties ondersteunen meerdere vectoren in dezelfde record, voor vectordatabases die dit ondersteunen. In het volgende voorbeeld ziet u hoe u enkele records met meerdere vectoren maakt en de gewenste doelvector kiest wanneer u een vectorzoekopdracht uitvoert.

Vector zoeken met paginering

Wanneer u vectorzoekopdrachten uitvoert met de Vector Store-abstracties, kunt u de parameters Top en Skip gebruiken om paging te ondersteunen, waarbij u bijvoorbeeld een service moet bouwen die reageert met een kleine set resultaten per aanvraag.

Waarschuwing

Niet alle vectordatabases ondersteunen systeemeigen skip-functionaliteit voor vectorzoekopdrachten, dus sommige connectors moeten mogelijk Skip + Top-records ophalen en overslaan aan de clientzijde om dit gedrag te simuleren.

Het algemene gegevensmodel gebruiken versus een aangepast gegevensmodel gebruiken

Het is mogelijk om de Vector Store-abstracties te gebruiken zonder een gegevensmodel te definiëren en uw schema te definiëren via een recorddefinitie. In dit voorbeeld ziet u hoe u een vectorarchief kunt maken met behulp van een aangepast model en kunt lezen met behulp van het algemene gegevensmodel of omgekeerd.

Aanbeveling

Raadpleeg voor meer informatie over het gebruik van het algemene gegevensmodel het gebruik van Vector Store-abstracties zonder uw eigen gegevensmodel te definiëren.

Verzamelingen gebruiken die zijn gemaakt en opgenomen met Langchain

Het is mogelijk om de Vector Store-abstracties te gebruiken voor toegang tot verzamelingen die zijn gemaakt en opgenomen met behulp van een ander systeem, bijvoorbeeld Langchain. Er zijn meerdere benaderingen die kunnen worden gevolgd om de interoperabiliteit correct te laten werken. Bijvoorbeeld.

  1. Een gegevensmodel maken dat overeenkomt met het opslagschema dat door de Langchain-implementatie wordt gebruikt.
  2. Een recorddefinitie gebruiken met speciale namen van opslageigenschappen voor velden.

In het volgende voorbeeld laten we zien hoe we deze methoden kunnen gebruiken om compatibele Vector Store-implementaties van Langchain te maken.

Voor elk vectorarchief is er een fabrieksklasse die laat zien hoe u de compatibele Vector Store van Langchain bouwt. Zie bijvoorbeeld

End-to-end RAG-voorbeeld met Azure AI Search Vector Store

Dit voorbeeld is een set van twee scripts, de eerste met de basisbeginselen van het instellen van de Azure AI Search Vector Store en de tweede die laat zien hoe u een invoegtoepassing maakt en dat gebruikt om RAG uit te voeren.

  1. Explicatie van het gegevensmodel en het instellen van Azure AI Search voor dit voorbeeld
  2. Records maken, vectoren toevoegen en bijwerken of invoegen van records in Azure AI Search
  3. Gebruik hetzelfde verbindings- en gegevensmodel om aangepaste functies te maken die vervolgens kunnen worden gebruikt met automatische functieaanroepen voor geavanceerde RAG

Eenvoudige gegevensopname en vectorzoekopdrachten

We hebben ook een voorbeeld dat de basisbeginselen toont van het maken van de verzameling, tot het toevoegen van records en om uiteindelijk te zoeken. Dit kan worden gestart met verschillende vectoropslagen.

Eenvoudige gegevensopname en vectorzoekopdrachten

Voor eenvoudige voorbeelden van het uitvoeren van gegevensopname in een vectorarchief en vectorzoekopdrachten, bekijkt u deze voorbeelden, die gebruikmaken van Azure AI Search, JDBC met PostgreSQL, Redis en In Memory Vector Stores.