Välj en Azure-tjänst för vektorsökning
Vektorsökning är en metod för att hitta information som lagras i en databas i form av vektorer. Vektorer är grupper av tal som representerar funktioner eller egenskaper hos media, till exempel text eller bilder. Vektorer är ett betydande framsteg jämfört med traditionella nyckelordsbaserade sökmetoder. De ger snabbare och mer exakta resultat genom att förstå semantiska relationer i informationen.
Azure erbjuder flera sätt att lagra och söka efter vektoriserade data. Den här artikeln hjälper arkitekter och utvecklare som behöver förstå och välja rätt Azure-tjänst för vektorsökning för sitt program.
Den här artikeln jämför följande tjänster baserat på deras vektorsökningsfunktioner:
- Azure AI Search
- Azure Cosmos DB för NoSQL
- Azure Cosmos DB för MongoDB (virtuell kärna)
- Azure Cosmos DB för PostgreSQL
- Azure Database for PostgreSQL
- Azure SQL Database
Arkitekter och utvecklare bör jämföra tillgängliga tjänster utifrån systemkraven i Välj en kandidattjänst och i Kapacitetsmatris.
Välj en kandidattjänst
Det här avsnittet hjälper dig att välja de mest sannolika tjänsterna för dina behov. För att begränsa alternativen börjar du med att överväga systemkraven.
Viktiga krav
När du bestämmer dig för om du vill använda en traditionell databaslösning eller Azure AI-tjänsten Search bör du överväga dina krav och om du kan utföra direkt- eller realtidsvektorsökning på dina data. En traditionell relationsdatabas eller NoSQL-databas passar bäst för ditt scenario om du ändrar värden i vektoriserade fält ofta och ändringarna måste vara sökbara i realtid eller nära realtid. På samma sätt kan det vara den bästa lösningen att använda din befintliga databas för att uppfylla dina prestandamål. Å andra sidan, om din arbetsbelastning inte kräver vektorsökning i realtid eller nästan i realtid, och du accepterar att hantera ett index med vektorer, kan AI Search vara ett övertygande val.
Om du väljer en traditionell databaslösning beror den specifika typen av databastjänst som du bestämmer dig för att använda främst på ditt teams kompetensuppsättning och de databaser som du för närvarande använder. Om du redan använder en viss typ av databas, till exempel MongoDB, kan det vara den enklaste lösningen för ditt scenario att använda samma typ av databas. Som du ser i avsnittet Kapacitetsmatris har varje databastjänst vissa unika funktioner och begränsningar för vektorsökning. Granska den informationen för att säkerställa att den databastyp som du föredrar stöder de funktioner som du behöver.
Om kostnadsbekymmer är en drivande faktor är det förmodligen bäst att underhålla din befintliga design för ditt scenario eftersom införandet av nya tjänster eller andra instanser av en databastjänst kan lägga till nya nettokostnader och komplexitet. Att använda dina aktuella databaser för vektorsökning påverkar sannolikt dina kostnader mindre än att använda en dedikerad tjänst.
Om du väljer att använda en traditionell databas i stället för AI Search är vissa avancerade sökfunktioner inte tillgängliga som standard. Om du till exempel vill göra en omrankning eller hybridsökning aktiverar du den funktionen via Transact-SQL (T-SQL) eller annan kodning.
Kapacitetsmatris
Tabellerna i det här avsnittet sammanfattar de viktigaste skillnaderna i funktioner.
Grundläggande funktioner
Internt stöd för vektordatatyper, ungefärliga närmaste grannvektorindex (ANN), vektordimensionsgränser, flera vektorfält och flera vektorindex skiljer sig ibland mellan tjänsterna. Dina arbetsbelastningskrav kan kräva vissa av dessa specifika funktioner. Förstå de grundläggande vektorfunktionerna för varje Azure-tjänst, som du ser i följande tabell.
Kapacitet | Azure Cosmos DB för PostgreSQL | Azure Cosmos DB för NoSQL | Azure Cosmos DB för MongoDB (virtuell kärna) | Azure Database for PostgreSQL (Flex) | Azure AI-sökning | Azure SQL Database |
---|---|---|---|---|---|---|
Inbyggd vektorsökning | Ja 1 | Ja | Ja 2 | Ja 1 | Ja 3 | Ja 4 |
Datatyp för vektor | Ja | Ja | Ja | Ja | Ja | Nej |
Dimensionsgränser 6 | 16 000 7 eller 2000 | 5058 eller 4096 | 2 000 | 16 000 7 eller 2000 | 3,072 | 1998 (förhandsversion)5 |
Flera vektorfält | Ja | Ja | No | Ja | Ja | Ja |
Flera vektorindex | Ja | Ja | No | Ja | Ja | Ja |
- "pgvector" stöder vektorsökning, vilket är tillägget för PostgreSQL.
- Använda vektorsökning i inbäddningar i Azure Cosmos DB för MongoDB vCore
- Vektorer i Azure AI Search
- Intern vektorsökning är tillgänglig med förhandsversionen av Azure SQL Database Early adopter
- Vektorer kan lagras i en VARBINARY-kolumn (8000) eller variabel.
- Inbäddning av modeller från OpenAI, 1536 för både textinbäddning-ada-002 och textinbäddning-3-small och 3072 för textinbäddning-3-large. För inbäddningsmodeller i Azure AI Vision multimodal, 1024 för både bild och text.
- Vektorer kan ha upp till 16 000 dimensioner. Men index med hjälp av "IVFFlat" och "HNSW" stöder vektorer med upp till 2 000 dimensioner.
- Vektorer som indexeras med den platta indextypen kan vara högst 505 dimensioner. Vektorer som indexeras med indextypen quantizedFlat eller DiskANN kan vara högst 4 096 dimensioner.
Sökmetoder
Arbetsbelastningar behöver ofta kombinera vektorsökning med fulltextsökning eller till och med en hybridsökning (fulltextsökning eller semantisk sökning plus vektorsökning). Kombinationen av hybridsökning och omrankning ger hög noggrannhet för arbetsbelastningar. Du kan implementera hybridsökning och omrankning manuellt med din egen kod, eller så kan du överväga hur ditt vektorlager stöder det här arbetsbelastningskravet.
Sökmetod | Azure Cosmos DB för PostgreSQL | Azure Cosmos DB för NoSQL | Azure Cosmos DB för MongoDB (virtuell kärna) | Azure Database for PostgreSQL (Flex) | Azure AI-sökning | Azure SQL Database |
---|---|---|---|---|---|---|
Fulltextsökning | Ja 1 | Nej | Ja 2 | Ja 1 | Ja 3 | Ja 4 |
Hybridsökning | Ja 5 | Nej | Nej | Ja 5 | Ja 6 | Ja 7 |
Inbyggd omrankning | Nej | Nej | Nej | Nej | Ja 8 | Nej |
- PostgreSQL-fulltextsökning
- Sök och fråga med textindex i Azure Cosmos DB för MongoDB vCore
- Kom igång med Fulltextsökning
- Vektordata på SQL Server
- Tillhandahålls inte som en förstklassig funktion, men exempelkoder tillhandahålls.
- Hybridsökning (kombination av fulltextsökning, vektorsökning och semantisk rangordning) tillhandahålls som en förstklassig funktion.
- Exempel på hybridsökning för Azure SQL-databas och SQL Server.
- Omrankning med namnet Semantic Ranking är en förstklassig funktion för att ändra rangordningen av resultatet av fulltextsökning och/eller vektorsökning.
Vektordataindexeringsalgoritmer
Vektordataindexering är möjligheten att effektivt lagra och hämta vektorer. Den här funktionen är viktig eftersom indexering påverkar hastigheten och noggrannheten i likhetssökningar och närmsta grannfrågor på datakällor.
Index baseras vanligtvis på en fullständig k-närmaste granne (Ek-NN) eller en ANN-algoritm. Ek-NN gör en fullständig sökning på alla datapunkter en i taget och returnerar de exakta K närmaste grannarna. Ek-NN fungerar i millisekunder med en liten mängd data men kan orsaka svarstider för stora mängder data.
DiskANN, HNSW och IVFFlat är ANN-algoritmindex. Om du väljer lämplig indexeringsstrategi måste du noga överväga olika faktorer, till exempel datamängdens natur, de specifika kraven för frågorna och de tillgängliga resurserna. DiskANN kan anpassas till ändringar i datamängden och spara beräkningsresurser. HNSW utmärker sig i system som kräver snabba frågesvar och kan anpassas till ändringar i datauppsättningen. IVFFlat är effektivt i miljöer där maskinvaruresurser är begränsade eller frågevolymer inte är höga.
Förstå vilka typer av vektordataindexering som tillhandahålls från följande tabell.
Indexeringsmetod | Azure Cosmos DB för PostgreSQL | Azure Cosmos DB för NoSQL | Azure Cosmos DB för MongoDB (virtuell kärna) | Azure Database for PostgreSQL (Flex) | Azure AI-sökning | Azure SQL Database |
---|---|---|---|---|---|---|
DiskANN | Nej | Ja | Nej | Nej | Nej | Nej |
Fullständig K-närmaste granne (EKNN) | Ja | Ja | Ja | Ja | Ja | Ja |
Hierarkisk navigerbar liten värld (HNSW) | Ja | Nej | Ja (förhandsversion)1 | Ja | Ja | Nej |
IVFflat | Ja | No | Ja | Ja | Nej | Nej |
Övrigt | - | flat, quantizedFlat2 | Begränsning av vektorfält 3 Begränsning av vektorindex 4 |
- | - | Externa bibliotek är tillgängliga5 |
- Översikt över Azure Cosmos DB for MongoDB – Vektorsökning
- Principer för vektorindexering
- Endast ett vektorfält är tillgängligt per container.
- Endast ett vektorindex är tillgängligt per container.
- Index kan skapas med hjälp av externa bibliotek som Scikit Learn eller FAISS
Funktioner för likhets- och avståndsberäkning
Det finns metoder för cosinuslikhet, Dot-produkt och euklidiska metoder för avståndsberäkning för vektorsökning. Dessa metoder används för att beräkna likheten mellan två vektorer eller avståndet mellan två vektorer.
Preliminär dataanalys drar nytta av både mått och euklidiska avstånd, vilket möjliggör extrahering av olika insikter om datastruktur, medan textklassificering i allmänhet presterar bättre under euklidiska avstånd. Hämtning av de mest liknande texterna till en viss text fungerar vanligtvis bättre med cosininlikitet.
Inbäddningar i Azure OpenAI-tjänsten förlitar sig på cosinna likhet med beräkningslikhet mellan dokument och en fråga.
Inbyggd vektorjämförelseberäkning | Azure Cosmos DB för PostgreSQL | Azure Cosmos DB för NoSQL | Azure Cosmos DB för MongoDB (virtuell kärna) | Azure Database for PostgreSQL (Flex) | Azure AI-sökning | Azure SQL Database |
---|---|---|---|---|---|---|
Cosinélikhet | Ja | Ja1 | Ja | Ja | Ja | Ja 2 |
Euklidiska avstånd (L2 avstånd) | Ja | Ja1 | Ja | Ja | Ja | Ja 2 |
Dot-produkt | Ja | Ja1 | Ja | Ja | Ja | Ja 2 |
- Beräkning av vektoravstånd för Azure Cosmos DB för NoSQL.
- Exempel på avståndsberäkning för Azure SQL Database och SQL Server.
Integrering med Azure OpenAI och andra komponenter
När du implementerar vektorsökning kan du även överväga att länka till andra Microsoft-komponenter. Azure OpenAI Service hjälper dig till exempel att skapa vektorer för dina data- och indatafrågor för vektorlikhetssökning.
Kapacitet | Azure Cosmos DB för PostgreSQL | Azure Cosmos DB för NoSQL | Azure Cosmos DB för MongoDB (virtuell kärna) | Azure Database for PostgreSQL (Flex) | Azure AI-sökning | Azure SQL Database |
---|---|---|---|---|---|---|
Azure OpenAI Service – lägga till egna data | Nej | Nej | Ja 1 | Nej | Ja 2 | Nej |
Vektorinbäddning med Azure OpenAI | Nej | Nej | Nej | Ja 3 | Ja 4 | Ja 5 |
Integrering med promptflöde | Nej | Nej | Nej | Nej | Ja 6 | Nej |
Integrering med semantisk kernel | Ja 7 | Ja8 | Ja9 | Ja 7 | Ja 10 | Ja 11 |
- Azure Cosmos DB for MongoDB (vCore) stöds som datakälla för Azure OpenAI på dina data.
- Azure AI Search stöds som datakälla för Azure OpenAI på dina data.
- Azure AI-tillägg (förhandsversion) är tillgängligt.
- Azure AI Search ger en färdighet för att vektorisera den segmenterade texten.
- Du kan skapa en lagrad procedur för din inbäddningsmodelldistribution.
- Stöds som en vektordatabas i Uppslagsverktyget för Vector DB.
- Stöds som en minnesanslutning och en vektordatabasanslutning (C#).
- Stöds som en minnesanslutning och en vektordatabasanslutning (C#, Python).
- Stöds som en vektordatabasanslutning (C#, Python).
- Stöds som en minnesanslutning och en vektordatabasanslutning (C#, Python).
- Stöds som en minnesanslutning.
Deltagare
Den här artikeln underhålls av Microsoft. Det har ursprungligen skrivits av följande medarbetare.
Huvudsakliga författare:
- Keita Onabuta | Senior kundtekniker
- Gary Lee | Senior kundtekniker
Övriga medarbetare:
- Kruti Mehta | Kundtekniker
Om du vill se icke-offentliga LinkedIn-profiler loggar du in på LinkedIn.
Gå vidare
Implementera kunskapsutvinning med Azure AI Search. Den här utbildningsvägen utforskar hur du använder Azure AI Search.
Relaterade resurser
- Förstå datalagermodeller
- Teknikval för Azure-lösningar
- Meddelande om EAP för vektorstöd i Azure SQL Database
- Stöd för intern vektor i Azure SQL och SQL Server
- Vektordatabas i Azure Cosmos DB
- Introduktion till vektordatabasfunktioner i Azure Cosmos DB för NoSQL
- Vektorsökning i Azure Cosmos DB för NoSQL
- Azure Vector Database-exempel