Vettori in Ricerca di intelligenza artificiale di Azure

La ricerca vettoriale è un approccio al recupero delle informazioni che supporta l'indicizzazione e l'esecuzione di query su rappresentazioni numeriche del contenuto. Poiché il contenuto è numerico anziché testo normale, la corrispondenza è basata su vettori più simili al vettore di query, che consente la corrispondenza tra:

  • somiglianza semantica o concettuale ("cane" e "cane", concettualmente simile ma linguisticamente distinta)
  • contenuto multilingue ("dog" in inglese e "hund" in tedesco)
  • più tipi di contenuto ("cane" in testo normale e una fotografia di un cane in un file di immagine)

Questo articolo offre un'introduzione generale ai vettori in Ricerca di intelligenza artificiale di Azure. Illustra anche l'integrazione con altri servizi di Azure e illustra terminologia e concetti correlati allo sviluppo di ricerca vettoriale.

Questo articolo è consigliato per informazioni generali, ma se si preferisce iniziare, seguire questa procedura:

È anche possibile iniziare con l'avvio rapido del vettore o con gli esempi di codice in GitHub.

Quali scenari possono supportare la ricerca vettoriale?

Gli scenari per la ricerca vettoriale includono:

  • Ricerca di somiglianza. Codificare il testo usando modelli di incorporamento come incorporamenti OpenAI o modelli open source, ad esempio SBERT, e recuperare documenti con query codificate anche come vettori.

  • Eseguire ricerche in diversi tipi di contenuto (multi-modalità). Codificare immagini e testo usando incorporamenti bidirezionali (ad esempio, con OpenAI CLIP o GPT-4 Turbo con Visione in Azure OpenAI) ed eseguire query su uno spazio di incorporamento composto da vettori di entrambi i tipi di contenuto.

  • Ricerca ibrida. In Ricerca di intelligenza artificiale di Azure la ricerca ibrida fa riferimento all'esecuzione di query vettoriali e di parole chiave nella stessa richiesta. Il supporto vettoriale viene implementato a livello di campo, con un indice contenente sia i campi vettoriali che i campi di testo ricercabili. Le query vengono eseguite in parallelo e i risultati vengono uniti in una singola risposta. Facoltativamente, aggiungere la classificazione semantica per una maggiore accuratezza con il reranking L2 usando gli stessi modelli linguistici che alimentano Bing.

  • Ricerca multilingue. Fornire un'esperienza di ricerca nella lingua degli utenti è possibile tramite l'incorporamento di modelli e modelli di chat sottoposti a training in più lingue. Se è necessario un maggiore controllo sulla traduzione, è possibile integrare le funzionalità multilingue supportate da Ricerca di intelligenza artificiale di Azure per il contenuto non di emergenza, in scenari di ricerca ibrida.

  • Ricerca vettoriale filtrata. Una richiesta di query può includere una query vettoriale e un'espressione di filtro. I filtri si applicano ai campi di testo e numerici e sono utili per i filtri dei metadati e inclusi o esclusi i risultati della ricerca in base ai criteri di filtro. Anche se un campo vettoriale non è filtrabile, è possibile configurare un testo filtrabile o un campo numerico. Il motore di ricerca può elaborare il filtro prima o dopo l'esecuzione della query vettoriale.

  • Database vettoriale. Ricerca di intelligenza artificiale di Azure archivia i dati su cui si esegue una query. Usarlo come archivio vettoriale puro ogni volta che è necessaria una memoria a lungo termine o una knowledge base o dati di base per l'architettura RAG (Retrieval Augmented Generation) o qualsiasi app che usa vettori.

Il supporto vettoriale include l'indicizzazione, l'archiviazione e l'esecuzione di query sugli incorporamenti vettoriali da un indice di ricerca.

Il diagramma seguente illustra l'indicizzazione e i flussi di lavoro di query per la ricerca vettoriale.

Architettura del flusso di lavoro di ricerca vettoriale.

Sul lato dell'indicizzazione, Ricerca di intelligenza artificiale di Azure accetta incorporamenti vettoriali e usa un algoritmo di prossimità più vicino per posizionare vettori simili vicini in un indice. Internamente, crea indici vettoriali per ogni campo vettoriale.

