Delen via


Een Azure-service kiezen voor vectorzoekopdrachten

Vectorzoekopdrachten is een methode voor het vinden van informatie die is opgeslagen in een database in de vorm van vectoren. Vectoren zijn groepen getallen die kenmerken of kenmerken van media vertegenwoordigen, zoals tekst of afbeeldingen. Vectoren zijn een aanzienlijke vooruitgang ten opzichte van traditionele zoekmethoden op basis van trefwoorden. Ze bieden snellere, nauwkeurigere resultaten door semantische relaties in de informatie vast te leggen en te vergelijken.

Azure biedt meerdere manieren om gevectoriseerde gegevens op te slaan en te doorzoeken. Dit artikel helpt architecten en ontwikkelaars die de juiste Azure-service voor vectorzoekopdrachten moeten begrijpen en kiezen.

In dit artikel worden de volgende services vergeleken op basis van hun vectorzoekmogelijkheden:

Architecten en ontwikkelaars moeten de beschikbare services vergelijken vanuit het perspectief van systeemvereisten in Choose a candidate service en in Capability matrix.

Een kandidaatservice kiezen

Deze sectie helpt u bij het selecteren van de meest waarschijnlijke services voor uw behoeften. Als u de keuzes wilt beperken, moet u eerst rekening houden met de systeemvereisten.

Belangrijke vereisten

Een stroomdiagram waarmee u de juiste Azure-service voor vectorzoekopdrachten kunt kiezen.

Als u wilt bepalen of u een traditionele databaseoplossing of Azure AI Search wilt gebruiken, moet u rekening houden met uw vereisten en of u live of realtime vectoren kunt doorzoeken op uw gegevens. Een traditionele relationele of NoSQL-database is het meest geschikt voor uw scenario als u vaak waarden wijzigt in gevectoriseerde velden en de wijzigingen in realtime of in bijna realtime moeten worden doorzocht. Op dezelfde manier kunt u het beste voldoen aan uw prestatiedoel door uw bestaande database te gebruiken. Als uw workload echter geen realtime of bijna realtime vectorzoekbaarheid vereist en u een index van vectoren kunt beheren, kan AI Search een goede keuze zijn.

Als u een traditionele databaseoplossing kiest, is het specifieke type databaseservice dat u wilt gebruiken, voornamelijk afhankelijk van de vaardighedenset van uw team en de databases die u momenteel gebruikt. Als u al een specifiek type database gebruikt, zoals MongoDB, is het gebruik van hetzelfde type database mogelijk de eenvoudigste oplossing voor uw scenario. Zoals wordt weergegeven in de sectie Mogelijkheidsmatrix , heeft elke databaseservice enkele unieke mogelijkheden en beperkingen voor vectorzoekopdrachten. Bekijk deze informatie om ervoor te zorgen dat uw voorkeursdatabasetype de functionaliteit ondersteunt die u nodig hebt.

Als kostenproblemen een belangrijke factor zijn, is het onderhouden van uw bestaande ontwerp waarschijnlijk het beste geschikt voor uw scenario, omdat het introduceren van nieuwe services of andere exemplaren van een databaseservice nieuwe nettokosten en complexiteit kan toevoegen. Het gebruik van uw huidige databases voor vectorzoekopdrachten is waarschijnlijk minder van invloed op uw kosten dan het gebruik van een toegewijde service.

Als u ervoor kiest om een traditionele database te gebruiken in plaats van AI Search, zijn sommige geavanceerde zoekfuncties standaard niet beschikbaar. Als u bijvoorbeeld herrankering of hybride zoekopdrachten wilt uitvoeren, schakelt u deze functionaliteit in via Transact-SQL (T-SQL) of andere codering.

Mogelijkheidsmatrix

De tabellen in deze sectie geven een overzicht van de belangrijkste verschillen in mogelijkheden.

Basisfuncties

