Incorporamenti e database vettoriali

Foto di Luna Wang
5 lettura minima
Riassumere questo con l'AI

Cosa sono gli embedding

Gli embedding sono rappresentazioni numeriche di oggetti del mondo reale, come testo, immagini o audio. Sono generati da modelli di apprendimento automatico come vettori, una serie di numeri, in cui la distanza tra i vettori può essere vista come il grado di somiglianza tra gli oggetti. Sebbene un modello di embedding possa avere un proprio significato per ciascuna delle dimensioni, non vi è alcuna garanzia tra i modelli di embedding del significato per ciascuna delle dimensioni utilizzate dai modelli di embedding.

Ad esempio, le parole "gatto", "cane" e "mela" potrebbero essere incorporate nei seguenti vettori:

gatto -> (1, -1, 2)
cane -> (1,5, -1,5, 1,8)
mela -> (-1, 2, 0)

Questi vettori sono stati inventati per semplificare l'esempio. I vettori reali sono molto più grandi, per maggiori dettagli consultare la sezione Dimensione.

Visualizzando questi vettori come punti in uno spazio 3D, possiamo vedere che"gatto"e "cane"sono più vicini, mentre"mela"è posizionata più lontano.

Luna_0-1728319344638.png

Figura 1. Vettori come punti in uno spazio 3D

Incorporando parole e contesti nei vettori, consentiamo ai sistemi di valutare quanto due elementi incorporati siano correlati tra loro tramite il confronto dei vettori.

Dimensione degli embedding

La dimensione degli embedding si riferisce alla lunghezza del vettore che rappresenta l'oggetto.

Nell'esempio precedente, abbiamo incorporato ogni parola in un vettore tridimensionale. Tuttavia, un'incorporazione tridimensionale porta inevitabilmente a una massiccia perdita di informazioni. In realtà, le incorporazioni di parole richiedono in genere centinaia o migliaia di dimensioni per catturare le sfumature del linguaggio.

Ad esempio, 

  • Il modello text-embedding-ada-002 di OpenAI genera un vettore a 1536 dimensioni.
  • Il modello text-embedding-004 di Google Gemini genera un vettore a 768 dimensioni.
  • Il modello amazon.titan-embed-text-v2:0 di Amazon Titan genera un vettore predefinito a 1024 dimensioni.
Luna_1-1728319427655.png

Figura 2. Utilizzo di text-embedding-ada-002 per incorporare la frase "Ho un gatto calico".

In breve, un embedding è un vettore che rappresenta un oggetto del mondo reale. La distanza tra questi vettori indica la somiglianza tra gli oggetti.

Limitazione dei modelli di incorporamento

I modelli di incorporamento sono soggetti a una limitazione fondamentale: il limite dei token, dove un token può essere una parola, un segno di punteggiatura o una parte di parola. Questo vincolo definisce la quantità massima di testo che un modello può elaborare in un singolo input. Ad esempio, i modelli Amazon Titan Text Embeddings possono gestire fino a 8.192 token.

Quando il testo inserito supera il limite, il modello in genere lo tronca, scartando le informazioni rimanenti. Ciò può comportare una perdita di contesto e una diminuzione della qualità dell'incorporamento, poiché potrebbero essere omessi dettagli cruciali.

Per affrontare questo problema, esistono diverse strategie che possono aiutare a mitigarne l'impatto: 

  • Sintesi o suddivisione del testo: i testi lunghi possono essere sintetizzati o suddivisi in parti più piccole e gestibili prima dell'incorporamento. 
  • Selezione del modello: i diversi modelli di incorporamento hanno limiti di token variabili. La scelta di un modello con un limite più elevato consente di gestire input più lunghi.

Che cos'è un database vettoriale

I database vettoriali sono ottimizzati per l'archiviazione di embedding, consentendo un recupero rapido e una ricerca per similarità. Calcolando la similarità tra il vettore di query e gli altri vettori nel database, il sistema restituisce i vettori con la similarità più elevata, indicando i contenuti più pertinenti. 

Il diagramma seguente illustra una ricerca in un database vettoriale. Il vettore di query "sport preferito" viene confrontato con un insieme di vettori memorizzati, ciascuno dei quali rappresenta una frase di testo. Il risultato più vicino, "Mi piace il calcio", viene restituito come primo risultato.

Luna_2-1728319656166.png

Figura 3. Esempio di query vettoriale

Luna_3-1728319686467.png

Figura 4. Memorizzazione dei vettori nel database

Luna_4-1728319710880.png

Figura 5. Recupero dei vettori dal database

Quando si lavora con database vettoriali, entrano in gioco due parametri chiave: Top K e misura di similarità (o funzione di distanza).

Top K

Quando si effettua una query su un database vettoriale, l'obiettivo è spesso quello di recuperare gli elementi più simili a un determinato vettore di query. È qui che entra in gioco il concetto di Top K. Top K si riferisce al recupero dei primi K elementi più simili in base a una metrica di similarità.

