Condividi tramite


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:

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

Grafico di flusso che consente di scegliere il servizio di Azure appropriato per la ricerca vettoriale.

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 1 2 1 3 4
Tipo di dati vettoriali 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 No
Indici vettoriali multipli No
  1. "pgvector" supporta la ricerca vettoriale, ovvero l'estensione di PostgreSQL.
  2. Usare la ricerca vettoriale negli incorporamenti in Azure Cosmos DB per MongoDB vCore
  3. Vettori in Azure AI Search
  4. La ricerca vettoriale nativa è disponibile con database SQL di Azure anteprima early adopter
  5. I vettori possono essere archiviati in una colonna o una variabile VARBINARY(8000).
  6. 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.
  7. 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.
  8. 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.
  9. 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 1 No 2 1 3 4
Ricerca ibrida 5 No No 5 6 7
Reranking predefinito No No No No 8 No
  1. Ricerca full-text di PostgreSQL
  2. Cercare ed eseguire query con indici di testo in Azure Cosmos DB per MongoDB vCore
  3. Introduzione alla ricerca full-text
  4. Dati vettoriali in SQL Server
  5. Non fornito come funzionalità di prima classe, ma vengono forniti codici di esempio.
  6. La ricerca ibrida (combinazione di ricerca full-text, ricerca vettoriale e classificazione semantica) viene fornita come funzionalità di prima classe.
  7. Esempio di ricerca ibrida per il database SQL di Azure e SQL Server.
  8. 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 No No No No
K-nearest Neighbor (EKNN) esaustivo
Hierarchical Navigable Small World (HNSW) No Sì (anteprima)1 No
IVFflat No No No
Altro - flat, quantiizedFlat2 Limitazione dei campi vettoriali 3
Limitazione dell'indice vettoriale 4
- - Le librerie esterne sono disponibili5
  1. Azure Cosmos DB per MongoDB - Panoramica della ricerca vettoriale
  2. Criteri di indicizzazione vettoriale
  3. È disponibile un solo campo vettore per ogni contenitore.
  4. È disponibile un solo indice vettore per ogni contenitore.
  5. 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 1 2
Distanza euclidea (distanza L2) 1 2
Prodotto punto 1 2
  1. Calcolo della distanza vettoriale per Azure Cosmos DB per NoSQL.
  2. 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 1 No 2 No
Incorporamento vettoriale con Azure OpenAI No No No 3 4 5
Integrazione con il flusso di richiesta No No No No 6 No
Integrazione con il kernel semantico 7 8 9 7 10 11
  1. Azure Cosmos DB per MongoDB (vCore) è supportato come origine dati per Azure OpenAI nei dati.
  2. Ricerca di intelligenza artificiale di Azure è supportata come origine dati per Azure OpenAI nei dati.
  3. Azure AI Extension (anteprima) è ora disponibile.
  4. Ricerca di intelligenza artificiale di Azure offre una competenza per vettorizzare il testo in blocchi.
  5. È possibile creare una stored procedure per la distribuzione del modello di incorporamento.
  6. Supportato come database vettoriale nello strumento Vector DB Lookup .
  7. Supportato come connettore di memoria e connettore di database vettoriale (C#).
  8. Supportato come connettore di memoria e connettore di database vettoriale (C#, Python).
  9. Supportato come connettore di database vettoriale (C#, Python).
  10. Supportato come connettore di memoria e connettore di database vettoriale (C#, Python).
  11. Supportato come connettore di memoria.

Collaboratori

Questo articolo viene gestito da Microsoft. Originariamente è stato scritto dai seguenti contributori.

Autori principali:

Altri contributori:

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.