2026.07.26 // LLM FOR DUMMIES // 8 MIN
LLM for Dummies #2 — Embedding: il Significato È un Luogo, Non una Definizione
La puntata 1 ci aveva lasciato con una lista di numeri opachi. Ora comincia la magia: ogni token diventa un punto in uno spazio a migliaia di dimensioni, dove la distanza è somiglianza e le direzioni sono concetti. È l'idea dietro ricerca semantica, raccomandazioni, RAG — e il layer di ingresso di ogni LLM.
ALESSIO ROCCHI ·
Nella puntata 1 abbiamo seguito il testo dentro il tokenizer e ne siamo usciti con una lista di ID: 61863 per "␣modelli", 13 per il punto. E abbiamo chiuso su un problema: quei numeri sono arbitrari. La riga 61863 non dice nulla su cosa significhi "modelli". Scambiate gli ID tra loro e non cambia niente.
Questa puntata riguarda il passaggio che risolve il problema — l'idea genuinamente bella dell'intera pipeline: il significato come geometria.
Un Dizionario Senza Definizioni
Come spieghi a una macchina cosa significa "gatto"? L'approccio da dizionario — "piccolo felino domestico" — sposta solo il problema: ora servono "piccolo", "felino" e "domestico" spiegati, e ti stai mordendo la coda all'infinito.
L'idea che ha vinto è diversa. Non definire affatto le parole. Invece, dai a ogni parola una posizione nello spazio, e disponi le posizioni in modo che le cose simili finiscano vicine. "Gatto" non ha bisogno di una definizione se sta accanto a "cane" e "gattino", lontano da "carburatore". La posizione è il significato.
FIG. 01 // IL SIGNIFICATO COME GEOMETRIA
Parole come punti: i vicini significano cose simili
ILLUSTRAZIONE: SPAZIO DI EMBEDDING (POSIZIONI NON IN SCALA)
Concretamente, ogni token riceve un vettore: una lunga lista di numeri — migliaia di coordinate in un modello moderno. Potete pensare a ogni coordinata come a un punteggio su qualche proprietà nascosta. Come se il modello valutasse ogni parola su dodicimila scale senza nome: un po' di "animalità", una spolverata di "regalità", della "concretezza", un pizzico di "francesità". Nessuno ha scelto quelle scale, e (spoiler per il deep dive) non si mappano in modo pulito sui concetti umani. Ma l'effetto è esattamente quello: le parole diventano descrivibili con numeri, e confrontabili con le distanze.
Le Direzioni Sono Concetti
La figura qui sopra nasconde un secondo trucco, più profondo. Guardate le due frecce: lo spostamento da "re" a "regina" è lo stesso che da "uomo" a "donna". Una direzione coerente dello spazio codifica il concetto "genere". Un'altra direzione codifica il plurale. Un'altra ancora, paese→capitale.
Il che significa che si può fare aritmetica sul significato:
re − uomo + donna ≈ regina
Parigi − Francia + Italia ≈ Roma
Prendi il vettore di "re", sottrai "uomo", aggiungi "donna", e il punto più vicino a dove atterri è "regina". Nessuno l'ha programmato. È emerso dal training — e quando fu scoperto (word2vec, 2013), fu il momento in cui buona parte del campo capì che queste rappresentazioni catturavano qualcosa di reale.
Da Dove Vengono le Coordinate?
Nessuno si siede ad assegnare posizioni a 100.000 token. Le posizioni sono apprese, e il principio dietro l'apprendimento è vecchio ed elegante, linguistica anni '50: "Conoscerai una parola dalla compagnia che frequenta."
Le parole che compaiono in contesti simili vengono spinte l'una verso l'altra; quelle che non condividono mai un contesto si allontanano. Fatelo su trilioni di parole ed emergono i cluster: animali vicino ad animali, verbi vicino a verbi, "gatto" vicino a "cane" — non perché qualcuno abbia detto che sono simili, ma perché entrambi inseguono topi, dormono sul divano e buttano giù oggetti dai tavoli, nei testi. Il significato emerge dalla statistica dell'uso.
FIG. 02 // IL LOOKUP
Da ID opaco a punto nello spazio
RIGA 61863 DELLA TABELLA DI EMBEDDING
[ 0.12, −0.87, 0.44, 1.03, −0.31, … ] … × 12.288 coordinate
ILLUSTRAZIONE: LOOKUP DI EMBEDDING · E ∈ ℝ^(|V|×d)
Meccanicamente è quasi deludente: il modello possiede una tabella gigante con una riga per voce di vocabolario. Processare il token 61863 significa prendere la riga 61863. Tutto qui il "leggere" — il tokenizer sceglie i numeri di riga, la tabella di embedding li trasforma in geometria, e tutto ciò che il modello fa a valle è matematica su quei vettori.
Lo Usate Ogni Giorno
Il motivo per cui questa puntata conta anche oltre gli LLM: gli embedding sono evasi dal language model e sono diventati infrastruttura.
- Ricerca semantica: digitate "auto", i risultati parlano di "automobile" — query e documenti vengono embeddati, e il motore restituisce i documenti vicini, non le stringhe uguali.
- Raccomandazioni: "a chi è piaciuto questo è piaciuto anche…" è ricerca dei vicini più prossimi in uno spazio di embedding di film, canzoni, prodotti.
- RAG (retrieval-augmented generation): quando un chatbot "cerca nei vostri documenti", i file sono stati trasformati in vettori, e i pezzi rilevanti si trovano per distanza prima di essere passati all'LLM.
- Magia multilingue: in uno spazio multilingue ben addestrato, "dog", "cane" e "Hund" atterrano vicini. La traduzione smette di essere un libro di regole e diventa una breve passeggiata.
FIG. 03 // ORDINI DI GRANDEZZA
Gli embedding in tre numeri
Coordinate per token in un modello di frontiera
~12K
la 'larghezza del modello' d — ogni token diventa un vettore così lungo
Similarità coseno: gatto↔cane vs gatto↔carburatore
0,86 vs 0,09
la somiglianza è misurabile, non metaforica (valori illustrativi)
Angolo tra due direzioni casuali in alta dimensione
≈ 90°
la quasi-ortogonalità è il motivo per cui uno spazio ospita milioni di concetti
VALORI TIPICI: LAYER DI EMBEDDING DEI TRANSFORMER · 2026
Un limite onesto prima della matematica: una tabella statica dà a "riva" e a "banca" quello che dà a "bank" in inglese — una riga sola per grafia. Ma la banca dove depositi e la panca su cui siedi meritano punti diversi, e la tabella da sola non può risolverlo: lo stesso ID pesca sempre lo stesso vettore. Ciò che lo risolve è lo stadio successivo, dove i vettori possono guardarsi a vicenda e riplasmarsi in base al contesto. È l'attention — ma prima guadagniamocela.
Deep Dive: la Geometria, Formalmente
La parte "for dummies" finisce qui — quel che segue assume dimestichezza con algebra lineare e probabilità. Altrimenti ci vediamo alla puntata #3: l'immagine che conta ce l'avete già.
Il Layer di Embedding È una Matrice
La tabella della FIG. 02 è una matrice E ∈ ℝ^{|V|×d}, con |V| ≈ 100K voci di vocabolario e d la larghezza del modello (12.288 per i modelli classe GPT-3). Il token i mappa sulla riga eᵢ = E[i,:] — equivalentemente, E moltiplicata per un vettore one-hot, ed è per questo che il layer è differenziabile e si addestra per backpropagation come tutto il resto. In molte architetture la stessa matrice viene riusata, trasposta, come layer di output che assegna i punteggi al token successivo (weight tying): il modello predice misurando il prodotto scalare tra il suo stato nascosto finale e ogni riga di E — geometria in ingresso, geometria in uscita.
L'input del Transformer vero e proprio è xᵢ = eᵢ + pᵢ, dove pᵢ inietta la posizione del token (sinusoidale nell'originale del 2017, rotary/RoPE nella maggior parte dei modelli moderni — tratteremo le positional encoding per bene nella puntata #3, dove contano davvero).
Similarità: Perché il Coseno
La similarità standard tra vettori u, v:
cos(u, v) = ⟨u, v⟩ / (‖u‖ · ‖v‖)
Perché l'angolo e non la distanza euclidea? Perché negli spazi appresi la norma trasporta informazione legata alla frequenza — i token frequenti tendono a farsi vettori più lunghi — mentre la direzione trasporta gran parte della semantica. Il coseno elimina la norma. Nei sistemi di retrieval si normalizza tutto in L2, così coseno e prodotto scalare coincidono e la ricerca del "vicino più prossimo" si riduce al massimo prodotto interno — l'operazione che i vector database ottimizzano.
Una ruga che vale la pena conoscere: gli spazi di embedding addestrati sono anisotropi — i vettori si concentrano in un cono stretto invece di distribuirsi uniformemente, quindi i valori di coseno grezzi risultano alti un po' ovunque e vanno confrontati in relativo, non letti come percentuali assolute.
Cosa Ottimizza Davvero word2vec
La ricetta classica degli embedding statici, skip-gram with negative sampling (SGNS), addestra due insiemi di vettori (centro v, contesto u) a distinguere le co-occorrenze vere da quelle finte:
L = Σ_(w,c) [ log σ(⟨v_w, u_c⟩) + Σ_{j=1..k} 𝔼_{c'∼Pₙ} log σ(−⟨v_w, u_{c'}⟩) ]
Massimizza la sigmoide del prodotto scalare per le coppie che occorrono davvero, minimizzala per k negativi campionati. Il risultato teorico notevole (Levy & Goldberg, 2014): all'ottimo, SGNS fattorizza implicitamente la matrice di pointwise mutual information shiftata,
⟨v_w, u_c⟩ ≈ PMI(w, c) − log k, PMI(w,c) = log [ P(w,c) / (P(w)P(c)) ]
"Conoscerai una parola dalla compagnia che frequenta" diventa un'affermazione precisa: gli embedding sono una fattorizzazione a basso rango delle statistiche di co-occorrenza. L'aritmetica delle analogie segue: le relazioni che si presentano come pattern coerenti di PMI (re:regina :: uomo:donna) diventano offset vettoriali coerenti. In pratica, la valutazione delle analogie è argmax_w cos(w, re − uomo + donna) escludendo le tre parole della query — il parallelogramma è reale ma più rumoroso di quanto suggerisca il meme.
Perché 12.288 Dimensioni Non Si Affollano
Concentrazione della misura: per due vettori unitari casuali in ℝ^d, il coseno atteso è 0 con deviazione standard ≈ 1/√d. A d = 12.288, due direzioni casuali sono ortogonali a meno di ±0,009 — lo spazio ad alta dimensione è insondabilmente spazioso. Questo abilita la superposition: un modello può immagazzinare molte più "direzioni-concetto" quasi-ortogonali di quante dimensioni abbia, al prezzo di un po' di interferenza — uno degli oggetti di studio centrali della ricerca moderna in interpretabilità. È anche il motivo per cui gli embedding "piccoli" da retrieval (256-1024 dimensioni) funzionano comunque: servono sorprendentemente poche dimensioni perché la quasi-ortogonalità dia a ogni concetto il suo angolo. I modelli di retrieval moderni spingono oltre con il training Matryoshka, che impacchetta l'informazione più importante nel prefisso del vettore così da poterlo troncare — 1024 dimensioni per l'accuratezza, le prime 256 per la velocità — senza riaddestrare.
Da Statico a Contestuale
Tutto quanto sopra dà un vettore per tipo di token — il problema "banca/panca" resta irrisolto a livello di tabella. In un Transformer, il layer di embedding è solo il layer 0: ciò che scorre nella rete è una sequenza di vettori che ogni layer successivo trasforma, mescolandovi informazione dai token circostanti. Verso i layer intermedi, il vettore alla posizione "riva" in "riva del fiume" e in "riva della finanza" si è spostato in luoghi genuinamente diversi. La contestualizzazione non è una proprietà della tabella; è una proprietà del macchinario sopra — il meccanismo di attention, che è esattamente la puntata #3 di questa serie.
Prossima Tappa
Ora abbiamo i token come punti nello spazio, e uno spazio dove la geometria significa qualcosa. Ma i vettori sono ancora soli — l'embedding di ogni token non sa nulla dei suoi vicini nella frase. La prossima volta: l'attention — il meccanismo che permette a ogni token di guardare tutti gli altri e decidere chi ascoltare, l'idea da cui prende il nome l'intera architettura Transformer ("Attention Is All You Need"), e il motivo per cui le context window costano quadraticamente.
Roadmap della serie: tokenizzazione → embedding (siete qui) → attention e il Transformer → training → da autocomplete ad assistente → inferenza. Domande? Scrivetemi.