Condividi tramite


Che cosa sono gli incorporamenti vettoriali e la ricerca vettoriale nella cache di Azure per Redis?

La ricerca di similarità vettoriale (VSS) è diventata una tecnologia diffusa per le applicazioni intelligenti basate sull'IA. La cache di Azure per Redis può essere usata come database vettoriale in combinazione con modelli come Azure OpenAI per l'intelligenza artificiale generativa aumentata dal recupero dati e altri scenari di analisi. Questo articolo è un'introduzione di alto livello sul concetto di incorporamenti vettoriali, ricerca di similarità vettoriale e come Redis può essere usato come database vettoriale che alimenta applicazioni intelligenti.

Per esercitazioni e applicazioni di esempio su come usare il livello Enterprise o Azure Managed Redis con Azure OpenAI, vedere quanto segue:

Ambito della disponibilità

Le funzionalità di ricerca vettoriale in Redis richiedono lo stack Redis, in particolare il modulo RediSearch. Questa funzionalità è disponibile solo nei livelli Enterprise di Cache Redis di Azure e Redis gestiti di Azure.

Questa tabella contiene le informazioni per la disponibilità della ricerca vettoriale in livelli diversi.

Livello Basic/Standard Di alta qualità Impresa Enterprise Flash Redis Gestito di Azure
Disponibile NO NO Sì (anteprima)

Che cosa sono gli incorporamenti vettoriali?

Gli incorporamenti vettoriali sono un concetto fondamentale nell'apprendimento automatico e nell'elaborazione del linguaggio naturale che consentono la rappresentazione dei dati, ad esempio parole, documenti o immagini, come vettori numerici in uno spazio vettoriale ad alta dimensione. L'idea principale alla base degli incorporamenti vettoriali consiste nell'acquisire le relazioni sottostanti e la semantica dei dati eseguendo il mapping a punti in questo spazio vettoriale. Ciò implica la conversione di testo o immagini in una sequenza di numeri che rappresenta i dati e quindi nel confronto delle diverse sequenze di numeri. In questo modo, i dati complessi possono essere modificati e analizzati matematicamente, semplificando l'esecuzione di attività come il confronto della similarità, consigli e classificazione.

Ogni modello di Machine Learning classifica i dati e produce il vettore in modo diverso. Inoltre, non è possibile in generale determinare esattamente il significato semantico rappresentato da ogni dimensione vettoriale. Tuttavia, poiché il modello è coerente tra ogni blocco di dati di input, parole simili, documenti o immagini hanno vettori simili. Ad esempio, le parole basketball e baseball hanno vettori di incorporamento molto più vicini tra loro rispetto a una parola come rainforest.

Confronto tra vettori

I vettori possono essere confrontati usando varie metriche. Il modo più diffuso per confrontare i vettori consiste nell'usare la similarità del coseno, che misura il coseno dell'angolo tra due vettori in uno spazio multidimensionale. Più vicini sono i vettori, più piccolo è l'angolo. Altre metriche di distanza comuni includono la distanza euclidea e il prodotto interno.

Generazione di incorporamenti

Molti modelli di Machine Learning supportano le API di incorporamento. Per un esempio di come creare incorporamenti vettoriali usando il Servizio Azure OpenAI, vedere Informazioni su come generare incorporamenti con Azure OpenAI.

Che cos'è un database vettoriale?

Un database vettoriale è un database in grado di archiviare, gestire, recuperare e confrontare vettori. I database vettoriali devono essere in grado di archiviare in modo efficiente un vettore altamente dimensionale e recuperarlo con una latenza minima e una velocità effettiva elevata. Gli archivi dati non relazionali vengono usati più comunemente come database vettoriali, anche se è possibile usare database relazionali come PostgreSQL, ad esempio, con l'estensione pgvector.

Indice e metodo di ricerca

I database vettoriali devono indicizzare i dati per la ricerca e il recupero rapidi. Inoltre, un database vettoriale deve supportare query di ricerca predefinite per esperienze di programmazione semplificate.

Esistono diversi metodi di indicizzazione, ad esempio:

  • FLAT: indice brute-force
  • HNSW: ricerca approssimativa e affidabile del vicino più prossimo usando grafici Hierarchical Navigable Small World.

Esistono diversi metodi di ricerca comuni, tra cui:

  • K-Nearest Neighbors (KNN): un metodo esaustivo che fornisce la massima precisione ma con costi di calcolo più elevati.
  • Vicini più prossimi approssimativi( ANN) - una precisione più efficiente scambiando precisione per una maggiore velocità e un sovraccarico di elaborazione inferiore.

Funzionalità di ricerca

