✔️✔️ Doppie Spunte Blu Cap. 10 · Sotto il cofano: cos'è davvero un LLM

Puntata 106

Puntata 106 — Embedding

Livello: ✔️✔️ Doppie Spunte Blu · Capitolo 10 · Sotto il cofano: cos’è davvero un LLM

Parole come vettori in uno spazio a 1.500 dimensioni. “Re - uomo + donna ≈ regina” non è una battuta: è geometria.

un piano cartesiano stilizzato con vettori che partono dall’origine. Vicini fra loro: “gatto”, “cane”, “leone” (cluster animali). Lontano: “TV”. Una freccia “Re-Uomo+Donna” finisce vicinissimo a “Regina”

Il salto concettuale

Nei capitoli Boomer l’AI è un “pappagallo statistico”. Vero, ma incompleto. Sotto il cofano accade qualcosa di più strutturato: ogni token (e ogni frase) viene rappresentato come vettore in uno spazio ad alta dimensionalità.

Quel vettore è l’embedding. È il modo in cui l’LLM “capisce” il significato: posizionando concetti vicini nello spazio quando hanno significati vicini.

Capirli sblocca: RAG, search semantica, classificazione zero-shot, cluster analysis, recommendation. Tutto.


Definizione operativa

Un embedding è un vettore di numeri reali — di solito dimensione 768, 1024, 1536, 3072 — che rappresenta:

  • una parola
  • un token
  • una frase
  • un paragrafo
  • un’intera pagina (con limiti)
  • un’immagine
  • un audio

Embedding di cose simili → punti vicini nello spazio (distanza coseno bassa). Embedding di cose diverse → punti lontani.

embedding("gatto")    = [0.21, -0.45, 0.88, …, 0.12]      (1536 numeri)
embedding("felino")   = [0.20, -0.43, 0.86, …, 0.13]      ← vicino
embedding("frigorifero") = [-0.55, 0.12, -0.22, …, 0.91] ← lontano

L’aritmetica del significato (word2vec, 2013)

Word2vec (Mikolov et al., 2013) ha mostrato per primo l’effetto mind-blow: i vettori catturano relazioni semantiche come operazioni vettoriali:

re - uomo + donna       ≈ regina
Parigi - Francia + Italia ≈ Roma
camminare - camminato + nuotato ≈ nuotare

Non è perfetto, ma è geometria pura. Lo spazio degli embedding codifica relazioni, non solo identità.

Gli embedding moderni (BERT, OpenAI text-embedding-3-large, Cohere, voyage-3) sono molto più ricchi: catturano sintassi, sentiment, topic, register, intent, sarcasm, contesto culturale.


Embedding contestuali vs statici

TipoEsempioCaratteristica
Staticiword2vec, GloVe (2013-14)Un vettore fisso per ogni parola
ContestualiBERT, GPT, embedding moderni (2018+)Il vettore di “banco” cambia se è “banco scuola” o “banco di pesci”

I contestuali sono standard dal 2018. Per la stessa parola, il vettore dipende da cosa c’è intorno. È un cambiamento qualitativo enorme.


Come si calcolano (sketch)

Per i token in un LLM moderno:

  1. Embedding table iniziale: una matrice (vocab_size, d_model) con vettori inizializzati casuali, appresi durante il training.
  2. Ogni token entra come embedding_table[token_id].
  3. Passa attraverso N layer di transformer, ogni layer aggiorna il vettore in base al contesto.
  4. L’ultimo layer “vede” il token in modo contestualizzato.

Per embedding di frasi/paragrafi: spesso si usa il vettore del token speciale [CLS] (in BERT-like) o si fa pooling (media, attention pooling) sui token della sequenza.

I modelli dedicati (text-embedding-3-large, voyage-3, BGE, E5, Cohere embed-v3) sono fine-tunati specificamente per produrre embedding di alta qualità, spesso con loss contrastive.


La metrica: cosine similarity

La distanza tra due embedding A e B si misura quasi sempre con cosine similarity:

cos(A, B) = (A · B) / (||A|| · ||B||)

Va da -1 (opposti) a +1 (identici). Per testi correlati: tipicamente 0.6 - 0.9. Sotto 0.4, di solito non correlati.

In alternativa, distanza euclidea, dot product (se i vettori sono normalizzati, dot ≈ coseno).

⚠️ La soglia “buona” dipende dal modello e dal dominio. Calibrare con esempi reali, mai assumere.


