Dela via


Vektordatabaser för .NET + AI

Vektordatabaser är utformade för att lagra och hantera inbäddningar av vektorer. Inbäddningar är numeriska representationer av icke-numeriska data som bevarar semantisk betydelse. Ord, dokument, bilder, ljud och andra typer av data kan alla vektoriseras. Du kan använda inbäddningar för att hjälpa en AI-modell att förstå innebörden av indata så att den kan utföra jämförelser och transformeringar, till exempel sammanfatta text, hitta kontextuellt relaterade data eller skapa bilder från textbeskrivningar.

Du kan till exempel använda en vektordatabas för att:

  • Identifiera liknande bilder, dokument och låtar baserat på deras innehåll, teman, känslor och format.
  • Identifiera liknande produkter baserat på deras egenskaper, funktioner och användargrupper.
  • Rekommendera innehåll, produkter eller tjänster baserat på användarinställningar.
  • Identifiera de bästa möjliga alternativen från en stor pool med alternativ för att uppfylla komplexa krav.
  • Identifiera dataavvikelser eller bedrägliga aktiviteter som skiljer sig från dominerande eller normala mönster.

Vektordatabaser ger vektorsökningsfunktioner för att hitta liknande objekt baserat på deras dataegenskaper i stället för exakta matchningar i ett egenskapsfält. Vektorsökning fungerar genom att analysera vektorrepresentationerna av dina data som du skapade med hjälp av en AI-inbäddningsmodell, till exempel Inbäddningsmodeller för Azure OpenAI. Sökprocessen mäter avståndet mellan datavektorerna och frågevektorn. De datavektorer som är närmast din frågevektor är de som är mest lika semantiskt.

Vissa tjänster, till exempel Azure Cosmos DB for MongoDB vCore , tillhandahåller interna vektorsökningsfunktioner för dina data. Andra databaser kan förbättras med vektorsökning genom att indexera lagrade data med hjälp av en tjänst, till exempel Azure AI Search, som kan skanna och indexera dina data för att tillhandahålla vektorsökningsfunktioner.

Arbetsflöden för vektorsökning med .NET och OpenAI

Vektordatabaser och deras sökfunktioner är särskilt användbara i RAG-mönsterarbetsflöden med Azure OpenAI. Med det här mönstret kan du utöka eller förbättra DIN AI-modell med ytterligare semantiskt omfattande kunskaper om dina data. Ett vanligt AI-arbetsflöde med vektordatabaser kan innehålla följande steg:

  1. Skapa inbäddningar för dina data med en OpenAI-inbäddningsmodell.
  2. Lagra och indexera inbäddningarna i en vektordatabas eller söktjänst.
  3. Konvertera användarprompter från ditt program till inbäddningar.
  4. Kör en vektorsökning mellan dina data och jämför inbäddningen av användarprompten med inbäddningarna i databasen.
  5. Använd en språkmodell som GPT-35 eller GPT-4 för att montera ett användarvänligt slutförande från vektorsökningsresultaten.

Gå till självstudiekursen Implementera Azure OpenAI med RAG med hjälp av vektorsökning i en .NET-app för ett praktiskt exempel på det här flödet.

Andra fördelar med RAG-mönstret är:

  • Generera kontextuellt relevanta och korrekta svar på användarfrågor från AI-modeller.
  • Övervinna GRÄNSERNA för LLM-token – den tunga lyftningen görs via databasvektorsökningen.
  • Minska kostnaderna från frekvent finjustering av uppdaterade data.

Tillgängliga vektordatabaslösningar

AI-program använder ofta datavektordatabaser och -tjänster för att förbättra relevansen och tillhandahålla anpassade funktioner. Många av dessa tjänster tillhandahåller ett inbyggt SDK för .NET, medan andra erbjuder en REST-tjänst som du kan ansluta till via anpassad kod. Semantisk kernel tillhandahåller en utökningsbar komponentmodell som gör att du kan använda olika vektorlager utan att behöva lära dig varje SDK.

Semantisk kernel tillhandahåller anslutningsappar för följande vektordatabaser och tjänster:

Vektortjänst Semantisk kernelanslutning .NET SDK
Azure AI-sökning Microsoft.SemanticKernel.Connectors.AzureAISearch Azure.Search.Documents
Azure Cosmos DB för NoSQL Microsoft.SemanticKernel.Connectors.AzureCosmosDBNoSQL Microsoft.Azure.Cosmos
Azure Cosmos DB för MongoDB Microsoft.SemanticKernel.Connectors.AzureCosmosDBMongoDB MongoDb.Driver
Azure PostgreSQL-server Microsoft.SemanticKernel.Connectors.Postgres Npgsql
Azure SQL Database Microsoft.SemanticKernel.Connectors.SqlServer Microsoft.Data.SqlClient
Chroma Microsoft.SemanticKernel.Connectors.Chroma NA
DuckDB Microsoft.SemanticKernel.Connectors.DuckDB DuckDB.NET.Data.Full
Milvus Microsoft.SemanticKernel.Connectors.Milvus Milvus.Client
MongoDB Atlas Vector Search Microsoft.SemanticKernel.Connectors.MongoDB MongoDb.Driver
Pinecone Microsoft.SemanticKernel.Connectors.Pinecone REST-API
Postgres Microsoft.SemanticKernel.Connectors.Postgres Npgsql
Qdrant Microsoft.SemanticKernel.Connectors.Qdrant Qdrant.Client
Redis Microsoft.SemanticKernel.Connectors.Redis StackExchange.Redis
Viaviate Microsoft.SemanticKernel.Connectors.Weaviate REST-API

Gå till dokumentationen för respektive tjänst för att identifiera .NET SDK och API-stöd.