Torna al Diario
3 min di lettura

Guida agli Embedding Vettoriali e alla Matematica della Similarità

Una guida semplice che spiega come l'IA rappresenta il significato in coordinate spaziali, come funziona la similarità coseno e il trucco Normalize-then-Dot.

Vector DatabasesRetrieval-Augmented Generation (RAG)LLM Agents
Guida agli Embedding Vettoriali e alla Matematica della Similarità

I motori di ricerca tradizionali si basavano esclusivamente sulla corrispondenza esatta delle parole. Se cercavi "automobile", ignoravano i documenti che usavano solo la parola "auto".

I moderni sistemi di intelligenza artificiale risolvono questo problema convertendo il testo in embedding vettoriali (Vector Embeddings). Anziché confrontare stringhe, i modelli mappano parole, frasi o interi documenti come coordinate spaziali che catturano il significato concettuale.

In questa guida per principianti, analizzeremo come gli embedding rappresentano il significato nello spazio geometrico, confronteremo le principali metriche matematiche di similarità e studieremo l'ottimizzazione usata dai vector database.


1. Cos'è un Embedding Vettoriale?

Un modello di embedding è una rete neurale specializzata che agisce come un traduttore semantico. Prende un testo in ingresso e restituisce una lista di numeri a virgola mobile di lunghezza fissa chiamata vettore.

Input Text: "automobile"  ---> Embedding Model ---> [0.024, -0.412, 0.891, ..., 0.105]
Input Text: "car"         ---> Embedding Model ---> [0.021, -0.408, 0.887, ..., 0.112]

Questi numeri rappresentano coordinate su una mappa matematica ad alta dimensione. Poiché "car" e "automobile" condividono lo stesso significato, il modello posiziona le loro coordinate molto vicine.


2. La Geometria del Linguaggio: Comprendere la Dimensionalità

Il numero totale di dimensioni in un vettore definisce la sua dimensionalità (ad esempio 768 dimensioni nei modelli standard, o 1536 in quelli più grandi).

Anche se non possiamo visualizzare uno spazio a 768 dimensioni, la geometria segue le stesse regole di una rappresentazione 2D:

  1. Ogni vettore parte dall'origine [0, 0, ... 0].
  2. I valori indicano la distanza lungo ciascun asse.
  3. La punta della freccia indica un punto nello spazio semantico.
2D Vector Space Visualization:

  Y Axis (Concept: Technology)
    ^
    |      * "laptop" [2.1, 4.8]
    |      * "computer" [2.3, 4.5]
    |
    |                         * "banana" [4.9, 0.4]
    +------------------------------------------------> X Axis (Concept: Food)

Regola chiave: Non tentare mai di isolare una singola coordinata. Il significato è distribuito sull'intero pattern di tutte le dimensioni combinate.


3. Metriche Matematiche: Misurare la Vicinanza

Per determinare se due testi condividono lo stesso significato, i computer misurano quanto sono vicine le loro frecce vettoriali nello spazio:

1. Magnitudine del Vettore (Norma L2)

Misura la lunghezza della freccia dall'origine alla punta:

a=i=1nai2\|\mathbf{a}\| = \sqrt{\sum_{i=1}^{n} a_i^2}

2. Prodotto Scalare (Dot Product)

Moltiplica le coordinate corrispondenti tra due vettori e somma i risultati:

ab=i=1naibi\mathbf{a} \cdot \mathbf{b} = \sum_{i=1}^{n} a_i b_i

3. Distanza Euclidea (Distanza L2)

Misura la distanza fisica in linea retta tra le punte delle due frecce:

d(a,b)=i=1n(aibi)2d(\mathbf{a}, \mathbf{b}) = \sqrt{\sum_{i=1}^{n} (a_i - b_i)^2}

4. Similarità Coseno (Cosine Similarity)

Misura l'angolo θ\theta tra due frecce vettoriali, ignorandone la lunghezza:

cos(θ)=abab\cos(\theta) = \frac{\mathbf{a} \cdot \mathbf{b}}{\|\mathbf{a}\| \|\mathbf{b}\|}

  • Lo standard di riferimento per la ricerca testuale: Se una ricerca breve di 3 parole e un articolo di 500 parole trattano lo stesso argomento, le loro frecce punteranno nella stessa direzione (θ0    cos(θ)1.0\theta \approx 0^\circ \implies \cos(\theta) \approx 1.0).

4. Ingegneria di Produzione: Il Trucco "Normalize-Then-Dot"

Calcolare la similarità coseno su milioni di vettori richiede divisioni onerose in termini di CPU.

I vector database (Pinecone, Milvus, pgvector) utilizzano un'ottimizzazione matematica:

Passo 1: Normalizzazione all'inserimento

Ogni vettore viene normalizzato a una lunghezza esatta di 1.01.0 (a^\hat{\mathbf{a}}):

a^=aa\hat{\mathbf{a}} = \frac{\mathbf{a}}{\|\mathbf{a}\|}

Passo 2: Query semplificata

Quando entrambi i vettori hanno lunghezza 1.01.0 (a^=1\|\hat{\mathbf{a}}\| = 1 e b^=1\|\hat{\mathbf{b}}\| = 1), il denominatore della formula del coseno diventa 11:

cos(θ)=a^b^1×1=a^b^\cos(\theta) = \frac{\hat{\mathbf{a}} \cdot \hat{\mathbf{b}}}{1 \times 1} = \hat{\mathbf{a}} \cdot \hat{\mathbf{b}}

Grazie alla normalizzazione preventiva, la similarità coseno diventa un semplice prodotto scalare. Il database evita le divisioni in runtime e raggiunge la massima velocità mantenendo un'accuratezza identica.

Share this article