Systeemeigen ondersteuning voor vectorgegevenstypen, geschatte dichtstbijzijnde buurvectorindexen, vectordimensielimieten, meerdere vectorvelden en meerdere vectorindexen verschillen soms tussen de services. Uw workload is mogelijk afhankelijk van een aantal van deze specifieke functies. Meer informatie over de basisvectorfuncties van elke Azure-service, die worden weergegeven in de volgende tabel.

Mogelijkheid Azure Cosmos DB voor PostgreSQL Azure Cosmos DB voor NoSQL Azure Cosmos DB voor MongoDB (vCore) Azure Database voor PostgreSQL Flexibele Server KI Zoeken Azure SQL-database
Ingebouwde vectorzoekopdrachten Ja1 Ja Ja2 Ja1 Ja3 Ja
Vectorgegevenstype Ja Ja Ja Ja Ja Ja8
Dimensielimieten5 16.0006 of 2.000 5057 of 4.096 16.000 16.0006 of 2.000 4,096 1.998 (preview)4
Meerdere vectorvelden Ja Ja Nee Ja Ja Ja
Meerdere vectorindexen Ja Ja Nee Ja Ja Ja
  1. Ondersteuning voor vectorzoekopdrachten wordt geleverd door pgvector, een uitbreiding van PostgreSQL.
  2. Vectorzoekopdrachten voor insluitingen worden ondersteund in Azure Cosmos DB voor MongoDB (vCore).
  3. AI Search ondersteunt het gebruik van vectoren.
  4. Vectoren kunnen worden opgeslagen in een VARBINARY(8000) kolom of variabele in SQL Database.
  5. Embedding-modellen van OpenAI omvatten 1.536 dimensies voor zowel text-embedding-ada-002 als text-embedding-3-small, en 3.072 dimensies voor text-embedding-3-large. Azure AI Vision multimodale insluitingsmodellen hebben 1024 dimensies voor zowel afbeeldingen als tekst.
  6. Vectoren kunnen maximaal 16.000 dimensies hebben. Indexeren met behulp van de omgekeerde bestandsfile (IVFFlat) en de hiërarchisch navigeerbare Small World (HNSW)-algoritmen ondersteunt echter vectoren met een maximum van 2000 dimensies.
  7. Vectoren die zijn geïndexeerd met behulp van het platte indextype kunnen maximaal 505 dimensies hebben. Vectoren die zijn geïndexeerd met behulp van het indextype quantizedFlat of DiskANN kunnen maximaal 4096 dimensies hebben.
  8. SQL Database ondersteunt een vectorgegevenstype.

Zoekmethoden

Werkbelastingen moeten vectorzoekopdrachten vaak combineren met zoeken in volledige tekst of zelfs een hybride zoekopdracht. Dit is een zoekopdracht in volledige tekst of semantische zoekopdrachten plus vectorzoekopdrachten. De combinatie van hybride zoekopdrachten en rerankering zorgt voor hoge nauwkeurigheid voor workloads. U kunt hybride zoekopdrachten en herrankering handmatig implementeren met behulp van uw eigen code, of u kunt overwegen hoe uw vectorarchief deze workloadvereiste ondersteunt.

