Un token, da solo, è solo un numero identificativo in un vocabolario — non porta con sé alcun significato. “Gatto” potrebbe avere l’ID 4821 e “cane” l’ID 9103: due numeri che non dicono nulla sulla relazione tra i due concetti. Il secondo passo del percorso, dopo la tokenizzazione, è trasformare ogni token in un embedding: un vettore numerico — una lista ordinata di centinaia o migliaia di numeri decimali — che rappresenta il significato di quel token in uno spazio matematico.
Perché non basta un numero solo?
Un singolo numero può ordinare le cose, non descriverle. Un vettore con centinaia di dimensioni, invece, può codificare moltissime sfumature contemporaneamente: un embedding può “sapere” che “gatto” è un animale, è domestico, è di piccola taglia, è semanticamente vicino a “felino” e “micio”, lontano da “automobile”. Ogni dimensione del vettore cattura, in modo distribuito e non direttamente leggibile da un umano, un aspetto diverso del significato.
L’idea geometrica alla base
Il principio è semplice da enunciare: parole o frasi con significato simile finiscono vicine nello spazio vettoriale, misurate ad esempio con la distanza coseno tra i vettori. Parole senza relazione finiscono lontane. Questo è ciò che permette a un modello di capire che “il re regna sul paese” e “il sovrano governa la nazione” dicono praticamente la stessa cosa, anche se non condividono quasi nessuna parola.
Un esempio concreto (semplificato)
In uno spazio a sole due dimensioni, per intuizione, potremmo immaginare:
- “gatto” → [0.9, 0.2]
- “cane” → [0.85, 0.25]
- “automobile” → [0.1, 0.95]
“Gatto” e “cane” sono vicini tra loro, “automobile” è lontano da entrambi. Nella realtà le dimensioni non sono due ma centinaia (768, 1536, 3072 sono valori tipici), e nessuna dimensione singola corrisponde a un concetto umano leggibile come “è un animale” — il significato è distribuito su tutte le dimensioni insieme.
Dove si usano gli embedding
- Dentro il modello: ogni token in ingresso viene convertito nel proprio embedding prima di essere elaborato dagli strati successivi della rete.
- Nella ricerca semantica: documenti e domande vengono trasformati in embedding, e si cercano i documenti il cui vettore è più vicino a quello della domanda — è la base tecnica di ogni sistema RAG (ne abbiamo parlato a proposito dei suoi limiti in un articolo precedente).
- Nel confronto di significato: due frasi si possono confrontare calcolando la distanza tra i loro embedding, anche senza condividere una sola parola in comune.
Un limite da tenere a mente
Il vettore ha una dimensione fissa, decisa quando il modello viene progettato. Più dimensioni permettono di codificare sfumature più fini, ma hanno un costo computazionale e di memoria più alto — ed esistono comunque limiti teorici a quante distinzioni un vettore di dimensione fissata può rappresentare, qualunque sia la sua grandezza.