Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Suggerimento
Per gli esempi più recenti di modelli di database vettoriali e RAG, visitare la raccolta di esempi di Azure Cosmos DB.
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 provarlo gratuitamente.
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 di vettori noti includono Gerarchica Navigable Small World (HNSW), Inverted File (IVF) e DiskANN.
Differenze tra un database vettoriale integrato e un 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 gli incorporamenti.
Un database vettoriale integrato in un database NoSQL o relazionale ad alte prestazioni 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 vengono usati in numerosi domini e situazioni nell'intelligenza artificiale analitica e generativa, tra cui l'elaborazione del linguaggio naturale, il riconoscimento di video e immagini, il sistema di raccomandazione e la ricerca. È possibile, ad esempio, usare un database vettoriale per eseguire le azioni seguenti:
- Identificare immagini, documenti e canzoni simili in base al contenuto, ai temi, ai sentimenti e agli stili
- Identificare prodotti simili in base alle caratteristiche, alle funzionalità e ai gruppi di utenti
- Consigliare contenuti, prodotti o servizi in base alle preferenze degli utenti
- Consigliare contenuti, prodotti o servizi in base alle analogie dei gruppi di utenti
- Identificare le opzioni potenziali più adatte da un ampio pool di scelte per soddisfare requisiti complessi
- Identificare le anomalie dei dati o le attività fraudolente che sono diverse da modelli predominanti o normali
- Implementare la memoria persistente per gli agenti di intelligenza artificiale
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.
I database vettoriali sono particolarmente diffusi per l'abilitazione della generazione aumentata dal recupero (RAG) che sfrutta i LLM e i dati personalizzati o le informazioni specifiche del 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.
Annotazioni
Interessato alle funzionalità di ricerca vettoriale con velocità effettiva ultra elevata? Azure Cosmos DB sta sviluppando funzionalità avanzate di ricerca vettoriale progettate per set di dati vettoriali di grandi dimensioni associati a inserimenti e ricerche con velocità effettiva ultra elevata. Può supportare milioni di query al secondo (QPS) con una latenza prevedibile e bassa, oltre a un'efficienza dei costi impareggiabile. Iscriversi per altre informazioni sulle opportunità di accesso anticipato e ricevere notifiche quando queste funzionalità diventano disponibili.
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 una parte di 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.
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 prendendo le rappresentazioni vettoriali (elenchi di numeri) dei dati creati con un 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.
Richieste e progettazione di richieste
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 utilizzate come:
- Istruzioni che forniscono direttive all'LLM
- Contenuto primario che fornisce informazioni all'LLM per l'elaborazione
- Esempi che consentono di definire la condizione del modello a un'attività o a un processo specifico
- Segnali per indirizzare l'output dell'LLM nella direzione giusta
- Contenuto di supporto che fornisce informazioni supplementari che il LLM può utilizzare per generare l'output
Il processo di creazione di richieste valide per uno scenario viene chiamato progettazione di richieste. Per altre informazioni sulle richieste e sulle procedure consigliate per la progettazione dei prompt, vedere Progettazione dei messaggi di sistema.
Tokens
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.
Un modello di rag semplice che usa Azure Cosmos DB per NoSQL potrebbe:
- Abilitare l'indice vettoriale NoSQL di Azure Cosmos DB
- Configurare un database e un contenitore con un criterio vettoriale del contenitore e un 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 ulteriori informazioni, vedere Grounding LLMs.
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 per NoSQL con funzionalità di database vettoriali integrate in cui è possibile creare un indice vettoriale basato su DiskANN, una suite di algoritmi di indicizzazione vettoriali ad alte prestazioni sviluppati da Microsoft Research.
DiskANN consente di eseguire query a bassa latenza e altamente accurate su qualsiasi scala, sfruttando tutti i vantaggi di Azure Cosmos DB per NoSQL, come ad esempio un Accordo sul Livello di Servizio del 99,999% (con HA abilitato), la replica geografica, la transizione senza problemi da serverless a throughput con provisioning (RU), 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
- Ricerca vettoriale in Azure Cosmos DB for 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
Esempi di codice
- Notebook di Python - Integrazione del database vettoriale tramite l’esercitazione su LangChain
- Notebook di Python: Integrazione della memorizzazione nella cache dei modelli linguistici di grandi dimensioni 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.