Il modo in cui si ottengono incorporamenti dal contenuto di origine in Ricerca di intelligenza artificiale di Azure dipende dall'approccio e dal fatto che sia possibile usare le funzionalità di anteprima. È possibile vettorizzare o generare incorporamenti come passaggio preliminare usando modelli di OpenAI, Azure OpenAI e qualsiasi numero di provider, su un'ampia gamma di contenuti di origine, tra cui testo, immagini e altri tipi di contenuto supportati dai modelli. È quindi possibile eseguire il push del contenuto prevectorizzato nei campi vettoriali in un archivio vettoriale. Questo è l'approccio disponibile a livello generale. Se è possibile usare le funzionalità di anteprima, Ricerca intelligenza artificiale di Azure offre la suddivisione in blocchi e la vettorizzazione dei dati integrati in una pipeline dell'indicizzatore. È comunque possibile fornire le risorse (endpoint e informazioni di connessione ad Azure OpenAI), ma Ricerca intelligenza artificiale di Azure effettua tutte le chiamate e gestisce le transizioni.

Sul lato query, nell'applicazione client, si raccoglie l'input della query da un utente, in genere tramite un flusso di lavoro prompt. È quindi possibile aggiungere un passaggio di codifica che converte l'input in un vettore e quindi inviare la query vettoriale all'indice in Ricerca di intelligenza artificiale di Azure per una ricerca di somiglianza. Come per l'indicizzazione, è possibile distribuire la vettorializzazione integrata (anteprima) per convertire la domanda in un vettore. Per entrambi gli approcci, Ricerca di intelligenza artificiale di Azure restituisce documenti con i vicini più vicini (kNN) richiesti k nei risultati.

Ricerca di intelligenza artificiale di Azure supporta scenari ibridi che eseguono ricerche vettoriali e parole chiave in parallelo, restituendo un set di risultati unificato che offre spesso risultati migliori rispetto alla sola ricerca di vettori o parole chiave. Per il contenuto ibrido, vettoriale e non operatore viene inserito nello stesso indice, per le query eseguite side-by-side.

Disponibilità e prezzi

La ricerca vettoriale è disponibile come parte di tutti i livelli di Ricerca di intelligenza artificiale di Azure in tutte le aree senza costi aggiuntivi.

I servizi più recenti creati dopo il 3 aprile 2024 supportano quote più elevate per gli indici vettoriali.

La ricerca vettoriale è disponibile in:

Nota

Alcuni servizi di ricerca meno recenti creati prima del 1° gennaio 2019 vengono distribuiti nell'infrastruttura che non supporta i carichi di lavoro vettoriali. Se si tenta di aggiungere un campo vettore a uno schema e si riceve un errore, si tratta di un risultato di servizi obsoleti. In questo caso, è necessario creare un nuovo servizio di ricerca per provare la funzionalità vettoriale.

Ricerca di intelligenza artificiale di Azure è completamente integrato nella piattaforma di intelligenza artificiale di Azure. Nella tabella seguente sono elencati diversi elementi utili nei carichi di lavoro vettoriali.

Prodotto Integrazione
Azure OpenAI Studio Nella chat con il playground dei dati aggiungere dati personalizzati usa Ricerca di intelligenza artificiale di Azure per individuare i dati di base e la ricerca conversazionale. Questo è l'approccio più semplice e veloce per chattare con i dati.
OpenAI di Azure Azure OpenAI fornisce modelli di incorporamento e modelli di chat. Demo ed esempi hanno come destinazione text-embedding-ada-002. È consigliabile usare Azure OpenAI per generare incorporamenti per il testo.
Servizi di intelligenza artificiale per Azure L'API Image Retrieval Vectorize Image (Anteprima) supporta la vettorizzazione del contenuto dell'immagine. È consigliabile usare questa API per generare incorporamenti per le immagini.
Piattaforme dati di Azure: Archiviazione BLOB di Azure, Azure Cosmos DB È possibile usare gli indicizzatori per automatizzare l'inserimento dei dati e quindi usare la vettorizzazione integrata (anteprima) per generare incorporamenti. Ricerca di intelligenza artificiale di Azure può indicizzare automaticamente i dati vettoriali da due origini dati: indicizzatori BLOB di Azure e Azure Cosmos DB per indicizzatori NoSQL. Per altre informazioni, vedere Aggiungere campi vettoriali a un indice di ricerca.

