Database vettoriale
Suggerimento
Visitare la nuova raccolta di esempi per gli esempi più recenti di modelli di database vettoriali e rag
I database vettoriali vengono usati in numerosi domini e situazioni di IA analitica e generativa, quali, tra gli altri, l'elaborazione del linguaggio naturale, il riconoscimento di video e immagini, il sistema di elementi consigliati e la ricerca.
Nel 2023, in ambito software, si è diffusa la tendenza a integrare miglioramenti di IA, spesso ottenuti incorporando database vettoriali autonomi specializzati in stack tecnologici esistenti. Questo articolo descrive i database vettoriali e presenta un'architettura alternativa eventualmente considerabile: l'uso di un database vettoriale integrato nel database NoSQL o relazionale già in uso, soprattutto quando si lavora con dati multi modali. Questo approccio consente non solo di ridurre i costi, ma ottiene inoltre una maggiore coerenza, scalabilità e prestazioni dei dati.
Suggerimento
Tali caratteristiche sono fondamentali per le applicazioni a elevato utilizzo di dati, motivo per cui OpenAI ha scelto di aggiungere il servizio ChatGPT a Azure Cosmos DB. Inoltre è possibile sfruttare i vantaggi del database vettoriale integrato, nonché dei suoi tempi di risposta in millisecondi a cifra singola, della scalabilità automatica e immediata e della velocità garantita su qualsiasi scala. Vedere gli esempi di implementazione e eseguire una prova gratuita.
Che cos'è un database vettoriale
Un database vettoriale è progettato per archiviare e gestire incorporamenti vettoriali, ossia rappresentazioni matematiche dei dati in uno spazio ad alta dimensionalità. In tale spazio, ogni dimensione corrisponde a una caratteristica dei dati. Per rappresentare dati sofisticati, potrebbero essere usate decine di migliaia di dimensioni. La posizione di un vettore in questo spazio rappresenta le sue caratteristiche. È possibile vettorizzare parole, frasi o interi documenti, immagini, audio e altri tipi di dati. Gli incorporamenti vettoriali vengono usati nelle ricerche di somiglianza e multi modale, nei motori di elementi consigliati, nei modelli di linguaggi di grandi dimensioni (LLM) e così via.
In un database vettoriale, gli incorporamenti sono indicizzati e sottoposti a query tramite algoritmi di ricerca vettoriale, in base alla distanza vettoriale o alla somiglianza. Occorre un solido meccanismo per identificare i dati più rilevanti. Alcuni algoritmi di ricerca vettoriale noti sono Hierarchical Navigable Small World (HNSW), Inverted File (IVF), DiskANN e così via.
Database vettoriale integrato vs database vettoriale puro
Esistono due tipi comuni di implementazioni di database vettoriali: database vettoriale puro e database vettoriale integrato in un database NoSQL o relazionale.
Un database vettoriale puro è progettato per archiviare e gestire in modo efficiente gli incorporamenti vettoriali, insieme a una piccola quantità di metadati; è separato dall'origine dati da cui derivano tali incorporamenti.
Se integrato in un database NoSQL o relazionale ad alte prestazioni, un database vettoriale offre funzionalità aggiuntive: ad esempio può archiviare, indicizzare ed eseguire query sugli incorporamenti insieme ai dati originali corrispondenti. Questo approccio elimina il costo aggiuntivo della replica dei dati in un database vettoriale puro separato. Inoltre, mantenere insieme gli incorporamenti vettoriali e i dati originali facilita le operazioni con dati multimodali e consente una maggiore coerenza, scalabilità e prestazioni dei dati. Un database ad alte prestazioni con flessibilità dello schema e database vettoriale integrato è particolarmente ottimale per gli agenti di intelligenza artificiale.
Casi d'uso del database vettoriale
I database vettoriali sono usati in numerosi domini e situazioni di IA analitica e generativa, tra cui elaborazione del linguaggio naturale, riconoscimento di video e immagini, sistema di elementi consigliati, ricerca e così via. Per fare alcuni esempi, un database vettoriale è utilizzabile per:
- identificare immagini, documenti e canzoni simili in base a contenuto, temi, sentimenti e stili
- identificare prodotti simili in base a caratteristiche, funzionalità e gruppi utenti
- raccomandare contenuti, prodotti o servizi in base alle preferenze dei singoli utenti
- raccomandare contenuti, prodotti o servizi in base alle somiglianze dei gruppi utenti
- identificare le opzioni potenziali più adatte da un ampio pool di scelte per soddisfare i requisiti complessi
- identificare anomalie dei dati o attività fraudolente che differiscono dai criteri modelli predominanti o normali
- implementare PMEM per gli agenti di IA
Suggerimento
Oltre a questi casi d'uso tipici, il nostro database vettoriale integrato è anche una soluzione ideale per la memorizzazione nella cache LLM a livello di produzione, ottenibile grazie a bassa latenza, scalabilità significativa e disponibilità elevata.
È particolarmente diffuso usare i database vettoriali per abilitare la generazione aumentata del recupero (RAG) che sfrutta gli LLM e i dati personalizzati o le informazioni specifiche di dominio. Tale approccio consente di:
- Generare risposte contestualmente pertinenti e accurate ai prompt degli utenti dai modelli di IA
- Superare i limiti di token dei LLM
- Ridurre i costi derivanti dalla frequente ottimizzazione dei dati aggiornati
Questo processo comporta l'estrazione delle informazioni pertinenti da un'origine dati personalizzata e la loro integrazione nella richiesta di modello tramite prompt engineering. Prima di inviare una richiesta al LLM, l'input/query/richiesta dell’utente sono trasformati in un incorporamento e vengono usate tecniche di ricerca vettoriale per individuare gli incorporamenti più simili all'interno del database. Questa tecnica consente l'identificazione dei record di dati più rilevanti nel database. I record recuperati vengono quindi forniti come input alla richiesta LLM usando il prompt engineering.
Concetti correlati al database vettoriale
Incorporamenti
Un incorporamento è un formato speciale di rappresentazione dei dati facilmente utilizzabile da modelli di Machine Learning e algoritmi. L'incorporamento è una rappresentazione densa di informazioni del significato semantico di un testo. Ogni incorporamento è un vettore di numeri a virgola mobile, in modo che la distanza tra due incorporamenti nello spazio vettoriale sia correlata alla somiglianza semantica tra due input nel formato originale. Ad esempio, se due testi sono simili, anche le rappresentazioni vettoriali dovrebbero essere simili. Un'estensione di database vettoriale che consente di archiviare gli incorporamenti con dati originali garantisce coerenza, scalabilità e prestazioni dei dati. [Tornare alla schermata precedente]
Ricerca vettoriale
La ricerca vettoriale è un metodo che consente di trovare elementi simili in base alle caratteristiche dei dati anziché in base alle corrispondenze esatte in un campo di proprietà. Questa tecnica è utile nelle applicazioni come la ricerca di testi simili o di immagini correlate, la creazione di elementi consigliati o anche il rilevamento di anomalie. Funziona acquisendo le rappresentazioni vettoriali (elenchi di numeri) dei dati creati mediante modello di Machine Learning, usando un'API di incorporamento, ad esempio Incorporamenti di Azure OpenAI o Hugging Face in Azure. Questa tecnica misura quindi la distanza tra i vettori di dati e i vettori di query. I vettori di dati più vicini al vettore di query sono quelli che risultano più simili dal punto di vista semantico. L'uso di una funzionalità di ricerca vettoriale nativa rappresenta un modo efficiente per archiviare, indicizzare e cercare dati vettoriali ad alta dimensionalità, in modo diretto e insieme ad altri dati dell'applicazione. Tale approccio elimina la necessità di migrare i dati a database vettoriali alternativi più costosi e offre una perfetta integrazione delle applicazioni basate su IA. [Tornare alla schermata precedente]
Richieste e richiesta di progettazione
Una richiesta fa riferimento a un testo o a informazioni specifiche che possono fungere da istruzione a un LLM o come dati contestuali su cui può basarsi LLM. Una richiesta può assumere varie forme, ad esempio una domanda, un'istruzione o anche un frammento di codice. Le richieste possono essere usate come:
- Istruzioni: forniscono direttive all'LLM
- Contenuto primario: fornisce informazioni all'LLM per l'elaborazione
- Esempi: consentono di definire la condizione del modello per un'attività o un processo specifico
- Segnali: indirizzano l'output dell'LLM nella direzione giusta
- Supporto del contenuto: rappresenta informazioni supplementari che l'LLM può usare per generare l'output
Il processo di creazione di richieste valide per uno scenario viene chiamato progettazione prompt. Per altre informazioni sulle richieste e sulle procedure consigliate per la progettazione delle richieste, vedere tecniche di prompt engineering in Servizio OpenAI di Azure. [Tornare alla schermata precedente]
OAuth
I token sono piccoli blocchi di testo generati suddividendo il testo di input in segmenti più piccoli. Questi segmenti possono essere parole o gruppi di caratteri, che variano in lunghezza da un singolo carattere a un'intera parola. Ad esempio, la parola “hamburger” sarebbe divisa in token quali ham, bur e ger, mentre una parola breve e comune come “pera” sarebbe considerata come singolo token. LLM come ChatGPT, GPT-3.5 o GPT-4 interrompono le parole in token per l'elaborazione. [Tornare alla schermata precedente]
Generazione aumentata del recupero
La generazione aumentata del recupero (RAG) è un'architettura che aumenta le funzionalità di LLM quali ChatGPT, GPT-3.5 o GPT-4, aggiungendo un sistema di recupero delle informazioni come la ricerca vettoriale che fornisce dati di fondazione, ad esempio quelli archiviati in un database vettoriale. Questo approccio consente all'LLM di generare risposte contestualmente pertinenti e accurate, in base ai dati personalizzati originati da documenti, immagini, audio, video vettorizzati e così via.
Ad esempio, un modello RAG semplice che usa Azure Cosmos DB for NoSQL potrebbe essere:
- Registrare nell'anteprima dell'indice vettoriale NoSQL di Azure Cosmos DB
- Configurare un database e un contenitore con criteri vettoriali del contenitore e indice vettoriale.
- Inserire i dati in un database e un contenitore di Azure Cosmos DB for NoSQL
- Creare incorporamenti da una proprietà di dati usando Incorporamenti OpenAI di Azure
- Collegarsi a Azure Cosmos DB for NoSQL.
- Creare un indice vettoriale sulle proprietà di incorporamento
- Creare una funzione per eseguire una ricerca di somiglianza vettoriale in base a una richiesta dell'utente
- Eseguire la risposta alle domande sui dati usando un modello di completamento OpenAI di Azure
Il modello RAG, con la progettazione prompt, serve allo scopo di migliorare la qualità della risposta offrendo informazioni più contestuali al modello. RAG consente al modello di applicare una knowledge base più ampia incorporando le origini esterne pertinenti nel processo di generazione, ottenendo risposte più complete e informate. Per altre informazioni su LLM “di fondazione”, vedere LLM di fondazione. [Tornare alla schermata precedente]
Vi sono diversi modi per implementare RAG sui dati mediante le funzionalità integrate del database vettoriale:
Come implementare le funzionalità di database vettoriali integrate
È possibile implementare funzionalità di database vettoriali integrate per le seguenti API di Azure Cosmos DB:
API NoSQL
Azure Cosmos DB for NoSQL è il primo database vettoriale NoSQL serverless. Archiviare i vettori e i dati insieme in Azure Cosmos DB for NoSQL con funzionalità di database vettoriali integrate in cui è possibile creare un indice vettoriale basato su DiskANN, una suite di algoritmi di indicizzazione vettoriale con prestazioni elevate sviluppata da Microsoft Research.
DiskANN abilita l’esecuzione di query a bassa latenza e altamente accurate su qualsiasi scala, sfruttando tutti i vantaggi di Azure Cosmos DB for NoSQL, ad esempio il contratto di servizio del 99,999% (con disponibilità elevata abilitata), la replica geografica, la transizione seamless da serverless a velocità effettiva con provisioning (UR), tutto in un unico archivio dati.
Collegamenti ed esempi
- Qual è il database dietro ChatGPT? - Microsoft Mechanics
- Indicizzazione vettoriale in Azure Cosmos DB for NoSQL
- Query NoSQL della funzione di sistema VectorDistance
- Come configurare le funzionalità di database vettoriali in Azure Cosmos DB NoSQL
- Python - Esercitazione sui notebook
- C# - Creare un proprio acceleratore di soluzione completo di Copilot con il servizio Azure Kubernetes e il kernel semantico
- C# - Creare una propria app di esempio di Copilot e un lab pratico
- Python - Chatbot per i film
Azure Cosmos DB for MongoDB
Usare il database vettoriale integrato in modo nativo in Azure Cosmos DB for MongoDB (architettura vCore), che offre un modo efficiente per archiviare, indicizzare e cercare dati vettoriali ad alta dimensionalità, in modo diretto e insieme ad altri dati dell'applicazione. Tale approccio elimina la necessità di migrare i dati a database vettoriali alternativi più costosi e offre una perfetta integrazione delle applicazioni basate su IA.
Esempi di codice
- Creare un proprio Copilot per Azure Cosmos DB for MongoDB in C# con il kernel semantico
- Esercitazione su .NET: chatbot per la ricetta
- Criterio RAG C# - Integrare i Servizi OpenAI con Cosmos
- Criterio RAG Python - Chatbot del prodotto Azure
- Notebook di Python - Integrazione del database vettoriale tramite l’esercitazione su LangChain
- Notebook di Python - Integrazione della memorizzazione nella cache LLM tramite l’esercitazione su LangChain
- Python - Integrazione di LlamaIndex
- Python - Integrazione della memoria semantica del kernel
- Notebook di Python - Chatbot per i film
API per PostgreSQL
Usare il database vettoriale integrato in modo nativo in Azure Cosmos DB for PostgreSQL (architettura vCore), che offre un modo efficiente per archiviare, indicizzare e cercare dati vettoriali ad alta dimensionalità, in modo diretto e insieme ad altri dati dell'applicazione. Tale approccio elimina la necessità di migrare i dati a database vettoriali alternativi più costosi e offre una perfetta integrazione delle applicazioni basate su IA.
Esempio di codice
Soluzioni di database vettoriali
Contenuto correlato
- Versione di prova gratuita di 30 giorni senza sottoscrizione di Azure
- Versione di prova gratuita di 90 giorni e fino a $6.000 in crediti di velocità effettiva con Azure AI Advantage