Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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 samla in och jämföra semantiska relationer i informationen.
Azure tillhandahåller 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-sökning
- Azure Cosmos DB för NoSQL
- Azure Cosmos DB för MongoDB (vCore)
- Azure Cosmos DB för PostgreSQL
- Azure-databas för 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
Om du vill bestämma om du vill använda en traditionell databaslösning eller Azure AI 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 den bästa lösningen för dig att uppfylla prestandamålet vara att använda din befintliga databas. Men om din arbetsbelastning inte kräver vektorsökning i realtid eller nästan i realtid, och du kan hantera ett index med vektorer, kan AI Search vara ett bra 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å teamets 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. Din arbetsbelastning kan bero på några av dessa specifika funktioner. Förstå de grundläggande vektorfunktionerna för varje Azure-tjänst, som visas 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) | Flexibel server för Azure Database for PostgreSQL | AI-sökning | Azure SQL Database | 
|---|---|---|---|---|---|---|
| Inbyggd vektorsökning | Ja1 | Ja | Ja2 | Ja1 | Ja3 | Ja | 
| Datatyp för vektor | Ja | Ja | Ja | Ja | Ja | Ja8 | 
| Dimensionsgränser5 | 16 0006 eller 2 000 | 5057 eller 4 096 | 16,000 | 16 0006 eller 2 000 | 4,096 | 1 998 (förhandsversion)4 | 
| Flera vektorfält | Ja | Ja | Nej | Ja | Ja | Ja | 
| Flera vektorindex | Ja | Ja | Nej | Ja | Ja | Ja | 
- 
              Stöd för vektorsökning tillhandahålls av pgvector, vilket är ett tillägg av PostgreSQL.
- Vektorsökning på inbäddningar stöds i Azure Cosmos DB för MongoDB (vCore).
- AI Search stöder användning av vektorer.
- 
              Vektorer kan lagras i en VARBINARY(8000)kolumn eller variabel i SQL Database.