Zoekmethode Azure Cosmos DB voor PostgreSQL Azure Cosmos DB voor NoSQL Azure Cosmos DB voor MongoDB (vCore) Azure Database voor PostgreSQL Flexibele Server KI Zoeken Azure SQL-database
Zoeken in volledige tekst Ja1 Ja9 Ja2 Ja1 Ja3 Ja4
Hybride zoekopdracht Ja5 Ja11 Ja6 Ja5 Ja7 Ja8
Ingebouwde herrankering Nee Ja10 Nee Nee Ja9 Nee
  1. PostgreSQL biedt ondersteuning voor zoeken in volledige tekst.
  2. Azure Cosmos DB voor MongoDB (vCore) ondersteunt zoek- en query's met behulp van tekstindexen.
  3. Zoeken in volledige tekst wordt ondersteund in SQL Server.
  4. SQL Server ondersteunt vectorgegevens.
  5. Hybride zoekopdrachten worden niet geleverd als eersteklas functie, maar voorbeeldcodes zijn beschikbaar.
  6. Hybride zoekopdrachten waarbij zoeken in volledige tekst en vectoren wordt gecombineerd met wederzijdse rangfusie (RRF) wordt systeemeigen ondersteund in Azure Cosmos DB voor MongoDB (vCore).
  7. Hybride zoekopdrachten, waarin zoekopdrachten in volledige tekst, vectorzoekopdrachten en semantische classificaties worden gecombineerd, worden geleverd als een eersteklas functie in Azure AI Search.
  8. Er is een voorbeeld van hybride zoeken naar Azure SQL Database en SQL Server beschikbaar.
  9. Semantische classificatie is een eersteklas functie waarmee de resultaten van zoekopdrachten in volledige tekst en vectoren opnieuw worden gerangschikt.
  10. Cosmos DB NoSQL biedt ondersteuning voor zoeken in volledige tekst met scoren in volledige tekst.
  11. Cosmos DB NoSQL biedt ondersteuning voor hybride zoekopdrachten.

Algoritmen voor indexering van vectorgegevens

Vectorgegevensindexering is de mogelijkheid om vectoren efficiënt op te slaan en op te halen. Deze mogelijkheid is belangrijk omdat indexering invloed heeft op de snelheid en nauwkeurigheid van zoekopdrachten naar overeenkomsten en dichtstbijzijnde buurquery's op gegevensbronnen.

Indexen zijn doorgaans gebaseerd op een volledige k-dichtstbijzijnde buur (Ek-NN) of een ANN-algoritme. Ek-NN voert een volledige zoekopdracht uit op alle gegevenspunten één voor één en retourneert de nauwkeurige k dichtstbijzijnde buren. Ek-NN werkt in milliseconden met een kleine hoeveelheid gegevens, maar kan latentie veroorzaken voor grote hoeveelheden gegevens.

DiskANN, HNSW en IVFFlat zijn ANN-algoritmeindexen. Als u de juiste indexeringsstrategie selecteert, moet u zorgvuldig rekening houden met verschillende factoren, zoals de aard van de gegevensset, de specifieke vereisten van de query's en de beschikbare resources. DiskANN kan zich aanpassen aan wijzigingen in de gegevensset en rekenkundige resources opslaan. HNSW exceleert in systemen die snelle queryreacties vereisen en zich kunnen aanpassen aan wijzigingen in de gegevensset. IVFFlat is effectief in omgevingen waarin hardwarebronnen beperkt zijn of queryvolumes niet hoog zijn.

In de volgende tabel ziet u de opgegeven typen vectorgegevensindexering.

Indexeringsmethode Azure Cosmos DB voor PostgreSQL Azure Cosmos DB voor NoSQL Azure Cosmos DB voor MongoDB (vCore) Azure Database voor PostgreSQL Flexibele Server KI Zoeken Azure SQL-database
DiskANN Ja Ja Ja2 Ja1 Nee Ja3
E-kNN Ja Ja Ja Ja Ja Ja
HNSW Ja Nee Ja2 Ja Ja Nee
IVFFlat Ja Nee Ja Ja Nee Nee
Overige - Plat, gekwantiseerdPlat4 Vectorveldbeperking5
Vectorindexbeperking6
- - Externe bibliotheken zijn beschikbaar7
  1. Voor meer informatie, zie DiskANN voor Azure Database for PostgreSQL Flexible Server.
  2. Zie het overzicht van Azure Cosmos DB voor MongoDB - Vector search voor meer informatie.
  3. Vectorindexering op basis van DiskANN is momenteel beschikbaar in de beperkte preview-versie van Azure SQL.
  4. Zie Vector indexeringsbeleid voor meer informatie.
  5. Er is slechts één vectorveld beschikbaar voor elke container.
  6. Er is slechts één vectorindex beschikbaar voor elke container.
  7. Een index kan worden gemaakt met behulp van externe bibliotheken zoals Scikit Learn of FAISS.

Similariteit en afstand berekeningsmogelijkheden