A cosa servono in pratica

1. Search semantica

“Trovami documenti su ‘tasse italiane per pensionati’” — il sistema embedda la query, cerca nel database i documenti più vicini. Funziona anche se i documenti non contengono letteralmente quelle parole. È la base di Google moderno, di RAG, di customer support intelligente. Vedi puntata 238.

2. Clustering

Hai 10.000 email di clienti. Le embeddi. Le raggruppi (K-means, HDBSCAN). Scopri temi nascosti: 60% bug report, 25% richieste prezzo, 15% altro. Senza tag manuali.

3. Classificazione zero-shot

Embeddi un testo. Lo confronti con gli embedding di etichette: “reclamo, complimento, richiesta info, urgenza”. Quella più vicina vince. Senza training, funziona discretamente.

4. Recommendation

“Utenti che hanno apprezzato X probabilmente apprezzano Y”. Embedding di prodotti, libri, film. Distanza coseno. Spotify, Netflix, Amazon hanno costruito imperi su questa idea.

5. Deduplica e near-duplicate detection

Email “uguali ma riformulate” → vettori vicini. Anti-spam, fact-checking.

6. Cross-lingual retrieval

Modelli multilingue (LaBSE, multilingual-e5) embeddono lingue diverse nello stesso spazio. Query in italiano → trovi documenti in inglese o cinese. Magia pratica.


Embedding multimodali

Modelli come CLIP (OpenAI, 2021) embeddono testo e immagini nello stesso spazio. “Un golden retriever che corre” (testo) avrà embedding vicino alla foto di un golden retriever che corre.

Da qui:

  • Search immagini per descrizione testuale.
  • Filtraggio automatico contenuti.
  • Cuore dei modelli generativi text-to-image (Stable Diffusion, DALL-E usano embedding CLIP-like sotto).

Estensioni: audio embedding (CLAP, Wav2Vec), video embedding. La frontiera 2025-26: embedding universali che mappano testo+immagine+audio+video nel medesimo spazio.


Vector database: dove vivono gli embedding

Per applicazioni serie servono database vettoriali ottimizzati per ricerca veloce in spazi a 1000+ dimensioni:

DBTipo
PineconeSaaS, gestito
WeaviateOpen-source, cloud opzionale
QdrantOpen-source, performance focus
MilvusOpen-source, scala enterprise
pgvectorEstensione di PostgreSQL
ChromaLightweight, popolare per prototipi

Algoritmi sotto: HNSW (Hierarchical Navigable Small World), IVF-PQ, ScaNN. Vedi puntata 239.


I limiti onesti degli embedding

Non sostituiscono il ranking semantico fine. Per query complicate, gli embedding spesso sbagliano. Spesso si combinano con un re-ranker (es. Cohere rerank, BGE reranker) che riordina i top-k.

Possono perdere informazioni precise. Un PDF di 10 pagine in un vettore = compressione brutale. Per cose precise, serve chunking + retrieval (puntata 241).

Sensibili al dominio. Embedding generici lavorano peggio su gergo medico/legale specifico. Spesso meglio fine-tunare o usare modelli specializzati.

“Lost in space” se la query è molto astratta. “Idee per innovare” embedderà vicino a quasi qualunque cosa.


TEST pratico (5 minuti)

Su HuggingFace, vai sulla pagina del modello sentence-transformers/all-MiniLM-L6-v2 (libreria popolare, gratis). Usa la demo o uno script Python:

from sentence_transformers import SentenceTransformer
model = SentenceTransformer('all-MiniLM-L6-v2')

frasi = [
    "Il gatto è sul tappeto",
    "Un felino dorme sul tappeto",
    "La capitale d'Italia è Roma",
    "Roma è la capitale italiana",
    "Domani piove a Milano"
]

emb = model.encode(frasi)
# Calcola cos similarity tra tutte le coppie

Cosa noterai:

  • Frase 1 ↔ 2: similarity ~0.7-0.8 (felini)
  • Frase 3 ↔ 4: similarity ~0.9 (riformulazione)
  • Frase 1 ↔ 5: similarity ~0.1-0.2 (irrelati)

In 3 righe di Python hai costruito il motore di una semplice search semantica.


Take-away in una riga

L’embedding è il “significato” come geometria. Vicini = simili. È il fondamento di tutto il NLP moderno e di RAG.

➡️ Prossima puntata: I miliardi di parametri — 7B, 70B, 405B: cosa significano.