- Inbäddningsmodeller från OpenAI innehåller 1 536 dimensioner för både textinbäddning-ada-002 och textinbäddning-3-small, och 3 072 dimensioner för textinbäddning-3-large. Azure AI Vision multimodala inbäddningsmodeller har 1 024 dimensioner för både bild och text.
- Vektorer kan ha upp till 16 000 dimensioner. Indexering med hjälp av inverterade algoritmer (IVFFlat) och hierarkisk navigeringsbar liten värld (HNSW) stöder dock vektorer med högst 2 000 dimensioner.
- Vektorer som indexeras med hjälp av den platta indextypen kan ha högst 505 dimensioner. Vektorer som indexeras med hjälp av indextypen quantizedFlat eller DiskANN kan ha högst 4 096 dimensioner.
- SQL Database stöder en vektordatatyp.
Sökmetoder
Arbetsbelastningar behöver ofta kombinera vektorsökning med fulltextsökning eller till och med en hybridsökning, vilket är en 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 hjälp av din egen kod, eller så kan du överväga hur vektorarkivet 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) | Flexibel server för Azure Database for PostgreSQL | AI-sökning | Azure SQL Database | 
|---|---|---|---|---|---|---|
| Fulltextsökning | Ja1 | Ja9 | Ja2 | Ja1 | Ja3 | Ja4 | 
| Hybridsökning | Ja5 | Ja11 | Ja6 | Ja5 | Ja7 | Ja8 | 
| Inbyggd omrankning | Nej | Ja10 | Nej | Nej | Ja9 | Nej | 
- PostgreSQL stöder fulltextsökning.
- Azure Cosmos DB for MongoDB (vCore) stöder sökning och frågor med hjälp av textindex.
- Fulltextsökning stöds i SQL Server.
- SQL Server stöder vektordata.
- Hybridsökning tillhandahålls inte som en förstklassig funktion, men exempelkoder är tillgängliga.
- Hybridsökning som kombinerar fulltext- och vektorsökning med reciprocal rank fusion (RRF) stöds internt i Azure Cosmos DB for MongoDB (vCore).
- Hybridsökning, som kombinerar fulltextsökning, vektorsökning och semantisk rangordning, tillhandahålls som en förstklassig funktion i Azure AI Search.
- Ett exempel på hybridsökning för Azure SQL Database och SQL Server är tillgängligt.
- Semantisk rangordning är en förstklassig funktion som återställer resultatet av fulltext- och vektorsökningar.
- Cosmos DB NoSQL stöder fulltextsökning med fulltextbedömning.
- Cosmos DB NoSQL stöder hybridsö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.
I följande tabell visas de angivna typerna av vektordataindexering.
| Indexeringsmetod | Azure Cosmos DB för PostgreSQL | Azure Cosmos DB för NoSQL | Azure Cosmos DB för MongoDB (virtuell kärna) | Flexibel server för Azure Database for PostgreSQL | AI-sökning | Azure SQL Database | 
|---|---|---|---|---|---|---|
| DiskANN | Ja | Ja | Ja2 | Ja1 | Nej | Ja3 | 
| E-kNN | Ja | Ja | Ja | Ja | Ja | Ja | 
| HNSW | Ja | Nej | Ja2 | Ja | Ja | Nej | 
| IVFFlat | Ja | Nej | Ja | Ja | Nej | Nej | 
| Övrigt | - | Platt, kvantiseradFlat4 | Begränsning av vektorfält5 Begränsning av vektorindex6 | - | - | Externa bibliotek är tillgängliga7 | 
- Mer information finns i DiskANN för Azure Database for PostgreSQL – flexibel server.
- Mer information finns i Översikt över Azure Cosmos DB for MongoDB – Vektorsökning.
- DiskANN-baserad vektorindexering är för närvarande tillgänglig i privat förhandsversion för Azure SQL.
- Mer information finns i Vektorindexeringsprinciper.
- Endast ett vektorfält är tillgängligt för varje container.
- Endast ett vektorindex är tillgängligt för varje container.
- Ett index kan skapas med hjälp av externa bibliotek som Scikit Learn eller FAISS.
Funktioner för likhets- och avståndsberäkning
Det finns cosinuslikhet, punktprodukt och beräkningsmetoder för euklidiska avstånd 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 datastrukturen. Textklassificering fungerar vanligtvis bättre under euklidiska avstånd. Hämtning av de mest liknande texterna till en viss text fungerar vanligtvis bättre med cosininlikitet.
Azure OpenAI-inbäddningar förlitar sig på cosinuslikhet för att beräkna likhet mellan dokument och en fråge.
| 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) | Flexibel server för Azure Database for PostgreSQL | AI-sökning | Azure SQL Database | 
|---|---|---|---|---|---|---|
| Cosinuslikhet | Ja | Ja1 | Ja | Ja | Ja | Ja2 | 
| Euklidiska avstånd (L2 avstånd) | Ja | Ja1 | Ja | Ja | Ja | Ja2 | 
| Dot-produkt | Ja | Ja1 | Ja | Ja | Ja | Ja2 | 
- Mer information finns i vektoravståndsberäkningen för Azure Cosmos DB för NoSQL.
- Mer information finns i 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 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) | Flexibel server för Azure Database for PostgreSQL | AI-sökning | Azure SQL Database | 
|---|---|---|---|---|---|---|
| Azure OpenAI – lägga till egna data | Nej | Nej | Ja1 | Nej | Ja2 | Nej | 
| Vektorinbäddning med Azure OpenAI | Nej | Nej | Nej | Ja3 | Ja4 | Ja5 | 
| Integrering med semantisk kernel | Ja6 | Ja7 | Ja8 | Ja6 | Ja9 | Ja10 | 
- Azure Cosmos DB for MongoDB (vCore) stöds som datakälla för Azure OpenAI på dina data.
- AI Search stöds som datakälla för Azure OpenAI för dina data.
- Azure AI-tillägget är tillgängligt.
- AI Search ger en färdighet för att vektorisera den segmenterade texten.
- Du kan skapa en lagrad procedur för din inbäddningsmodelldistribution.
- Den här tjänsten stöds som både en minnesanslutning och en vektordatabasanslutning. Mer information finns i C#-dokumentationen.
- Den här tjänsten stöds som både en minnesanslutning och en vektordatabasanslutning. Dokumentation är tillgänglig för både C# och Python.
- Den här tjänsten stöds som en vektordatabasanslutning. Dokumentation är tillgänglig för både C# och Python.
- Den här tjänsten stöds som både en minnesanslutning och en vektordatabasanslutning. Dokumentation är tillgänglig för både C# och Python.
- Den här tjänsten stöds som en minnesanslutning.
Deltagare
Microsoft ansvarar för den här artikeln. Följande deltagare skrev den här artikeln.
Huvudsakliga författare:
- Keita Onabuta | Senior lösningstekniker
- Yu Saito | Lösningstekniker
Om du vill se linkedin-profiler som inte är offentliga loggar du in på LinkedIn.
Nästa steg
- Implementera kunskapsutvinning med hjälp av AI Search
- Intelligent program och AI
- Vektorlikhetssökning med hjälp av Azure SQL och Azure OpenAI
- Stöd för intern vektor i Azure SQL och SQL Server
- Vektordatabas i Azure Cosmos DB
- Azure-vektordatabas-exempel