Database vettoriale

SI APPLICA A: NoSQL MongoDB vCore PostgreSQL

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, tra gli altri.

Nel 2023, una tendenza notevole nel software è stata l'integrazione dei miglioramenti di intelligenza artificiale, spesso raggiunti incorporando database vettoriali autonomi specializzati in stack tecnologici esistenti. Questo articolo illustra quali database vettoriali sono e presenta un'architettura alternativa da considerare: l'uso di un database vettoriale integrato nel database NoSQL o relazionale già usato, soprattutto quando si usano dati multi modali. Questo approccio non solo consente di ridurre i costi, ma anche di ottenere una maggiore coerenza, scalabilità e prestazioni dei dati.

Suggerimento

La coerenza, la scalabilità e le prestazioni dei dati sono fondamentali per le applicazioni a elevato utilizzo di dati, motivo per cui OpenAI ha scelto di creare il servizio ChatGPT su Azure Cosmos DB. È anche possibile sfruttare i vantaggi del database vettoriale integrato, nonché dei 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 è un database progettato per archiviare e gestire incorporamenti vettoriali, che sono rappresentazioni matematiche dei dati in uno spazio ad alta dimensione. In questo spazio, ogni dimensione corrisponde a una caratteristica dei dati e decine di migliaia di dimensioni possono essere usate per rappresentare dati sofisticati. La posizione di un vettore in questo spazio rappresenta le sue caratteristiche. Parole, frasi o interi documenti, immagini, audio e altri tipi di dati possono essere vettorizzati. Questi incorporamenti vettoriali vengono usati nella ricerca di somiglianza, ricerca multi modale, motori di raccomandazioni, modelli di linguaggi di grandi dimensioni e così via.

In un database vettoriale, gli incorporamenti vengono indicizzati ed sottoposti a query tramite algoritmi di ricerca vettoriale in base alla distanza vettoriale o alla somiglianza. È necessario un meccanismo affidabile per identificare i dati più rilevanti. Alcuni algoritmi di ricerca vettoriale noti includono Gerarchica Navigable Small World (HNSW), File invertito (IVF), DiskANN e così via.

Database vettoriale integrato e 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. Il database vettoriale integrato in un database NoSQL o relazionale 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 meglio gli incorporamenti vettoriali e i dati originali facilita le operazioni di dati multi modale e consente una maggiore coerenza, scalabilità e prestazioni dei dati.

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, la ricerca e così via. Ad esempio, è possibile usare un database vettoriale per:

  • 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 caratteristiche e ai gruppi di utenti
  • consigliare contenuti, prodotti o servizi in base alle preferenze dei singoli 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 anomalie dei dati o attività fraudolente diverse da modelli predominanti o normali
  • implementare la memoria persistente per gli agenti di intelligenza artificiale

Suggerimento

Oltre a questi casi d'uso tipici per i database vettoriali, il database vettoriale integrato è anche una soluzione ideale per la memorizzazione nella cache LLM a livello di produzione grazie alla bassa latenza, alla scalabilità elevata e alla disponibilità elevata.

È particolarmente diffuso usare i database vettoriali per abilitare la generazione di recupero aumentata (RAG) che sfrutta le VM e i dati personalizzati o le informazioni specifiche del dominio. Questo approccio consente di:

  • Generare risposte contestualmente pertinenti e accurate ai prompt degli utenti dai modelli di intelligenza artificiale
  • Superare i limiti dei token LLMs
  • Ridurre i costi derivanti dall'ottimizzazione frequente dei dati aggiornati

Questo processo comporta l'estrazione di informazioni pertinenti da un'origine dati personalizzata e l'integrazione nella richiesta di modello tramite la progettazione dei prompt. Prima di inviare una richiesta all'LLM, anche l'input utente/query/richiesta viene trasformato 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. Questi record recuperati vengono quindi forniti come input alla richiesta LLM usando la progettazione dei prompt.

Incorporamenti