Viene anche comunemente usato in framework open source come LangChain.

Concetti relativi alla ricerca vettoriale

Se non si ha familiarità con i vettori, questa sezione illustra alcuni concetti di base.

La ricerca vettoriale è un metodo di recupero delle informazioni in cui i documenti e le query sono rappresentati come vettori anziché come testo normale. Nella ricerca vettoriale, i modelli di Machine Learning generano le rappresentazioni vettoriali degli input di origine, che possono essere testo, immagini o altro contenuto. Avere una rappresentazione matematica del contenuto fornisce una base comune per gli scenari di ricerca. Se tutto è un vettore, una query può trovare una corrispondenza nello spazio vettoriale, anche se il contenuto originale associato si trova in un supporto o un linguaggio diverso rispetto alla query.

Quando il contenuto ricercabile è rappresentato come vettori, una query può trovare corrispondenze di chiusura in contenuto simile. Il modello di incorporamento usato per la generazione vettoriale conosce le parole e i concetti simili e inserisce i vettori risultanti vicini nello spazio di incorporamento. Ad esempio, i documenti di origine vettorializzati su "nuvole" e "nebbia" sono più propensi a essere visualizzati in una query su "nebbia" perché sono semanticamente simili, anche se non sono una corrispondenza lessicale.

Incorporamenti e vettorizzazione

Gli incorporamenti sono un tipo specifico di rappresentazione vettoriale del contenuto o di una query, creati da modelli di Machine Learning che acquisiscono il significato semantico del testo o delle rappresentazioni di altri contenuti, ad esempio immagini. I modelli di Machine Learning in linguaggio naturale vengono sottoposti a training su grandi quantità di dati per identificare modelli e relazioni tra parole. Durante il training, imparano a rappresentare qualsiasi input come vettore di numeri reali in un passaggio intermedio denominato codificatore. Al termine del training, questi modelli linguistici possono essere modificati in modo che la rappresentazione del vettore intermedio diventi l'output del modello. Gli incorporamenti risultanti sono vettori ad alta dimensione, in cui le parole con significati simili sono più vicine nello spazio vettoriale, come illustrato in Informazioni sugli incorporamenti (Azure OpenAI) .

L'efficacia della ricerca vettoriale nel recupero di informazioni rilevanti dipende dall'efficacia del modello di incorporamento nella distillazione del significato di documenti e query nel vettore risultante. I migliori modelli sono sottoposti a training sui tipi di dati che rappresentano. È possibile valutare modelli esistenti, ad esempio Azure OpenAI text-embedding-ada-002, usare un modello personalizzato sottoposto a training direttamente sullo spazio dei problemi o ottimizzare un modello per utilizzo generico. Ricerca di intelligenza artificiale di Azure non impone vincoli per il modello scelto, quindi scegliere quello migliore per i dati.

Per creare incorporamenti efficaci per la ricerca vettoriale, è importante tenere conto delle limitazioni delle dimensioni di input. È consigliabile seguire le linee guida per la suddivisione in blocchi dei dati prima di generare incorporamenti. Questa procedura consigliata garantisce che gli incorporamenti acquisiscano accuratamente le informazioni pertinenti e consentano una ricerca vettoriale più efficiente.

Qual è lo spazio di incorporamento?

Lo spazio di incorporamento è il corpus per le query vettoriali. All'interno di un indice di ricerca, uno spazio di incorporamento è costituito da tutti i campi vettoriali popolati con incorporamenti dello stesso modello di incorporamento. I modelli di Machine Learning creano lo spazio di incorporamento eseguendo il mapping di singole parole, frasi o documenti (per l'elaborazione del linguaggio naturale), immagini o altre forme di dati in una rappresentazione costituita da un vettore di numeri reali che rappresentano una coordinata in uno spazio ad alta dimensione. In questo spazio di incorporamento, gli elementi simili si trovano vicini e quelli dissimili sono più distanti.

