Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
La ricerca vettoriale è un modo per trovare 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. Acquisiscono relazioni semantiche all'interno delle informazioni, che consentono la ricerca di somiglianza oltre alla corrispondenza esatta delle parole chiave.
Azure offre diversi modi per archiviare e cercare dati vettorializzati. Questo articolo illustra come scegliere il servizio di ricerca vettoriale Azure appropriato per le applicazioni.
Questo articolo confronta i servizi seguenti in base alle relative funzionalità di ricerca vettoriale:
- Ricerca di intelligenza artificiale di Azure
- Azure Cosmos DB per NoSQL
- Azure DocumentDB
- Database di Azure per PostgreSQL
- Redis Gestito di Azure
- Database SQL di Azure
Per confrontare i requisiti di sistema per ogni servizio, vedere Scegliere un servizio candidato e una matrice di funzionalità.
Scegli un servizio candidato
Questa sezione consente di selezionare il servizio o i servizi migliori per le proprie esigenze. Per restringere le scelte, iniziare considerando i requisiti di sistema.
Requisiti chiave
Per decidere se usare una soluzione di database tradizionale o AI Search, considera i tuoi requisiti e se puoi eseguire ricerche vettoriali live o in tempo reale sui tuoi dati. Se si modificano frequentemente i valori nei campi vettorializzati e se tali modifiche devono essere ricercabili in tempo reale o quasi in tempo reale, un database relazionale o NoSQL tradizionale è la soluzione ideale per lo scenario in uso. Allo stesso modo, il database esistente potrebbe essere il modo migliore per raggiungere il tuo obiettivo di prestazioni. Tuttavia, se il carico di lavoro non richiede la ricerca vettoriale in tempo reale o quasi in tempo reale ed è possibile gestire un indice di vettori, è possibile usare Ricerca di intelligenza artificiale.
Se si sceglie una soluzione di database tradizionale, scegliere un servizio di database basato sul set di competenze del team e sui database esistenti. Se si usa già un servizio di database, ad esempio Azure Cosmos DB per NoSQL, tale servizio potrebbe essere la soluzione più semplice per lo scenario in uso.
Azure Cosmos DB per NoSQL è una soluzione ottimale se si vogliono mantenere i dati operativi e la ricerca vettoriale nello stesso sistema e se è necessario assegnare punteggi full-text, ricerca ibrida o reranking predefinito.
La ricerca di intelligenza artificiale potrebbe essere una scelta ottimale se il carico di lavoro richiede la ricerca ibrida di prima classe e la classificazione semantica.
Database di Azure per PostgreSQL supporta il ridimensionamento orizzontale usando cluster elastici, un'offerta gestita dell'estensione Citus open source che supporta il partizionamento orizzontale. Questa funzionalità distribuisce i dati vettoriali tra più nodi, che possono essere utili per set di dati vettoriali di grandi dimensioni.
Considera Azure Managed Redis quando hai bisogno di una ricerca vettoriale in memoria con latenza ultra-bassa o quando Redis è già implementato per la memorizzazione nella cache o la gestione delle sessioni.
Ogni servizio di database ha funzionalità e limitazioni univoche per la ricerca vettoriale. Verificare che il tipo di database disponga delle funzionalità necessarie.
I nuovi servizi e le istanze di database aggiuntive possono aumentare i costi e la complessità. Per ridurre il sovraccarico, è possibile continuare a usare la progettazione esistente. La ricerca vettoriale nei database correnti potrebbe essere più conveniente rispetto a un servizio di ricerca vettoriale dedicato. Tuttavia, alcune funzionalità di ricerca avanzate non sono disponibili per impostazione predefinita nei database tradizionali. Ad esempio, se è necessario riesezionare o usare la ricerca ibrida, è possibile implementare queste funzionalità usando codice, ad esempio Transact-SQL (T-SQL).
Matrice delle funzionalità
Le tabelle di questa sezione riepilogano Azure funzionalità del servizio di ricerca vettoriale. Confrontare i servizi disponibili con i requisiti. Alcuni servizi sono più adatti per scenari specifici, quindi considerare i compromessi mostrati in ogni tabella.
Se si lavora in Microsoft Fabric, è possibile usare Real-Time Intelligence per la ricerca di somiglianze vettoriali (VSS) usando una eventhouse come database vettoriale. Per altre informazioni, vedere la documentazione di Fabric.
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 variano tra i servizi. Il carico di lavoro potrebbe richiedere una o più di queste funzionalità.
La tabella seguente illustra le funzionalità vettoriali di ogni servizio Azure.
| Capacità | Azure Cosmos DB per il NoSQL | Azure DocumentDB | Database di Azure per PostgreSQL | Redis Gestito di Azure | Ricerca IA | SQL Database |
|---|---|---|---|---|---|---|
| Ricerca vettoriale predefinita | Sì | Sì1 | Sì2 | Sì3 | Sì4 | Sì |
| Tipo di dati vettoriali | Sì | Sì | Sì | Sì | Sì | Sì5 |
| Limiti delle dimensioni6 | 5057 o 4.096 | 16.0008, 4.000 o 2.000, a seconda della configurazione | 16.0009 o 2.000 | 32,768 | 4.09610 | 1.998 11 |
| Più campi vettoriali | Sì | NO | Sì | Sì | Sì | Sì |
| Indici vettoriali multipli | Sì | NO | Sì | Sì | Sì | Sì |
- Azure DocumentDB supporta la ricerca vettoriale sugli incorporamenti.
-
pgvector, un'estensione di PostgreSQL supporta la ricerca vettoriale. L'estensionepg_diskannoffre l'indicizzazione vettoriale basata su DiskANN per una ricerca ANN efficiente su larga scala. - Il modulo RediSearch in Azure Redis gestito fornisce la ricerca vettoriale.
- Ricerca di intelligenza artificiale supporta vettori.
- Il database SQL supporta un tipo di dati vector.
- I modelli di embedding di OpenAI includono 1.536 dimensioni per text-embedding-ada-002 e text-embedding-3-small, e 3.072 dimensioni per text-embedding-3-large. I modelli di embedding multimodale di Azure Vision hanno 1.024 dimensioni sia per le immagini che per il testo.
- I vettori indicizzati usando il tipo di indice flat possono avere fino a 505 dimensioni. I vettori indicizzati usando il tipo di indice quantiizedFlat o DiskANN possono avere fino a 4.096 dimensioni.
- È possibile indicizzare vettori fino a 16.000 dimensioni usando DiskANN e la quantizzazione del prodotto. Hierarchical navigable small world (HNSW) o IVFFlat a mezza precisione supportano indici vettoriali fino a 4.000 dimensioni. Senza compressione, la dimensione massima predefinita del vettore per l'indicizzazione è 2.000. Per altre informazioni, vedere le dimensioni vettoriali per Azure DocumentDB.
- I vettori possono avere fino a 16.000 dimensioni. Tuttavia, l'indicizzazione tramite algoritmi IVFFlat e HNSW supporta vettori con dimensioni fino a 2.000.
- Ricerca AI supporta il troncamento dimensionale basato sul Representation Learning Matryoshka. I modelli di incorporamento del testo-3 possono ridurre le dimensioni vettoriali. Ad esempio, è possibile utilizzare 256 o 512 dimensioni.
- Il database SQL supporta un tipo di dati vettoriale nativo con dimensioni fino a 1.998.
Metodi di ricerca
I carichi di lavoro spesso devono combinare la ricerca vettoriale con la ricerca full-text o la ricerca ibrida. La ricerca ibrida è una ricerca full-text o una ricerca semantica combinata con una ricerca vettoriale. In caso di combinazione, la ricerca ibrida e la reranking ottengono un'accuratezza elevata per i carichi di lavoro. È possibile implementare manualmente la ricerca ibrida e reranking usando 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 per il NoSQL | Azure DocumentDB | Database di Azure per PostgreSQL | Redis Gestito di Azure | Ricerca IA | SQL Database |
|---|---|---|---|---|---|---|
| Ricerca per testo completo | Sì12 | Sì2 | Sì3 | Sì4 | Sì | Sì5 |
| Ricerca ibrida | Sì6 | Sì7 | Sì8 | Sì9 | Sì10 | Sì11 |
| Reranking predefinito | Sì | NO | NO | NO | Sì1 | NO |
- La classificazione semantica riordina i risultati delle ricerche a testo completo e vettoriali.
- Azure DocumentDB supporta la ricerca e la query usando indici di testo.
- PostgreSQL supporta la ricerca full-text.
- Azure Managed Redis supporta la ricerca a testo completo usando il modulo RediSearch, inclusi la tokenizzazione del testo, lo stemming e l'ordinamento per rilevanza.
- SQL Server supporta la ricerca full-text.
- Azure Cosmos DB per NoSQL supporta la ricerca ibrida.
- Azure DocumentDB supporta in modo nativo la ricerca ibrida che combina la ricerca full-text e vettoriale con la fusione reciproca dei rangi.
- La ricerca ibrida non è incorporata, ma è disponibile codice di esempio.
- Azure Redis gestito supporta la ricerca ibrida usando VSS combinato con il filtro degli attributi per i campi di testo, numerico, tag e geografico.
- La ricerca ibrida, che combina la ricerca full-text, la ricerca vettoriale e la classificazione semantica, è una funzionalità di Ricerca di intelligenza artificiale.
- È disponibile un esempio di ricerca ibrida per il database SQL e SQL Server.
- Azure Cosmos DB per NoSQL supporta la ricerca full-text e l'assegnazione dei punteggi full-text.
Algoritmi di indicizzazione dei dati vettoriali
L'indicizzazione dei dati vettoriali è la possibilità di archiviare e recuperare in modo efficiente i vettori. L'indicizzazione influisce sulla velocità e l'accuratezza delle ricerche di somiglianza e sulle query adiacenti più vicine sulle origini dati.
Gli indici usano in genere un algoritmo k-nearest neighbor completo (Ek-NN) o un algoritmo ANN. Ek-NN esegue una ricerca completa su tutti i punti dati e restituisce i k vicini più vicini accurati. Durante la ricerca di una piccola quantità di dati, Ek-NN funziona in millisecondi. Per set di dati di dimensioni maggiori, è possibile che si verifichi una latenza.
DiskANN, HNSW e IVFFlat sono indici di algoritmo ANN. La selezione della strategia di indicizzazione appropriata richiede 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.
Nella tabella seguente vengono illustrati i tipi di indicizzazione dei dati vettoriali disponibili.
| Approccio di indicizzazione | Azure Cosmos DB per il NoSQL | Azure DocumentDB | Database di Azure per PostgreSQL | Redis Gestito di Azure | Ricerca IA | SQL Database |
|---|---|---|---|---|---|---|
| DiskANN | Sì | Sì1 | Sì2 | NO | NO | Sì3 |
| Ek-NN | Sì | Sì | Sì | Sì4 | Sì | Sì |
| HNSW | NO | Sì1 | Sì | Sì5 | Sì | NO |
| IVFFlat | NO | Sì | Sì | NO | NO | NO |
| Altro | Flat, quantizedFlat6 | Limitazione dei campi vettoriali,7 limitazione dell'indice vettoriale8 |
- | - | Quantizzazione scalare, quantizzazione binaria9 | - |
- Per altre informazioni, vedere Archivio vettoriale integrato in Azure DocumentDB.
- Per altre informazioni, vedere DiskANN per Database di Azure per PostgreSQL.
- L'indicizzazione vettoriale native DiskANN è disponibile in anteprima. Per altre informazioni, vedere Ricerca vettoriale e indici vettoriali nel motore di database SQL.
- Azure Managed Redis supporta la ricerca Ek-NN utilizzando il tipo di indice FLAT per la ricerca esaustiva.
- Azure Managed Redis supporta HNSW per la ricerca ANN. Per altre informazioni, vedere VSS.
- Per altre informazioni, vedere Criteri di indicizzazione vettoriali.
- L'indicizzazione si applica a un solo vettore per percorso.
- È possibile creare un solo indice per percorso vettoriale.
- Ricerca di intelligenza artificiale supporta la quantizzazione scalare e binaria per ridurre le dimensioni dei vettori in un indice di ricerca.
Funzionalità di calcolo della somiglianza e della distanza
La ricerca vettoriale supporta i metodi di calcolo della similarità del coseno, del prodotto scalare e della distanza euclidea. Usare questi metodi per calcolare la somiglianza o la distanza tra due vettori.
L'analisi preliminare dei dati usa metriche e distanze euclidee in modo da poter estrarre un'ampia gamma di informazioni dettagliate sulla struttura dei dati. La classificazione del testo in genere offre prestazioni migliori sotto le distanze euclidee. Il recupero dei testi più simili a un determinato testo funziona in genere meglio con la similarità coseno.
Gli incorporamenti di Azure OpenAI si basano sulla somiglianza del coseno per calcolare la somiglianza tra documenti e query.
| Calcolo di confronto vettoriale integrato | Azure Cosmos DB per il NoSQL | Azure DocumentDB | Database di Azure per PostgreSQL | Redis Gestito di Azure | Ricerca IA | SQL Database |
|---|---|---|---|---|---|---|
| Somiglianza coseno | Sì1 | Sì | Sì | Sì2 | Sì | Sì3 |
| Distanza euclidea | Sì1 | Sì | Sì | Sì2 | Sì | Sì3 |
| Prodotto scalare | Sì1 | Sì | Sì | Sì2 | Sì | Sì3 |
- Per altre informazioni, vedere il calcolo della distanza del vettore per Azure Cosmos DB per NoSQL.
- Azure Managed Redis supporta la somiglianza del coseno, la distanza euclidea e le metriche della distanza interna del prodotto. Per altre informazioni, vedere VSS.
- Per altre informazioni, vedere gli esempi di calcolo della distanza per il database SQL e SQL Server.
Integrazione con Azure OpenAI e altri componenti
È possibile collegare la ricerca vettoriale ad altri componenti Microsoft. Ad esempio, Azure OpenAI consente di creare vettori per i dati e le query di input per VSS.
| Capacità | Azure Cosmos DB per il NoSQL | Azure DocumentDB | Database di Azure per PostgreSQL | Redis Gestito di Azure | Ricerca IA | SQL Database |
|---|---|---|---|---|---|---|
| Integrazione di Foundry IQ | NO | NO | NO | NO | Sì | NO |
| Integrazione del servizio Foundry Agent | Sì1 | NO | Sì2 | Sì2 | Sì3 | Sì2 |
| Generazione integrata di embedding di Azure OpenAI | NO | NO | Sì4 | NO | Sì5 | Sì6 |
| Integrazione del kernel semantico | Sì7 | Sì8 | Sì9 | Sì10 | Sì11 | Sì12 |
- L'integrazione del servizio Foundry Agent viene fornita tramite l'archiviazione dello stato dell'agente.
- L'integrazione del servizio Agente Foundry viene fornita tramite l'accesso ai dati, alla ricerca vettoriale o agli strumenti.
- L'integrazione del servizio Foundry Agent viene fornita tramite il recupero delle informazioni e la ricerca vettoriale.
- L'estensione Azure per intelligenza artificiale è disponibile.
- AI Search include una funzionalità che converte i blocchi di testo in vettori.
- È possibile creare una stored procedure per la distribuzione del modello di embedding.
- Questo servizio è supportato come connettore di memoria e un connettore di database vettoriale. Per altre informazioni, vedere la documentazione di C# e la documentazione Python.
- Questo servizio è supportato come connettore di database vettoriale. Per altre informazioni, vedere la documentazione di C# e la documentazione Python.
- Questo servizio è supportato come connettore di memoria e un connettore di database vettoriale. Per altre informazioni, vedere la documentazione di C#.
- Questo servizio è supportato come connettore di database vettoriale. Per altre informazioni, vedere Uso del connettore Redis.
- Questo servizio è supportato come connettore di memoria e un connettore di database vettoriale. Per altre informazioni, vedere la documentazione di C# e la documentazione Python.
- Questo servizio è supportato come connettore di memoria.
Collaboratori
Microsoft gestisce questo articolo. I collaboratori seguenti hanno scritto questo articolo.
Autori principali:
- Yu Saito | Ingegnere della soluzione
- Miho Yamamoto | Senior Solution Engineer
Altro collaboratore:
- Keita Onabuta | Senior Solution Engineer
Per visualizzare i profili LinkedIn non pubblici, accedere a LinkedIn.
Passaggi successivi
- Applicazioni intelligenti e intelligenza artificiale
- Vss usando Azure SQL e Azure OpenAI
- Supporto di vettori nativi in SQL di Azure e SQL Server
- Database vettoriale in Azure Cosmos DB
- VSS in Redis gestito di Azure
- Ricerca vettoriale in Azure AI Search
- Ricerca vettoriale in Azure Cosmos DB per NoSQL