Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
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:
- Azure AI Zoeken
- 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
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 |
-
Ondersteuning voor vectorzoekopdrachten wordt geleverd door
pgvector, een uitbreiding van PostgreSQL. - Vectorzoekopdrachten voor insluitingen worden ondersteund in Azure Cosmos DB voor MongoDB (vCore).
- AI Search ondersteunt het gebruik van vectoren.
-
Vectoren kunnen worden opgeslagen in een
VARBINARY(8000)kolom of variabele in SQL Database. - 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.
- 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.
- 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.
- 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 |
- PostgreSQL biedt ondersteuning voor zoeken in volledige tekst.
- Azure Cosmos DB voor MongoDB (vCore) ondersteunt zoek- en query's met behulp van tekstindexen.
- Zoeken in volledige tekst wordt ondersteund in SQL Server.
- SQL Server ondersteunt vectorgegevens.
- Hybride zoekopdrachten worden niet geleverd als eersteklas functie, maar voorbeeldcodes zijn beschikbaar.
- 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).
- Hybride zoekopdrachten, waarin zoekopdrachten in volledige tekst, vectorzoekopdrachten en semantische classificaties worden gecombineerd, worden geleverd als een eersteklas functie in Azure AI Search.
- Er is een voorbeeld van hybride zoeken naar Azure SQL Database en SQL Server beschikbaar.
- Semantische classificatie is een eersteklas functie waarmee de resultaten van zoekopdrachten in volledige tekst en vectoren opnieuw worden gerangschikt.
- Cosmos DB NoSQL biedt ondersteuning voor zoeken in volledige tekst met scoren in volledige tekst.
- 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 |
- Voor meer informatie, zie DiskANN voor Azure Database for PostgreSQL Flexible Server.
- Zie het overzicht van Azure Cosmos DB voor MongoDB - Vector search voor meer informatie.
- Vectorindexering op basis van DiskANN is momenteel beschikbaar in de beperkte preview-versie van Azure SQL.
- Zie Vector indexeringsbeleid voor meer informatie.
- Er is slechts één vectorveld beschikbaar voor elke container.
- Er is slechts één vectorindex beschikbaar voor elke container.
- 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 |
- Zie de berekening van vectorafstanden voor Azure Cosmos DB voor NoSQL voor meer informatie.
- 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 |
- Azure Cosmos DB voor MongoDB (vCore) wordt ondersteund als een gegevensbron voor Azure OpenAI op uw gegevens.
- AI Search wordt ondersteund als een gegevensbron voor Azure OpenAI op uw gegevens.
- De Azure AI-extensie is beschikbaar.
- AI Search biedt een vaardigheid om de gesegmenteerde tekst te vectoriseren.
- U kunt een opgeslagen procedure maken voor de implementatie van het insluitmodel.
- Deze service wordt ondersteund als zowel een geheugenconnector als een vectordatabaseconnector. Zie de C#-documentatie voor meer informatie.
- Deze service wordt ondersteund als zowel een geheugenconnector als een vectordatabaseconnector. Documentatie is beschikbaar voor zowel C# als Python.
- Deze service wordt ondersteund als een vectordatabaseconnector. Documentatie is beschikbaar voor zowel C# als Python.
- Deze service wordt ondersteund als zowel een geheugenconnector als een vectordatabaseconnector. Documentatie is beschikbaar voor zowel C# als Python.
- Deze service wordt ondersteund als een geheugenconnector.
Bijdragers
Microsoft onderhoudt dit artikel. De volgende inzenders hebben dit artikel geschreven.
Belangrijkste auteurs:
- Keita Onabuta | Senior Solution Engineer
- Yu Saito | Solution Architect
Als u niet-openbare LinkedIn-profielen wilt zien, meldt u zich aan bij LinkedIn.
Volgende stappen
- Kennisanalyse implementeren met BEHULP van AI Search
- Intelligente toepassing en AI
- Vector overeenkomsten zoeken met behulp van Azure SQL en Azure OpenAI
- Systeemeigen vectorondersteuning in Azure SQL en SQL Server
- Vectordatabase in Azure Cosmos DB
- Voorbeelden van Azure Vector-databases