Scegliere un servizio di Azure per la ricerca vettoriale

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:

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

Diagramma di flusso che consente di scegliere il servizio di ricerca vettoriale Azure corretto.

Diagramma di flusso che consente di scegliere il servizio di ricerca vettoriale Azure corretto. Il diagramma di flusso chiede se si inseriscono, aggiornano o eliminano spesso i dati vettoriali e richiedono risultati della ricerca in tempo reale o quasi in tempo reale. Se si risponde no, chiede se è necessario un indice gestito separato per il contenuto da più origini. Se sì, il diagramma di flusso indirizza ad Azure AI Search. In caso contrario, chiede l'ottimizzazione dei costi e i servizi di database esistenti. Se l'ottimizzazione dei costi è una priorità o se si usa già un servizio di database che supporta la ricerca vettoriale, il diagramma di flusso consente di usare il servizio di database esistente. Se l'ottimizzazione dei costi non è una priorità o se attualmente non si dispone di un servizio di database che supporti la ricerca vettoriale, il diagramma di flusso indirizza ad Azure AI Search. Se si risponde sì alla prima domanda, il diagramma di flusso chiede se è necessaria una ricerca vettoriale a bassa latenza in memoria o se si usa già Azure Redis gestito. Se si risponde sì, il diagramma di flusso consente di usare o continuare a usare Azure Redis gestito. Se si risponde no, il diagramma di flusso chiede se si preferisce usare un sistema di gestione di database relazionale (RDBMS). Se si risponde sì, il diagramma di flusso chiede se gli incorporamenti superano 1.998 dimensioni. Se si risponde sì, il diagramma di flusso chiede se è necessario partizionamento orizzontale per set di dati vettoriali molto grandi. Se rispondi sì, il diagramma di flusso ti indirizza ad Database di Azure per PostgreSQL con cluster elastici. Se rispondi di no, il diagramma di flusso ti indirizza ad Database di Azure per PostgreSQL. Se gli incorporamenti non superano 1.998 dimensioni, il diagramma di flusso chiede se si preferisce database SQL di Azure o Database di Azure per PostgreSQL e consente di scegliere una delle opzioni in base alla risposta. Se non si preferisce rdbms, il diagramma di flusso chiede se si vogliono mantenere i dati operativi e la ricerca vettoriale nello stesso archivio, con la ricerca full-text nativa e ibrida. Se rispondi sì, il diagramma di flusso ti indirizza ad Azure Cosmos DB for NoSQL. Se si risponde no, il diagramma di flusso chiede se sono necessarie dimensioni vettoriali fino a 16.000 o API compatibili con MongoDB. Se rispondi sì, il diagramma di flusso ti indirizza ad Azure DocumentDB. Se rispondi di no, il diagramma di flusso ti indirizza ad Azure Cosmos DB for NoSQL.

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. Il reranker semantico è disponibile in anteprima. Quando l'applicazione scrive un record e il relativo incorporamento insieme, non è necessario sincronizzare un indice di ricerca separato prima di eseguire una query sull'elemento aggiornato.

  • Ricerca di intelligenza artificiale è una scelta ottimale quando è necessario un indice gestito separato per il contenuto da più origini, con vettorizzazione integrata e funzionalità specifiche della ricerca, ad esempio facet e completamento automatico.

  • 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.

