Che cosa sono gli incorporamenti vettoriali e la ricerca vettoriale in cache di Azure per Redis?
La ricerca di somiglianza vettoriale (VSS) è diventata una tecnologia diffusa per le applicazioni intelligenti basate sull'intelligenza artificiale. cache di Azure per Redis può essere usato come database vettoriale combinando i modelli come Azure OpenAI for Retrieval-Augmented Generative AI and analysis scenarios (Azure OpenAI for Retrieval-Augmented Generative AI and analysis scenarios). Questo articolo è un'introduzione generale al concetto di incorporamenti vettoriali, ricerca di somiglianza vettoriale e come Redis può essere usato come database vettoriale che alimenta le applicazioni intelligenti.
Per esercitazioni e applicazioni di esempio su come usare cache di Azure per Redis e Azure OpenAI per eseguire ricerche di somiglianza vettoriale, vedere quanto segue:
- Esercitazione: Eseguire una ricerca di somiglianza vettoriale in incorporamenti OpenAI di Azure usando cache di Azure per Redis con LangChain
- Esempio: Uso di Redis come database vettoriale in un'applicazione chatbot con kernel semantico .NET
- Esempio: Uso di Redis come cache semantica in una raccolta di immagini con tecnologia Dall-E con Redis OM per .NET
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 di Azure per Redis.
Questa tabella contiene le informazioni per la disponibilità della ricerca vettoriale in livelli diversi.
Livello | Basic/Standard | Premium | Enterprise | Enterprise Flash | Redis gestito di Azure (anteprima) |
---|---|---|---|---|---|
Disponibile | No | No | Sì | Sì (anteprima) | Sì |
Che cosa sono gli incorporamenti vettoriali?
Concetto
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ò significa convertire il testo o le immagini in una sequenza di numeri che rappresenta i dati e quindi confrontare le diverse sequenze di numeri. In questo modo, i dati complessi possono essere modificati e analizzati matematicamente, semplificando l'esecuzione di attività quali confronto di somiglianza, raccomandazione e classificazione.
Ogni modello di Machine Learning classifica i dati e produce il vettore in modo diverso. Inoltre, in genere non è possibile 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
i vettori di incorporamento sono 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 somiglianza del coseno, che misura il coseno dell'angolo tra due vettori in uno spazio multidimensionale. Più vicino ai 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 di forza bruta
- HNSW : ricerca approssimativa e affidabile approssimativa più vicina con grafici gerarchici Navigable Small World
Esistono diversi metodi di ricerca comuni, tra cui:
- K-Nearest Neighbors (KNN): metodo esaustivo che fornisce la massima precisione ma con costi di calcolo più elevati.
- Approssimati vicini (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 del vettore 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 può essere limitata solo a vettori con un tag specifico nel database o vettori con dati di georilevazione in una determinata area.
Scenari di chiave di ricerca vettoriale
La ricerca di somiglianza vettoriale può essere usata in più applicazioni. Alcuni casi d'uso comuni includono:
- Q&A semantica. 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 copertura sanitaria. Centinaia di pagine di documentazione di copertura sanitaria densa possono essere suddivise in blocchi, convertiti in vettori di incorporamento e ricercati in base alla somiglianza dei vettori. I documenti risultanti possono quindi essere riepilogati per i dipendenti che usano un altro modello LLM (Large Language Model). Esempio di domande e risposte semantiche
- Recupero documenti. Usare la comprensione semantica più approfondita del testo fornito da LLMs per offrire un'esperienza di ricerca documenti più completa in cui la ricerca tradizionale basata su parole chiave si riduce. Esempio di recupero documenti
- Raccomandazione 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 raccomandazione del prodotto
- Ricerca visiva. Cercare prodotti simili a un'immagine scattata da un utente o da un'immagine 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 somiglianza del vettore. 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 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 cache di Azure per Redis per l'archiviazione e la ricerca di vettori?
cache di Azure per Redis può essere usato in modo efficace come database vettoriale per archiviare vettori di incorporamento e per eseguire ricerche di somiglianza vettoriale. Il supporto per l'archiviazione vettoriale e la ricerca sono disponibili 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 di cache di Azure per Redis. tra cui:
- Metriche di distanza multiple, tra cui
Euclidean
,Cosine
eInternal Product
. - Supporto sia per KNN (usando
FLAT
) che per i metodi di indicizzazione ANN (tramiteHNSW
). - Archiviazione vettoriale in strutture di dati hash o JSON
- Principali query K
- Query dell'intervallo di vettori (ovvero 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à così comunemente usata per la memorizzazione nella cache o le applicazioni dell'archivio di sessioni. In questi scenari, può eseguire il pull del doppio dovere servendo 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 di vettori?
In Azure sono disponibili più soluzioni per l'archiviazione vettoriale e la ricerca. Altre soluzioni includono:
- Azure AI Search
- Azure Cosmos DB con l'API vCore mongoDB
- Database di Azure per PostgreSQL - Server flessibile con
pgvector
Contenuto correlato
Il modo migliore per iniziare a usare gli incorporamenti e la ricerca vettoriale consiste nel provare da soli!