Scegliere un servizio di Azure per la ricerca vettoriale
La ricerca vettoriale è un metodo di ricerca delle informazioni archiviate in un database a forma di vettori. I vettori sono gruppi di numeri che rappresentano caratteristiche o caratteristiche dei supporti, ad esempio testo o immagini. I vettori sono un progresso significativo rispetto ai metodi di ricerca tradizionali basati su parole chiave. Offrono risultati più veloci e accurati comprendendo le relazioni semantiche all'interno delle informazioni.
Azure offre diversi modi per archiviare e cercare dati vettorializzati. Questo articolo consente agli architetti e agli sviluppatori che devono comprendere e scegliere il servizio di Azure appropriato per la ricerca vettoriale dell'applicazione.
Questo articolo confronta i servizi seguenti in base alle relative funzionalità di ricerca vettoriale:
- Azure AI Search
- Azure Cosmos DB for NoSQL
- Azure Cosmos DB for MongoDB (vCore)
- Azure Cosmos DB for PostgreSQL
- Database di Azure per PostgreSQL
- Database SQL di Azure
Architetti e sviluppatori devono confrontare i servizi disponibili dal punto di vista dei requisiti di sistema in Scegliere un servizio candidato e in Matrice di funzionalità.
Scegliere un servizio candidato
Questa sezione consente di selezionare i servizi più probabili per le proprie esigenze. Per restringere le scelte, iniziare considerando i requisiti di sistema.
Requisiti chiave
Quando si decide se usare una soluzione di database tradizionale o un servizio di ricerca di intelligenza artificiale di Azure, prendere in considerazione i requisiti e se è possibile eseguire ricerche in tempo reale o in tempo reale sui dati. Un database relazionale tradizionale o NoSQL è l'ideale per lo scenario se si modificano i valori nei campi vettorializzati di frequente e le modifiche devono essere ricercabili in tempo reale o quasi in tempo reale. Analogamente, l'uso del database esistente potrebbe essere la soluzione migliore per soddisfare gli obiettivi di prestazioni. D'altra parte, se il carico di lavoro non richiede la ricerca vettoriale in tempo reale o quasi in tempo reale e si accetta la gestione di un indice di vettori, la ricerca di intelligenza artificiale può essere una scelta interessante.
Se si sceglie una soluzione di database tradizionale, il tipo specifico di servizio di database che si decide di usare dipende principalmente dal set di competenze del team e dai database attualmente in uso. Se si usa già un tipo specifico di database, ad esempio MongoDB, l'uso dello stesso tipo di database potrebbe essere la soluzione più semplice per lo scenario. Come illustrato nella sezione Matrice di funzionalità, ogni servizio di database presenta alcune funzionalità e limitazioni univoche per la ricerca vettoriale. Esaminare queste informazioni per assicurarsi che il tipo di database preferito supporti le funzionalità necessarie.
Se i problemi di costo sono un fattore di guida, la gestione della progettazione esistente è probabilmente la soluzione migliore per lo scenario, perché l'introduzione di nuovi servizi o altre istanze di un servizio di database può aggiungere nuovi costi netti e complessità. L'uso dei database correnti per la ricerca vettoriale influisce probabilmente sui costi inferiori rispetto all'uso di un servizio dedicato.
Se si sceglie di usare un database tradizionale anziché ricerca di intelligenza artificiale, alcune funzionalità di ricerca avanzate non sono disponibili per impostazione predefinita. Ad esempio, se si vuole eseguire la reranking o la ricerca ibrida, abilitare tale funzionalità tramite Transact-SQL (T-SQL) o altro codice.
Matrice delle funzionalità
Le tabelle seguenti contengono un riepilogo delle differenze principali in termini di funzionalità.
Funzionalità di base
Il supporto nativo per i tipi di dati vettoriali, gli indici vettoriali ann (nearest neighbor) approssimativi, i limiti delle dimensioni vettoriali, più campi vettoriali e più indici vettoriali sono talvolta diversi tra i servizi. I requisiti del carico di lavoro potrebbero richiedere alcune di queste funzionalità specifiche. Comprendere le funzionalità vettoriali di base di ogni servizio di Azure, come illustrato nella tabella seguente.
Funzionalità | Azure Cosmos DB for PostgreSQL | Azure Cosmos DB for NoSQL | Azure Cosmos DB for MongoDB (vCore) | Database di Azure per PostgreSQL (Flex) | Azure AI Search | Database SQL di Azure |
---|---|---|---|---|---|---|
Ricerca vettoriale predefinita | Sì 1 | Sì | Sì 2 | Sì 1 | Sì 3 | Sì 4 |
Tipo di dati vettoriali | Sì | Sì | Sì | Sì | Sì | Sì 9 |
Limiti dimensionali 6 | 16.000 7 o 2.000 | 5058 o 4.096 | 2.000 | 16.000 7 o 2.000 | 3.072 | 1.998 (anteprima)5 |
Più campi vettoriali | Sì | Sì | No | Sì | Sì | Sì |
Indici vettoriali multipli | Sì | Sì | No | Sì | Sì | Sì |
- "pgvector" supporta la ricerca vettoriale, ovvero l'estensione di PostgreSQL.
- Usare la ricerca vettoriale negli incorporamenti in Azure Cosmos DB per MongoDB vCore
- Vettori in Azure AI Search
- La ricerca vettoriale nativa è disponibile con database SQL di Azure anteprima early adopter
- I vettori possono essere archiviati in una colonna o una variabile VARBINARY(8000).
- Incorporamento di modelli da OpenAI, 1536 per text-embedding-ada-002 e text-embedding-3-small e 3072 per text-embedding-3-large. Per i modelli di incorporamento migrato di Visione artificiale di Azure, 1024 sia per l'immagine che per il testo.
- I vettori possono avere fino a 16.000 dimensioni. Tuttavia, l'indice che usa "IVFFlat" e "HNSW" supporta vettori con dimensioni fino a 2.000.
- I vettori indicizzati con il tipo di indice flat possono avere al massimo 505 dimensioni. I vettori indicizzati con il tipo di indice quantizedFlat o DiskANN possono avere al massimo 4.096 dimensioni.
- database SQL tipo di dati vector
Metodi di ricerca
I carichi di lavoro spesso devono combinare la ricerca vettoriale con la ricerca full-text o anche una ricerca ibrida (ricerca full-text o ricerca semantica più ricerca vettoriale). La combinazione di ricerca ibrida e reranking consente di ottenere un'accuratezza elevata per i carichi di lavoro. È possibile implementare manualmente la ricerca ibrida e il reranking con il proprio codice oppure valutare il modo in cui l'archivio vettoriale supporta questo requisito del carico di lavoro.
Metodo di ricerca | Azure Cosmos DB for PostgreSQL | Azure Cosmos DB for NoSQL | Azure Cosmos DB for MongoDB (vCore) | Database di Azure per PostgreSQL (Flex) | Azure AI Search | Database SQL di Azure |
---|---|---|---|---|---|---|
Ricerca full-text | Sì 1 | No | Sì 2 | Sì 1 | Sì 3 | Sì 4 |
Ricerca ibrida | Sì 5 | No | No | Sì 5 | Sì 6 | Sì 7 |
Reranking predefinito | No | No | No | No | Sì 8 | No |
- Ricerca full-text di PostgreSQL
- Cercare ed eseguire query con indici di testo in Azure Cosmos DB per MongoDB vCore
- Introduzione alla ricerca full-text
- Dati vettoriali in SQL Server
- Non fornito come funzionalità di prima classe, ma vengono forniti codici di esempio.
- La ricerca ibrida (combinazione di ricerca full-text, ricerca vettoriale e classificazione semantica) viene fornita come funzionalità di prima classe.
- Esempio di ricerca ibrida per il database SQL di Azure e SQL Server.
- Il reranking denominato Semantic Ranking è una funzionalità di prima classe per la reranking del risultato della ricerca full-text e/o della ricerca vettoriale.
Algoritmi di indicizzazione dei dati vettoriali
L'indicizzazione dei dati vettoriali è la possibilità di archiviare e recuperare in modo efficiente i vettori. Questa funzionalità è importante perché l'indicizzazione influisce sulla velocità e l'accuratezza delle ricerche di somiglianza e sulle query adiacenti più vicine sulle origini dati.
Gli indici sono in genere basati su un vicino k-vicino completo (Ek-NN) o un algoritmo ANN. Ek-NN esegue una ricerca completa su tutti i punti dati uno alla sola e restituisce i K vicini più vicini accurati. Ek-NN funziona in millisecondi con una piccola quantità di dati, ma può causare latenza per grandi quantità di dati.
DiskANN, HNSW e IVFFlat sono indici di algoritmo ANN. La selezione della strategia di indicizzazione appropriata comporta un'attenta considerazione di vari fattori, ad esempio la natura del set di dati, i requisiti specifici delle query e le risorse disponibili. DiskANN può adattarsi alle modifiche nel set di dati e salvare le risorse di calcolo. HNSW eccelle nei sistemi che richiedono risposte rapide alle query e possono adattarsi alle modifiche nel set di dati. IVFFlat è efficace negli ambienti in cui le risorse hardware sono limitate o i volumi di query non sono elevati.
Informazioni sui tipi di indicizzazione dei dati vettoriali disponibili nella tabella seguente.
Approccio di indicizzazione | Azure Cosmos DB for PostgreSQL | Azure Cosmos DB for NoSQL | Azure Cosmos DB for MongoDB (vCore) | Database di Azure per PostgreSQL (Flex) | Azure AI Search | Database SQL di Azure |
---|---|---|---|---|---|---|
DiskANN | No | Sì | No | No | No | No |
K-nearest Neighbor (EKNN) esaustivo | Sì | Sì | Sì | Sì | Sì | Sì |
Hierarchical Navigable Small World (HNSW) | Sì | No | Sì (anteprima)1 | Sì | Sì | No |
IVFflat | Sì | No | Sì | Sì | No | No |
Altro | - | flat, quantiizedFlat2 | Limitazione dei campi vettoriali 3 Limitazione dell'indice vettoriale 4 |
- | - | Le librerie esterne sono disponibili5 |
- Azure Cosmos DB per MongoDB - Panoramica della ricerca vettoriale
- Criteri di indicizzazione vettoriale
- È disponibile un solo campo vettore per ogni contenitore.
- È disponibile un solo indice vettore per ogni contenitore.
- L'indice può essere creato con l'aiuto di librerie esterne come Scikit Learn o FAISS
Funzionalità di calcolo della somiglianza e della distanza
Esistono metodi di calcolo della distanza coseno, prodotto dot e euclideo per la ricerca vettoriale. Questi metodi vengono usati per calcolare la somiglianza tra due vettori o la distanza tra due vettori.
L'analisi preliminare dei dati trae vantaggio sia dalle metriche che dalle distanze euclidee, che consentono l'estrazione di informazioni dettagliate diverse sulla struttura dei dati, mentre la classificazione del testo generalmente offre prestazioni migliori sotto le distanze euclidee. Il recupero dei testi più simili a un determinato testo funziona in genere meglio con la somiglianza del coseno.
Gli incorporamenti del servizio OpenAI di Azure si basano sulla somiglianza del coseno per calcolare la somiglianza tra i documenti e una query.
Calcolo del confronto dei vettori predefinito | Azure Cosmos DB for PostgreSQL | Azure Cosmos DB for NoSQL | Azure Cosmos DB for MongoDB (vCore) | Database di Azure per PostgreSQL (Flex) | Azure AI Search | Database SQL di Azure |
---|---|---|---|---|---|---|
Somiglianza coseno | Sì | Sì1 | Sì | Sì | Sì | Sì 2 |
Distanza euclidea (distanza L2) | Sì | Sì1 | Sì | Sì | Sì | Sì 2 |
Prodotto punto | Sì | Sì1 | Sì | Sì | Sì | Sì 2 |
- Calcolo della distanza vettoriale per Azure Cosmos DB per NoSQL.
- Esempi di calcolo della distanza per il database SQL di Azure e SQL Server.
Integrazione con Azure OpenAI e altri componenti
Quando si implementa la ricerca vettoriale, è anche possibile prendere in considerazione il collegamento con altri componenti Microsoft. Ad esempio, il servizio Azure OpenAI consente di creare vettori per i dati e le query di input per la ricerca di somiglianza vettoriale.
Funzionalità | Azure Cosmos DB for PostgreSQL | Azure Cosmos DB for NoSQL | Azure Cosmos DB for MongoDB (vCore) | Database di Azure per PostgreSQL (Flex) | Azure AI Search | Database SQL di Azure |
---|---|---|---|---|---|---|
Servizio Azure OpenAI: aggiungi i tuoi dati | No | No | Sì 1 | No | Sì 2 | No |
Incorporamento vettoriale con Azure OpenAI | No | No | No | Sì 3 | Sì 4 | Sì 5 |
Integrazione con il flusso di richiesta | No | No | No | No | Sì 6 | No |
Integrazione con il kernel semantico | Sì 7 | Sì8 | Sì9 | Sì 7 | Sì 10 | Sì 11 |
- Azure Cosmos DB per MongoDB (vCore) è supportato come origine dati per Azure OpenAI nei dati.
- Ricerca di intelligenza artificiale di Azure è supportata come origine dati per Azure OpenAI nei dati.
- Azure AI Extension (anteprima) è ora disponibile.
- Ricerca di intelligenza artificiale di Azure offre una competenza per vettorizzare il testo in blocchi.
- È possibile creare una stored procedure per la distribuzione del modello di incorporamento.
- Supportato come database vettoriale nello strumento Vector DB Lookup .
- Supportato come connettore di memoria e connettore di database vettoriale (C#).
- Supportato come connettore di memoria e connettore di database vettoriale (C#, Python).
- Supportato come connettore di database vettoriale (C#, Python).
- Supportato come connettore di memoria e connettore di database vettoriale (C#, Python).
- Supportato come connettore di memoria.
Collaboratori
Questo articolo viene gestito da Microsoft. Originariamente è stato scritto dai seguenti contributori.
Autori principali:
- Keita Onabuta | Senior Customer Engineer
- Gary Lee | Senior Customer Engineer
Altri contributori:
- Kruti Mehta | Customer Engineer
Per visualizzare i profili LinkedIn non pubblici, accedere a LinkedIn.
Passaggio successivo
Implementare il knowledge mining con Ricerca di intelligenza artificiale di Azure. Questo percorso di apprendimento illustra come usare Ricerca di intelligenza artificiale di Azure.
Risorse correlate
- Informazioni sui modelli di archivio dati
- Scelte tecnologico per le soluzioni Di Azure
- Annuncio di EAP per il supporto vettoriale in database SQL di Azure
- Supporto di vettori nativi in SQL di Azure e SQL Server
- Database vettoriale in Azure Cosmos DB
- Introduzione alle funzionalità di database vettoriale in Azure Cosmos DB per NoSQL
- Ricerca vettoriale in Azure Cosmos DB for NoSQL
- Esempi di database vettoriali di Azure