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.
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
| Tipo | Esempio | Caratteristica |
|---|---|---|
| Statici | word2vec, GloVe (2013-14) | Un vettore fisso per ogni parola |
| Contestuali | BERT, 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:
- Embedding table iniziale: una matrice
(vocab_size, d_model)con vettori inizializzati casuali, appresi durante il training. - Ogni token entra come
embedding_table[token_id]. - Passa attraverso N layer di transformer, ogni layer aggiorna il vettore in base al contesto.
- 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:
| DB | Tipo |
|---|---|
| Pinecone | SaaS, gestito |
| Weaviate | Open-source, cloud opzionale |
| Qdrant | Open-source, performance focus |
| Milvus | Open-source, scala enterprise |
| pgvector | Estensione di PostgreSQL |
| Chroma | Lightweight, 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.