Ad esempio, i documenti che parlano di diverse specie di cani verrebbero raggruppati nello spazio di incorporamento. I documenti sui gatti sarebbero vicini, ma più lontano dal cluster di cani mentre era ancora nel quartiere per gli animali. Concetti diversi, ad esempio il cloud computing, sarebbero molto più lontani. In pratica, questi spazi di incorporamento sono astratti e non hanno significati ben definiti e interpretabili dall'uomo, ma l'idea principale rimane invariata.

Nella ricerca vettoriale, il motore di ricerca analizza i vettori all'interno dello spazio di incorporamento per identificare i vettori più vicini al vettore di query. Questa tecnica viene chiamata ricerca vicina più vicina. I vicini più vicini aiutano a quantificare la somiglianza tra gli elementi. Un livello elevato di somiglianza del vettore indica che i dati originali sono simili. Per facilitare la ricerca vicino più veloce, il motore di ricerca esegue ottimizzazioni o usa strutture di dati e partizionamento dei dati per ridurre lo spazio di ricerca. Ogni algoritmo di ricerca vettoriale risolve i problemi vicini più vicini in modi diversi, in quanto ottimizzano per latenza minima, velocità effettiva massima, richiamo e memoria. Per calcolare la somiglianza, le metriche di somiglianza forniscono il meccanismo per la distanza di calcolo.

Ricerca di intelligenza artificiale di Azure supporta attualmente gli algoritmi seguenti:

  • HNSW (Gerarchica Navigable Small World): HNSW è un algoritmo ANN leader ottimizzato per applicazioni a bassa latenza e richiamo elevato in cui la distribuzione dei dati è sconosciuta o può cambiare frequentemente. Organizza punti dati ad alta dimensione in una struttura gerarchica del grafo che consente una ricerca di somiglianza veloce e scalabile, consentendo al tempo stesso un compromesso tra accuratezza della ricerca e costi di calcolo. Poiché l'algoritmo richiede che tutti i punti dati risiedano in memoria per l'accesso casuale rapido, questo algoritmo utilizza la quota di dimensioni dell'indice vettoriale.

  • K-nearest neighbors (KNN) esaustivi: calcola le distanze tra il vettore di query e tutti i punti dati. È a elevato utilizzo di calcolo, quindi funziona meglio per set di dati più piccoli. Poiché l'algoritmo non richiede l'accesso casuale rapido dei punti dati, questo algoritmo non utilizza la quota delle dimensioni dell'indice vettoriale. Tuttavia, questo algoritmo fornisce il set globale di vicini più vicini.

All'interno di una definizione di indice è possibile specificare uno o più algoritmi e quindi per ogni campo vettore specificare l'algoritmo da usare:

I parametri dell'algoritmo usati per inizializzare l'indice durante la creazione dell'indice non sono modificabili e non possono essere modificati dopo la compilazione dell'indice. Tuttavia, è possibile modificare i parametri che influiscono sulle caratteristiche del tempo di query (efSearch).

Inoltre, i campi che specificano l'algoritmo HNSW supportano anche una ricerca KNN completa usando il parametro "exhaustive": truedella richiesta di query . L'opposto non è tuttavia vero. Se un campo è indicizzato per exhaustiveKnn, non è possibile usare HNSW nella query perché le strutture di dati aggiuntive che consentono una ricerca efficiente non esistono.

Vicini più vicini approssimativi

La ricerca nearest Neighbor (ANN) approssimativa è una classe di algoritmi per trovare corrispondenze nello spazio vettoriale. Questa classe di algoritmi usa diverse strutture di dati o metodi di partizionamento dei dati per ridurre significativamente lo spazio di ricerca per accelerare l'elaborazione delle query.

Gli algoritmi ANN sacrificano una certa precisione, ma offrono un recupero scalabile e più rapido dei vicini più vicini approssimativi, che li rende ideali per bilanciare l'accuratezza rispetto all'efficienza nelle applicazioni moderne di recupero delle informazioni. È possibile modificare i parametri dell'algoritmo per ottimizzare i requisiti di richiamo, latenza, memoria e footprint del disco dell'applicazione di ricerca.

Ricerca di intelligenza artificiale di Azure usa HNSW per l'algoritmo ANN.

Passaggi successivi