Infine, i database vettoriali eseguono ricerche vettoriali usando il metodo di confronto vettoriale scelto per restituire i vettori più simili. Alcuni database vettoriali possono anche eseguire ricerche ibride restringendo i risultati in base alle caratteristiche o ai metadati archiviati nel database prima di eseguire la ricerca vettoriale. Questo è un modo per rendere la ricerca vettoriale più efficace e personalizzabile. Ad esempio, una ricerca vettoriale potrebbe essere limitata solo a vettori con un tag specifico nel database o vettori con dati di georilevazione in una determinata area.

Scenari di chiavi di ricerca vettoriale

La ricerca di similarità vettoriale può essere usata in più applicazioni. Alcuni casi d'uso comuni includono:

  • Domande e Risposte semantiche. Creare un chatbot in grado di rispondere alle domande sui propri dati. Ad esempio, un chatbot in grado di rispondere alle domande dei dipendenti sulla loro copertura sanitaria. Centinaia di pagine di documentazione di copertura sanitaria densa possono essere suddivise in blocchi, convertiti in vettori di incorporamento e cercati in base alla somiglianza dei vettori. I documenti risultanti possono quindi essere riepilogati per i dipendenti che usano un altro modello linguistico di grandi dimensioni (LLM). Esempio di domande e risposte semantiche
  • Recupero di documenti. Usare la comprensione semantica più approfondita del testo fornito da LLM per offrire un'esperienza di ricerca documenti più completa in cui la ricerca tradizionale basata su parole chiave si riduce. Esempio di recupero documenti
  • Consiglio del prodotto. Trovare prodotti o servizi simili da consigliare in base alle attività degli utenti precedenti, ad esempio la cronologia di ricerca o gli acquisti precedenti. Esempio di consiglio del prodotto
  • Ricerca visiva. Cercare prodotti simili a una foto scattata da un utente o da una foto di un altro prodotto. Esempio di ricerca visiva
  • Memorizzazione nella cache semantica. Ridurre i costi e la latenza delle macchine virtuali memorizzando nella cache i completamenti LLM. Le query LLM vengono confrontate usando la similarità vettoriale. Se una nuova query è sufficientemente simile a una query memorizzata nella cache in precedenza, viene restituita la query memorizzata nella cache. Esempio di memorizzazione nella cache semantica con LangChain
  • Memoria della conversazione LLM. Rendere persistente la cronologia delle conversazioni con un LLM come incorporamenti in un database vettoriale. L'applicazione può usare la ricerca vettoriale per eseguire il pull della cronologia pertinente o dei "ricordi" nella risposta dall'LLM. Esempio di memoria conversazione LLM

Perché scegliere la cache di Azure per Redis per l'archiviazione e la ricerca vettoriali?

La cache di Azure per Redis può essere usata in modo efficace come database vettoriale per archiviare vettori di incorporamento e per eseguire ricerche di similarità vettoriale. Il supporto per l'archiviazione e la ricerca vettoriali è disponibile in molti framework di Machine Learning chiave, ad esempio:

Questi framework offrono integrazioni avanzate con Redis. Ad esempio, l'integrazione di Redis LangChain genera automaticamente uno schema di indice per i metadati passati quando si usa Redis come archivio vettoriale. In questo modo è molto più semplice filtrare i risultati in base ai metadati.

Redis offre un'ampia gamma di funzionalità di ricerca tramite il modulo RediSearch, disponibile nel livello Enterprise della cache di Azure per Redis. Questi includono:

  • Metriche di distanza multiple, tra cui Euclidean, Cosine e Internal Product.
  • Supporto i metodi di indicizzazione sia KNN (usando FLAT) che ANN (tramite HNSW).
  • Archiviazione vettoriale in strutture di dati hash o JSON
  • Principali query K
  • Query dell'intervallo vettoriale, vale a dire trovare tutti gli elementi all'interno di una distanza vettoriale specifica
  • Ricerca ibrida con potenti funzionalità di query, ad esempio:
    • Filtro geospaziale
    • Filtri numerici e di testo
    • Corrispondenza con prefisso e fuzzy
    • Corrispondenza fonetica
    • Query booleane

Inoltre, Redis è spesso una scelta economica perché è già usato comunemente per la memorizzazione nella cache o le applicazioni dell'archivio di sessioni. In questi scenari, può eseguire il pull double-duty con un ruolo tipico di memorizzazione nella cache, gestendo simultaneamente le applicazioni di ricerca vettoriale.

Quali sono le altre opzioni per l'archiviazione e la ricerca vettoriali?

In Azure sono disponibili più soluzioni per l'archiviazione e la ricerca vettoriali. Altre soluzioni includono:

Il modo migliore per iniziare a usare gli incorporamenti e la ricerca vettoriale consiste nel provare da soli!