Il supporto per le funzionalità di recupero avanzate varia in base al servizio. Azure Cosmos DB per NoSQL e Azure DocumentDB forniscono una ricerca ibrida nativa che combina la ricerca full-text e vettoriale usando la fusione di rango reciproca (RRF). Azure Cosmos DB per NoSQL fornisce anche un reranker semantico in anteprima. Ricerca di intelligenza artificiale offre la ricerca ibrida e la classificazione semantica come funzionalità di ricerca gestita. Per i servizi che non forniscono queste funzionalità, implementare la logica di classificazione necessaria nel codice dell'applicazione o del database.

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 4.0967 o 505 con un indice flat 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ì Sì12 Sì Sì Sì Sì
Indici vettoriali multipli Sì Sì13 Sì Sì Sì Sì
  1. Azure DocumentDB supporta la ricerca vettoriale sugli incorporamenti.
  2. pgvector, un'estensione di PostgreSQL supporta la ricerca vettoriale. L'estensione pg_diskann offre l'indicizzazione vettoriale basata su DiskANN per una ricerca ANN efficiente su larga scala.
  3. Il modulo RediSearch in Azure Redis gestito fornisce la ricerca vettoriale.
  4. Ricerca di intelligenza artificiale supporta vettori.
  5. Il database SQL supporta un tipo di dati vector.
  6. 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.
  7. 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.
  8. È 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.
  9. 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.
  10. 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.
  11. Il database SQL supporta un tipo di dati vettoriale nativo con dimensioni fino a 1.998.
  12. Ogni indice vettoriale di Azure DocumentDB ha come destinazione un percorso vettoriale. Creare un indice vettoriale separato per ogni campo vettoriale su cui è necessario eseguire una query.
  13. È possibile creare più indici in una raccolta di Azure DocumentDB, ma solo un indice vettoriale può avere come destinazione un percorso vettore specifico.

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ì (anteprima)13 NO NO NO Sì1 NO
  1. La classificazione semantica riordina i risultati delle ricerche a testo completo e vettoriali.
  2. Azure DocumentDB supporta la ricerca e la query usando indici di testo.
  3. PostgreSQL supporta la ricerca full-text.
  4. 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.
  5. SQL Server supporta la ricerca full-text.
  6. Azure Cosmos DB per NoSQL supporta la ricerca ibrida che combina l'assegnazione di punteggi full-text BM25 e la ricerca vettoriale tramite RRF. È possibile assegnare pesi alle classificazioni dei componenti.
  7. Azure DocumentDB supporta in modo nativo la ricerca ibrida che combina la ricerca full-text e vettoriale con la fusione reciproca dei rangi.
  8. La ricerca ibrida non è incorporata, ma è disponibile codice di esempio.
  9. Azure Redis gestito supporta la ricerca ibrida usando VSS combinato con il filtro degli attributi per i campi di testo, numerico, tag e geografico.
  10. La ricerca ibrida, che combina la ricerca full-text, la ricerca vettoriale e la classificazione semantica, è una funzionalità di Ricerca di intelligenza artificiale.
  11. È disponibile un esempio di ricerca ibrida per il database SQL e SQL Server.
  12. Azure Cosmos DB per NoSQL supporta la ricerca full-text e l'assegnazione dei punteggi full-text.
  13. Il reranker semantico per Azure Cosmos DB for NoSQL è in anteprima. Può riordinare i risultati di query vettoriali, full-text o ibride tramite gli SDK supportati di Azure Cosmos DB.

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 Un campo vettore e un indice per percorso78 - - Quantizzazione scalare, quantizzazione binaria9 -
  1. Per altre informazioni, vedere Archivio vettoriale integrato in Azure DocumentDB.
  2. Per altre informazioni, vedere DiskANN per Database di Azure per PostgreSQL.
  3. L'indicizzazione vettoriale native DiskANN è disponibile in anteprima. Per altre informazioni, vedere Ricerca vettoriale e indici vettoriali nel motore di database SQL.
  4. Azure Managed Redis supporta la ricerca Ek-NN utilizzando il tipo di indice FLAT per la ricerca esaustiva.
  5. Azure Managed Redis supporta HNSW per la ricerca ANN. Per altre informazioni, vedere VSS.
  6. Per altre informazioni, vedere Criteri di indicizzazione vettoriali.
  7. L'indicizzazione si applica a un solo vettore per percorso.
  8. È possibile creare un solo indice per percorso vettoriale.
  9. 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
  1. Per altre informazioni, vedere il calcolo della distanza del vettore per Azure Cosmos DB per NoSQL.
  2. Azure Managed Redis supporta la somiglianza del coseno, la distanza euclidea e le metriche della distanza interna del prodotto. Per altre informazioni, vedere VSS.
  3. 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
  1. L'integrazione del servizio Foundry Agent viene fornita tramite l'archiviazione dello stato dell'agente.
  2. L'integrazione del servizio Agente Foundry viene fornita tramite l'accesso ai dati, alla ricerca vettoriale o agli strumenti.
  3. L'integrazione del servizio Foundry Agent viene fornita tramite il recupero delle informazioni e la ricerca vettoriale.
  4. L'estensione Azure per intelligenza artificiale è disponibile.
  5. AI Search include una funzionalità che converte i blocchi di testo in vettori.
  6. È possibile creare una stored procedure per la distribuzione del modello di embedding.
  7. 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.
  8. Questo servizio è supportato come connettore di database vettoriale. Per altre informazioni, vedere la documentazione di C# e la documentazione Python.
  9. Questo servizio è supportato come connettore di memoria e un connettore di database vettoriale. Per altre informazioni, vedere la documentazione di C#.
  10. Questo servizio è supportato come connettore di database vettoriale. Per altre informazioni, vedere Uso del connettore Redis.
  11. 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.
  12. Questo servizio è supportato come connettore di memoria.