Ad esempio, se stai creando un sistema di raccomandazione dei prodotti, potresti voler trovare i 10 prodotti più simili a quello che l'utente sta visualizzando. In questo caso, K sarebbe 10. Il database vettoriale restituirebbe i 10 vettori di prodotti più vicini al vettore del prodotto oggetto della query.

Misure di similarità

Per determinare la somiglianza tra i vettori, vengono utilizzate varie metriche di distanza, tra cui:

  • Similarità coseno: misura il coseno dell'angolo tra due vettori. È spesso utilizzata per applicazioni basate sul testo, poiché cattura bene la similarità semantica. Un valore più vicino a 1 indica una maggiore similarità.
  • Distanza euclidea: calcola la distanza in linea retta tra due punti nello spazio euclideo. È sensibile alle differenze di grandezza tra i vettori.
  • Distanza di Manhattan: nota anche come distanza L1, calcola la somma delle differenze assolute tra gli elementi corrispondenti di due vettori. È meno sensibile ai valori anomali rispetto alla distanza euclidea.
Luna_5-1728319775495.png

Figura 6. Misure di similarità

Esistono molte altre misure di similarità non elencate qui. La scelta della metrica di distanza dipende dall'applicazione specifica e dalla natura dei dati. Si consiglia di sperimentare varie metriche di similarità per vedere quale produce risultati migliori.

Quali embedder sono supportati in SnapLogic

A partire da ottobre 2024, SnapLogic supporta gli embedder per i modelli principali e continua ad ampliare il proprio supporto. Gli embedder supportati includono:

  • Amazon Titan Embedder
  • OpenAI Embedder
  • Azure OpenAI Embedder
  • Google Gemini Embedder

Quali database vettoriali sono supportati in SnapLogic?

  • Pigna
  • Ricerca aperta
  • MongoDB
  • Fiocco di neve
  • Postgres
  • AlloyDB

Esempi di pipeline

Incorpora un file di testo

  1. Leggi il file utilizzando lo snap File Reader.
  2. Converti l'input binario in un formato documento utilizzando lo snap Da binario a documento, poiché tutti gli embedder richiedono un input documento.
  3. Incorpora il documento utilizzando lo snap incorporatore che hai scelto.
Luna_6-1728321674364.png

Figura 7. Incorporare un file

Luna_7-1728322248880.png

Figura 8. Output dello Snap Embedder

Memorizza un vettore

  1. Utilizza lo snap JSON Generator per simulare un documento come input, contenente il testo originale da memorizzare nel database vettoriale.
  2. Vectorizza il testo originale utilizzando lo snap dell'embedder.
  3. Utilizza uno snap mapper per formattare la struttura nel formato richiesto da Pinecone: il campo vettoriale è denominato "valori", mentre il testo originale e altri dati rilevanti sono inseriti nel campo "metadati".
  4. Memorizza i dati nel database vettoriale utilizzando lo snap upsert/insert del database vettoriale.
Luna_8-1728322328495.png

Figura 9. Memorizzazione di un vettore nel database

Luna_9-1728322355549.png

Figura 10. Un vettore nel database Pinecone

Recupera vettori 

  1. Utilizza lo snap Generatore JSON per simulare il testo da interrogare.
  2. Vectorizza il testo originale utilizzando lo snap dell'embedder.
  3. Utilizza uno snap mapper per formattare la struttura nel formato richiesto da Pinecone, denominando il vettore di query come "vector".
  4. Recupera il vettore superiore 1, che è il vicino più prossimo.
Luna_10-1728322385143.png

Figura 11. Recupero dei vettori da un database

[
    {
        "content" : "favorite sport"
    }
]

Figura 12. Testo della query 

Luna_11-1728322442808.png

Figura 13. Tutti i vettori presenti nel database

{
  "matches": [
    {
      "id": "db873b4d-81d9-421c-9718-5a2c2bd9e720",
      "score": 0.547461033,
      "values": [],
      "metadata": {
        "content": "I like football."
      }
    }
  ]
}

Figura 14. Output della pipeline: il vicino più prossimo alla query 

I database embedder e vettoriali sono ampiamente utilizzati in applicazioni quali Retrieval Augmented Generation (RAG) e nella creazione di assistenti di chat. 

Incorporamenti multimodali

Sebbene finora l'attenzione si sia concentrata sugli embedding di testo, il concetto va oltre le parole e le frasi. Gli embedding multimodali rappresentano un potente progresso, consentendo la rappresentazione di vari tipi di dati, come immagini, audio e video, all'interno di uno spazio vettoriale unificato. Proiettando diverse modalità in uno spazio semantico condiviso, è possibile esplorare relazioni e interazioni complesse tra questi tipi di dati.

Ad esempio, l'immagine di un gatto e la parola "gatto" potrebbero essere posizionate vicine tra loro in uno spazio di incorporamento multimodale, riflettendo la loro somiglianza semantica. Questa capacità apre una vasta gamma di possibilità, tra cui la ricerca di immagini con query di testo, la comprensione dei contenuti video e sistemi di raccomandazione avanzati che prendono in considerazione più modalità di dati.

Foto di Luna Wang
Ingegnere software presso SnapLogic
Categoria: Tecnica