Un incorporamento è un formato speciale di rappresentazione dei dati che i modelli e gli algoritmi di Machine Learning possono usare facilmente. 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 i dati originali garantisce coerenza, scalabilità e prestazioni dei dati. [Torna indietro]

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 usando 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 offre un modo efficiente per archiviare, indicizzare e cercare dati vettoriali altamente dimensionali direttamente insieme ad altri dati dell'applicazione. Questo approccio elimina la necessità di eseguire la migrazione dei dati a database vettoriali alternativi più costosi e offre una perfetta integrazione delle applicazioni basate sull'intelligenza artificiale. [Torna indietro]

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 dei prompt, vedere Tecniche di progettazione dei prompt dei servizi OpenAI di Azure. [Torna indietro]

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 come ham, bur e ger mentre una parola breve e comune come pera sarebbe considerato un singolo token. Llms come ChatGPT, GPT-3.5 o GPT-4 suddividere le parole in token per l'elaborazione. [Torna indietro]

Generazione aumentata del recupero

La generazione con aumento del recupero (RAG) è un'architettura che aumenta le funzionalità delle VM come ChatGPT, GPT-3.5 o GPT-4 aggiungendo un sistema di recupero delle informazioni come la ricerca vettoriale che fornisce dati di base, 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 vettorializzati, immagini, audio, video e così via.

Un semplice modello RAG che usa Azure Cosmos DB per NoSQL potrebbe essere:

  1. Inserire dati in un database e una raccolta di Azure Cosmos DB per NoSQL
  2. Creare incorporamenti da una proprietà di dati usando Incorporamenti OpenAI di Azure
  3. Collegare Azure Cosmos DB for NoSQL a Ricerca cognitiva di Azure (per indicizzazione/ricerca vettoriale)
  4. Creare un indice vettoriale sulle proprietà embeddings
  5. Creare una funzione per eseguire una ricerca di somiglianza vettoriale in base a una richiesta dell'utente
  6. 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 sui llms "grounding", vedere LLMs di base. [Torna indietro]

Ecco diversi modi per implementare RAG sui dati usando le funzionalità integrate del database vettoriale:

Come implementare funzionalità di database vettoriali integrate

È possibile implementare funzionalità di database vettoriali integrate per le API di Azure Cosmos DB seguenti:

API per MongoDB

Usare il database vettoriale integrato in modo nativo in Azure Cosmos DB per MongoDB (architettura vCore), che offre un modo efficiente per archiviare, indicizzare e cercare dati vettoriali ad alta dimensione direttamente insieme ad altri dati dell'applicazione. Questo approccio elimina la necessità di eseguire la migrazione dei dati a database vettoriali alternativi più costosi e offre una perfetta integrazione delle applicazioni basate sull'intelligenza artificiale.

Esempi di codice

API per PostgreSQL

Usare il database vettoriale integrato in modo nativo in Azure Cosmos DB per PostgreSQL, che offre un modo efficiente per archiviare, indicizzare e cercare dati vettoriali ad alta dimensione direttamente insieme ad altri dati dell'applicazione. Questo approccio elimina la necessità di eseguire la migrazione dei dati a database vettoriali alternativi più costosi e offre una perfetta integrazione delle applicazioni basate sull'intelligenza artificiale.

Esempi di codice

API NoSQL

Nota

Per l'API NoSQL, l'integrazione nativa di un algoritmo di indicizzazione vettoriale all'avanguardia verrà annunciata durante la compilazione nel mese di maggio 2024. Si prega di rimanere sintonizzati.

Il database vettoriale integrato in modo nativo nell'API NoSQL è in fase di sviluppo. Nel frattempo, è possibile implementare modelli RAG con Azure Cosmos DB per NoSQL e Ricerca di intelligenza artificiale di Azure. Questo approccio consente una potente integrazione dei dati che risiedono nell'API NoSQL nelle applicazioni orientate all'intelligenza artificiale.

Esempi di codice

Passaggio successivo

Versione di valutazione gratuita di 30 giorni senza sottoscrizione di Azure

Versione di valutazione 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.