Considerazioni operative

La matrice di funzionalità identifica i servizi che soddisfano i requisiti funzionali. Quando più di un servizio risulta idoneo, confronta il modo in cui ciascuna opzione influisce sul posizionamento dei dati, sulla freschezza, sul filtraggio, sulla capacità e sulla manutenzione dell'incorporazione.

Posizionamento e aggiornamento dei dati

Azure Cosmos DB per NoSQL, Azure DocumentDB, Database di Azure per PostgreSQL e database SQL di Azure possono archiviare incorporamenti con i record operativi del carico di lavoro. Se l'applicazione genera un incorporamento e lo scrive con il record, entrambi i valori vengono aggiornati tramite il percorso di scrittura del database. Questa progettazione evita un processo di sincronizzazione dell'indice di ricerca separato.

Ricerca di intelligenza artificiale gestisce un indice di ricerca separato dal sistema di origine. È possibile eseguire il push dei documenti nell'indice o usare un indicizzatore per eseguire il pull dei dati da un'origine dati supportata. Un indice separato consente di combinare e modellare il contenuto da più sistemi e di ridimensionare il recupero indipendentemente dai carichi di lavoro transazionali. Crea anche un'altra copia dei dati ricercabili. Tenere conto del tempo tra un aggiornamento di origine e l'aggiornamento dell'indice corrispondente.

Scegli una progettazione colocata quando i record operativi cambiano frequentemente e il reperimento deve usare i valori aggiornati. Scegliere un indice di ricerca separato quando il corpus si estende su più sistemi o richiede l'estrazione, l'arricchimento e la vettorizzazione del contenuto gestiti.

Filtro e partizionamento

La maggior parte delle query vettoriali in produzione usa filtri per far rispettare i confini di tenant, sicurezza, insiemi di documenti o applicazioni. Valutare i filtri con la ricerca vettoriale perché possono influire sia sul richiamo che sulla latenza.

  • In Azure Cosmos DB per NoSQL aggiungere predicati supportati alla WHERE clausola di una query che usa VectorDistance. Un filtro della chiave di partizione limita la ricerca alla partizione logica corrispondente.
  • In Azure DocumentDB aggiungere filtri supportati all'operatore cosmosSearch .
  • In Ricerca di intelligenza artificiale creare campi non vettoriali filtrabili e usare le modalità di filtro vettoriale per controllare se il servizio applica un filtro prima o dopo il recupero vettoriale.

Capacità e progettazione a livello di area

I servizi usano unità di ridimensionamento e fatturazione diverse, quindi i confronti dei prezzi di listino non mostrano il costo di un carico di lavoro specifico. Dimensioni dell'indice del modello, dimensioni vettoriali, frequenza di query, frequenza di aggiornamento, repliche, partizioni e velocità effettiva del database. Includere il costo del database di origine quando si valuta un indice di ricerca separato.

Anche la progettazione regionale differisce:

  • Azure Cosmos DB fornisce la distribuzione dei dati predefinita tra le aree Azure e supporta più aree di scrittura.
  • AI Search è un servizio regionale. Una progettazione di ricerca di intelligenza artificiale multiregion usa un servizio di ricerca in ogni area e richiede un processo che mantiene allineati gli indici.

Mantenere aggiornati gli incorporamenti

Gli incorporamenti sono dati derivati. Rigenerarli quando il contenuto di origine cambia o quando si adotta un modello di incorporamento diverso.

Gli indicizzatori di ricerca di intelligenza artificiale possono orchestrare la suddivisione in blocchi e la vettorializzazione integrata per le origini supportate. Per una progettazione centrata su database, l'applicazione o la pipeline di dati esegue questi passaggi e scrive i vettori risultanti. Un feed di modifiche o un evento di origine può avviare tale processo, ma il nuovo contenuto non è semanticamente ricercabile fino a quando non viene archiviato l'incorporamento aggiornato.

Collaboratori

Microsoft gestisce questo articolo. I collaboratori seguenti hanno scritto questo articolo.

Autori principali:

Altri contributori:

Per visualizzare i profili LinkedIn non pubblici, accedere a LinkedIn.

Passaggi successivi