Er zijn cosinus-overeenkomsten, puntproduct- en Euclidische afstandsberekeningsmethoden voor vectorzoekopdrachten. Deze methoden worden gebruikt om de gelijkenis tussen twee vectoren of de afstand tussen twee vectoren te berekenen.

Voorlopige gegevensanalyse profiteert van zowel metrische gegevens als Euclidean-afstanden, waardoor verschillende inzichten in de gegevensstructuur kunnen worden opgehaald. Tekstclassificatie presteert over het algemeen beter onder Euclidische afstanden. Het ophalen van de meest vergelijkbare teksten met een bepaalde tekst werkt meestal beter met cosinus-overeenkomsten.

Azure OpenAI-embedingen maken gebruik van cosinusgelijkenis om de overeenkomst tussen documenten en een query te berekenen.

Ingebouwde vectorvergelijkingsberekening Azure Cosmos DB voor PostgreSQL Azure Cosmos DB voor NoSQL Azure Cosmos DB voor MongoDB (vCore) Azure Database voor PostgreSQL Flexibele Server KI Zoeken Azure SQL-database
Cosinus-gelijkenis Ja Ja1 Ja Ja Ja Ja2
Euclidische afstand (L2 afstand) Ja Ja1 Ja Ja Ja Ja2
Dot-product Ja Ja1 Ja Ja Ja Ja2
  1. Zie de berekening van vectorafstanden voor Azure Cosmos DB voor NoSQL voor meer informatie.
  2. Zie de voorbeelden van afstandsberekeningen voor Azure SQL Database en SQL Server voor meer informatie.

Integratie met Azure OpenAI en andere onderdelen

Wanneer u vectorzoekopdrachten implementeert, kunt u ook overwegen om te koppelen met andere Microsoft-onderdelen. Met Azure OpenAI kunt u bijvoorbeeld vectoren maken voor uw gegevens en invoerquery's voor het zoeken naar vector-overeenkomsten.

Mogelijkheid Azure Cosmos DB voor PostgreSQL Azure Cosmos DB voor NoSQL Azure Cosmos DB voor MongoDB (vCore) Azure Database voor PostgreSQL Flexibele Server KI Zoeken Azure SQL-database
Azure OpenAI : uw eigen gegevens toevoegen Nee Nee Ja1 Nee Ja2 Nee
Vector insluiten met Azure OpenAI Nee Nee Nee Ja3 Ja4 Ja5
Integratie met Semantische Kernel Ja6 Ja7 Ja8 Ja6 Ja9 Ja10
  1. Azure Cosmos DB voor MongoDB (vCore) wordt ondersteund als een gegevensbron voor Azure OpenAI op uw gegevens.
  2. AI Search wordt ondersteund als een gegevensbron voor Azure OpenAI op uw gegevens.
  3. De Azure AI-extensie is beschikbaar.
  4. AI Search biedt een vaardigheid om de gesegmenteerde tekst te vectoriseren.
  5. U kunt een opgeslagen procedure maken voor de implementatie van het insluitmodel.
  6. Deze service wordt ondersteund als zowel een geheugenconnector als een vectordatabaseconnector. Zie de C#-documentatie voor meer informatie.
  7. Deze service wordt ondersteund als zowel een geheugenconnector als een vectordatabaseconnector. Documentatie is beschikbaar voor zowel C# als Python.
  8. Deze service wordt ondersteund als een vectordatabaseconnector. Documentatie is beschikbaar voor zowel C# als Python.
  9. Deze service wordt ondersteund als zowel een geheugenconnector als een vectordatabaseconnector. Documentatie is beschikbaar voor zowel C# als Python.
  10. Deze service wordt ondersteund als een geheugenconnector.

Bijdragers

Microsoft onderhoudt dit artikel. De volgende inzenders hebben dit artikel geschreven.

Belangrijkste auteurs:

Als u niet-openbare LinkedIn-profielen wilt zien, meldt u zich aan bij LinkedIn.

Volgende stappen