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 inzicht te krijgen in de semantische relaties binnen de informatie.
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:
- Azure AI Search
- Azure Cosmos DB voor NoSQL
- Azure Cosmos DB voor MongoDB (vCore)
- Azure Cosmos DB for PostgreSQL
- Azure Database for PostgreSQL
- Azure SQL-database
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
Wanneer u besluit of u een traditionele databaseoplossing of Azure AI-Search-service 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 is het gebruik van uw bestaande database mogelijk de beste oplossing voor u om te voldoen aan uw prestatiedoelen. Aan de andere kant, als uw workload geen realtime of bijna realtime vectorzoekbaarheid vereist en u accepteert het beheren van een index van vectoren, kan AI Search een aantrekkelijke 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 het databasetype van uw voorkeur ondersteuning biedt voor de functionaliteit 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 van invloed op uw kosten minder dan het gebruik van een toegewezen 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, kunstmatige neurale netwerkvectorindexen,vectordimensielimieten, meerdere vectorvelden en meerdere vectorindexen verschillen soms tussen de services. Voor uw workloadvereisten zijn mogelijk enkele van deze specifieke functies vereist. Meer informatie over de basisvectorfuncties van elke Azure-service, zoals wordt weergegeven in de volgende tabel.
Mogelijkheid | Azure Cosmos DB for PostgreSQL | Azure Cosmos DB voor NoSQL | Azure Cosmos DB voor MongoDB (vCore) | Azure Database for PostgreSQL (Flex) | Azure AI Search | Azure SQL-database |
---|---|---|---|---|---|---|
Ingebouwde vectorzoekopdrachten | Ja 1 | Ja | Ja 2 | Ja 1 | Ja 3 | Ja 4 |
Vectorgegevenstype | Ja | Ja | Ja | Ja | Ja | Nr. |
Dimensielimieten 6 | 16.000 7 of 2000 | 5058 of 4096 | 2.000 | 16.000 7 of 2000 | 3072 | 1998 (preview)5 |
Meerdere vectorvelden | Ja | Ja | No | Ja | Ja | Ja |
Meerdere vectorindexen | Ja | Ja | No | Ja | Ja | Ja |
- 'pgvector' ondersteunt vectorzoekopdrachten. Dit is de extensie van PostgreSQL.
- Vectorzoekopdrachten gebruiken voor insluitingen in Azure Cosmos DB voor MongoDB vCore
- Vectoren in Azure AI Search
- Native vector search is beschikbaar met azure SQL Database Early adopter preview
- Vectoren kunnen worden opgeslagen in een VARBINARY(8000) kolom of variabele.
- Modellen insluiten vanuit OpenAI, 1536 voor tekst-insluiten-ada-002 en tekst-insluiten-3-klein en 3072 voor tekst-insluiten-3-groot. Voor multimodale insluitingsmodellen van Azure AI Vision, 1024 voor zowel afbeeldingen als tekst.
- Vectoren kunnen maximaal 16.000 dimensies hebben. Maar index met 'IVFFlat' en 'HNSW' ondersteunt vectoren met maximaal 2000 dimensies.
- Vectoren die zijn geïndexeerd met het platte indextype kunnen maximaal 505 dimensies zijn. Vectoren die zijn geïndexeerd met het indextype quantizedFlat of DiskANN kunnen maximaal 4.096 dimensies zijn.
Zoekmethoden
Workloads moeten vaak vectorzoekopdrachten combineren met zoeken in volledige tekst of zelfs een hybride zoekopdracht (zoeken 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 uw eigen code, of u kunt overwegen hoe uw vectorarchief deze workloadvereiste ondersteunt.
Zoekmethode | Azure Cosmos DB for PostgreSQL | Azure Cosmos DB voor NoSQL | Azure Cosmos DB voor MongoDB (vCore) | Azure Database for PostgreSQL (Flex) | Azure AI Search | Azure SQL-database |
---|---|---|---|---|---|---|
Zoeken in volledige tekst | Ja 1 | Nee | Ja 2 | Ja 1 | Ja 3 | Ja 4 |
Hybride zoekopdracht | Ja 5 | Nee | Nr. | Ja 5 | Ja 6 | Ja 7 |
Ingebouwde herrankering | Nee | Nee | Nee | Nr. | Ja 8 | Nee |
- Zoeken in volledige tekst in PostgreSQL
- Zoeken en query's uitvoeren met tekstindexen in Azure Cosmos DB voor MongoDB vCore
- Aan de slag met zoeken in volledige tekst
- Vectorgegevens op SQL Server
- Niet opgegeven als eersteklas functie, maar voorbeeldcodes worden verstrekt.
- Hybride zoekopdrachten (combinatie van zoeken in volledige tekst, vectorzoekopdrachten en semantische classificatie) wordt geleverd als een eersteklas functie.
- Voorbeeld van hybride zoekopdracht voor Azure SQL-database en SQL Server.
- Rerankering met de naam Semantic Ranking is een eersteklas functie voor het opnieuw rangschikken van het resultaat van zoeken in volledige tekst en/of vectorzoekopdrachten.
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 uitgebreide 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. Het selecteren van de juiste indexeringsstrategie omvat een zorgvuldige overweging van 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.
Krijg inzicht in de soorten vectorgegevensindexering uit de volgende tabel.
Indexeringsmethode | Azure Cosmos DB for PostgreSQL | Azure Cosmos DB voor NoSQL | Azure Cosmos DB voor MongoDB (vCore) | Azure Database for PostgreSQL (Flex) | Azure AI Search | Azure SQL-database |
---|---|---|---|---|---|---|
DiskANN | Nr. | Ja | No | Nee | Nee | Nr. |
Volledige K-dichtstbijzijnde buur (EKNN) | Ja | Ja | Ja | Ja | Ja | Ja |
Hiërarchische navigable Small World (HNSW) | Ja | Nr. | Ja (preview)1 | Ja | Ja | Nr. |
IVFflat | Ja | No | Ja | Ja | No | Nr. |
Overige | - | plat, kwantizedFlat2 | Vectorveldbeperking 3 Vector index beperking 4 |
- | - | Externe bibliotheken zijn beschikbaar5 |
- Overzicht van Azure Cosmos DB voor MongoDB - Overzicht van vectorzoekopdrachten
- Beleid voor vectorindexering
- Er is slechts één vectorveld beschikbaar per container.
- Er is slechts één vectorindex beschikbaar per container.
- Index kan worden gemaakt met behulp van externe bibliotheken zoals Scikit Learn of FAISS
Mogelijkheden voor overeenkomsten en afstandsberekeningen
Er zijn cosinus-overeenkomsten, dot-product 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 Euclidische afstanden, waardoor verschillende inzichten over de gegevensstructuur kunnen worden opgehaald, terwijl tekstclassificatie doorgaans beter presteert onder Euclidean afstanden. Het ophalen van de meest vergelijkbare teksten met een bepaalde tekst werkt meestal beter met cosinus-overeenkomsten.
Azure OpenAI Service-insluitingen zijn afhankelijk van cosinus-gelijkenis met het berekenen van overeenkomsten tussen documenten en een query.
Berekening van ingebouwde vectorvergelijking | Azure Cosmos DB for PostgreSQL | Azure Cosmos DB voor NoSQL | Azure Cosmos DB voor MongoDB (vCore) | Azure Database for PostgreSQL (Flex) | Azure AI Search | Azure SQL-database |
---|---|---|---|---|---|---|
Cosinus-gelijkenis | Ja | Ja1 | Ja | Ja | Ja | Ja 2 |
Euclidische afstand (L2 afstand) | Ja | Ja1 | Ja | Ja | Ja | Ja 2 |
Dot-product | Ja | Ja1 | Ja | Ja | Ja | Ja 2 |
- Berekening van vectorafstand voor Azure Cosmos DB voor NoSQL.
- Voorbeelden van afstandsberekeningen voor Azure SQL-database en SQL Server.
Integratie met Azure OpenAI en andere onderdelen
Bij het implementeren van vectorzoekopdrachten kunt u ook overwegen om koppelingen te maken met andere Microsoft-onderdelen. Azure OpenAI Service helpt u bijvoorbeeld bij het maken van vectorvectoren voor uw gegevens en invoerquery's voor het zoeken naar vector-overeenkomsten.
Mogelijkheid | Azure Cosmos DB for PostgreSQL | Azure Cosmos DB voor NoSQL | Azure Cosmos DB voor MongoDB (vCore) | Azure Database for PostgreSQL (Flex) | Azure AI Search | Azure SQL-database |
---|---|---|---|---|---|---|
Azure OpenAI-service : uw eigen gegevens toevoegen | Nee | Nr. | Ja 1 | Nee | Ja 2 | Nee |
Vector insluiten met Azure OpenAI | Nee | Nee | Nr. | Ja 3 | Ja 4 | Ja 5 |
Integratie met promptstroom | Nee | Nee | Nee | Nr. | Ja 6 | Nee |
Integratie met Semantische kernel | Ja 7 | Ja8 | Ja9 | Ja 7 | Ja 10 | Ja 11 |
- Azure Cosmos DB voor MongoDB (vCore) wordt ondersteund als een gegevensbron voor Azure OpenAI op uw gegevens.
- Azure AI Search wordt ondersteund als een gegevensbron voor Azure OpenAI op uw gegevens.
- De Azure AI-extensie (preview) is beschikbaar.
- Azure AI Search biedt een vaardigheid om de gesegmenteerde tekst te vectoriseren.
- U kunt een opgeslagen procedure maken voor de implementatie van het insluitmodel.
- Ondersteund als een vectordatabase in het hulpprogramma Vector DB Lookup .
- Ondersteund als een geheugenconnector en een vectordatabaseconnector (C#).
- Ondersteund als een geheugenconnector en een vectordatabaseconnector (C#, Python).
- Ondersteund als vectordatabaseconnector (C#, Python).
- Ondersteund als een geheugenconnector en een vectordatabaseconnector (C#, Python).
- Ondersteund als een geheugenconnector.
Medewerkers
Dit artikel wordt onderhouden door Microsoft. De tekst is oorspronkelijk geschreven door de volgende Inzenders.
Belangrijkste auteurs:
- Keita Onabuta | Senior klanttechnicus
- Gary Lee | Senior klanttechnicus
Andere Inzenders:
- Kruti Mehta | Klanttechnicus
Als u niet-openbare LinkedIn-profielen wilt zien, meldt u zich aan bij LinkedIn.
Volgende stap
Kennisanalyse implementeren met Azure AI Search. In dit leertraject wordt uitgelegd hoe u Azure AI Search gebruikt.
Verwante resources
- Gegevensopslagmodellen begrijpen
- Technologische keuzes voor Azure-oplossingen
- Aankondiging van EAP for Vector Support in Azure SQL Database
- Systeemeigen vectorondersteuning in Azure SQL en SQL Server
- Vectordatabase in Azure Cosmos DB
- Inleiding tot vectordatabasemogelijkheden in Azure Cosmos DB for NoSQL
- Vector Search in Azure Cosmos DB voor NoSQL
- Voorbeelden van Azure Vector Database