Condividi tramite


Database vettoriale

SI APPLICA A: NoSQL MongoDB vCore PostgreSQL

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.

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.

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]

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:

  1. Registrare nell'anteprima dell'indice vettoriale NoSQL di Azure Cosmos DB
  2. Configurare un database e un contenitore con criteri vettoriali del contenitore e indice vettoriale.
  3. Inserire i dati in un database e un contenitore di Azure Cosmos DB for NoSQL
  4. Creare incorporamenti da una proprietà di dati usando Incorporamenti OpenAI di Azure
  5. Collegarsi a Azure Cosmos DB for NoSQL.
  6. Creare un indice vettoriale sulle proprietà di incorporamento
  7. Creare una funzione per eseguire una ricerca di somiglianza vettoriale in base a una richiesta dell'utente
  8. 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.

API per 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

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

Passaggio successivo

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

Altre soluzioni di database vettoriali

Diagramma dei servizi di indicizzazione vettoriale.