“Una mappa del significato dove le idee simili abitano vicine tra loro.”
I token: l'unità di linguaggio per un modello
Un LLM non legge parole. Legge token. Un token è un pezzo di testo, di solito un sotto-parola: «ciao» è un token, «incredibile» ne è tre («in», «credi», «bile»), un'emoji ne è uno o due, un carattere cinese ne è uno. La suddivisione esatta è decisa da un tokenizer addestrato in parallelo con il modello.
Perché sotto-parole e non parole intere? Due ragioni. (1) Il vocabolario resta piccolo (circa 50-100 mila token) anziché di milioni, il che mantiene la rete gestibile. (2) Il modello può trattare parole nuove che non ha mai visto durante l'addestramento, componendole a partire da pezzi familiari. «Sden-izzato» è inedito, ma «sden», «izz» e «ato» figurano tutti nel vocabolario.
Gli embedding: trasformare i token in significato
Ogni token del vocabolario è associato a un vettore, una lista di, diciamo, 4096 numeri. Quel vettore si chiama embedding del token. Viene *appreso durante l'addestramento*, non progettato a mano. Dopo l'addestramento, le parole simili finiscono con vettori simili.
Concretamente: i vettori per «re» e «regina» sono vicini. Lo stesso vale per «Parigi» e «Berlino». Notoriamente, si può fare aritmetica: vettore(«re») − vettore(«uomo») + vettore(«donna») ≈ vettore(«regina»). Il significato è stato compresso in geometria.
Embedding statici contro embedding contestuali
I primi metodi di embedding (word2vec 2013, GloVe 2014) davano a ogni parola *un* vettore permanente. Utile ma limitato: «banca» (del fiume) e «banca» (dei soldi) avevano lo stesso vettore. Gli LLM moderni usano embedding contestuali: il vettore per «banca» in «riva della banca» è genuinamente diverso da «banca» in «conto in banca». Il vettore che ottieni dipende dall'intera frase.
Come? L'embedding iniziale di un token è solo una ricerca in tabella, ma poi attraversa strati di attention (capitolo 5) che lo *mescolano* con gli embedding dei token vicini. All'ultimo strato, il vettore di ogni token ha assorbito informazioni sul suo contesto. Questo è l'embedding contestuale in una frase.
Cosa c'è davvero in quei numeri
Ogni dimensione del vettore non è «la dimensione del genere» o «la dimensione del cibo». Le direzioni che portano significato non sono allineate con gli assi. Sono apprese, distribuite su molte dimensioni. A volte si possono trovare direzioni interpretabili («regalità», «plurale», «capitale»), ma non sono pre-etichettate. La ricerca sull'interpretabilità è un campo giovane che cerca di rileggere i vettori in concetti umani.
Gli embedding al di fuori degli LLM
Gli embedding non sono solo un artefatto interno degli LLM. Sono un prodotto a sé. Puoi chiamare una API, darle un frammento di testo, e ottenere un vettore da 1024 o 4096 dimensioni. Quel vettore è l'input per:
- La ricerca semantica: «trovami documenti sulle assunzioni del quarto trimestre» invece di «cerca le parole esatte».
- Il RAG (generazione aumentata da recupero): trova i documenti giusti, poi passali all'LLM.
- Il clustering: raggruppare i ticket di assistenza per argomento senza etichette.
- La raccomandazione: prodotti il cui embedding è vicino a ciò che è piaciuto all'utente.
- Il rilevamento di anomalie: segnalare gli input il cui embedding è lontano da tutto il resto.
Gli embedding si rivelano una delle applicazioni più utili, più economiche e meno rischiose della tecnologia LLM. Torniamo al RAG nel capitolo 7.
Una riga per ciascuno
- I modelli leggono token, non parole. Le tariffe, i limiti e molti bug sottili si collocano a questo livello.
- Ogni token è associato a un vettore appreso (embedding) in modo che i significati simili finiscano vicini nello spazio vettoriale.
- Gli embedding moderni sono contestuali: la stessa parola ha vettori diversi in frasi diverse.
- Gli embedding sono utili di per sé: ricerca semantica, RAG, clustering, raccomandazione, rilevamento di anomalie.
Dove andare ora