Introduzione

C'è un paradosso al centro dell'intelligenza artificiale moderna. I modelli linguistici — quelli che scrivono testi, traducono lingue, rispondono a domande complesse — sono, alla base, macchine che manipolano numeri. Non comprendono le parole come le comprendiamo noi. Non hanno esperienze sensoriali, non hanno vissuto il profumo del pane appena sfornato e non hanno mai passeggiato per le strade di Firenze in una mattina d'autunno.

Eppure, quando chiediamo a un modello di intelligenza artificiale di spiegarci la differenza tra "nostalgia" e "malinconia", ci restituisce una risposta sorprendentemente sfumata. Quando gli chiediamo di trovare documenti simili a un testo dato, riesce a identificare connessioni che vanno ben oltre la semplice corrispondenza di parole chiave. Come è possibile?

La risposta sta in una delle idee più eleganti della moderna informatica: gli embedding semantici. Sono il ponte invisibile tra il linguaggio umano, con tutta la sua ricchezza e ambiguità, e il mondo matematico in cui vivono i computer. Sono la ragione per cui un'intelligenza artificiale può "capire" che "automobile" e "macchina" significano (spesso) la stessa cosa, mentre "macchina" e "macchina fotografica" sono concetti diversi.

In questo articolo esploreremo come funzionano gli embedding, perché sono così importanti e quali sono le loro applicazioni pratiche — con esempi concreti pensati per chi lavora nel contesto italiano.

Dalle parole ai numeri

Il problema fondamentale è semplice da enunciare: i computer lavorano con numeri, gli esseri umani comunicano con parole. Per far dialogare questi due mondi, serve un sistema di traduzione. Ma come si traduce il significato di una parola in un numero?

Il primo tentativo: one-hot encoding

L'approccio più ingenuo, e storicamente il primo ad essere utilizzato, è il cosiddetto one-hot encoding. Funziona così: si prende il vocabolario completo di una lingua — supponiamo 100.000 parole — e si assegna a ciascuna parola un vettore di 100.000 numeri, tutti zeri tranne uno.

La parola "casa" potrebbe essere rappresentata come [0, 0, 0, ..., 1, ..., 0, 0], dove l'1 compare nella posizione 4.237. La parola "abitazione" come [0, 0, 0, ..., 1, ..., 0, 0], con l'1 nella posizione 892. E "algoritmo" come [0, 0, 0, ..., 1, ..., 0, 0], con l'1 nella posizione 315.

Il problema è evidente: in questa rappresentazione, "casa" è tanto distante da "abitazione" quanto lo è da "algoritmo". Non c'è modo di codificare il fatto che le prime due parole condividono un significato. Ogni parola è un'isola, scollegata da tutte le altre. È come avere un dizionario dove le parole sono disposte a caso, senza nessuna organizzazione tematica.

Inoltre, questi vettori sono enormemente inefficienti: occupano tantissimo spazio e sono quasi interamente composti da zeri. Per un vocabolario di 100.000 parole, ogni singola parola richiede un vettore di 100.000 dimensioni. Una rappresentazione gonfia e priva di informazione semantica.

L'intuizione linguistica: la distributional hypothesis

La svolta arriva dalla linguistica, molto prima dell'era digitale. Nel 1957, il linguista britannico John Rupert Firth formulò un principio che sarebbe diventato la pietra angolare degli embedding moderni:

"You shall know a word by the company it keeps."
— J.R. Firth, 1957

"Conoscerai una parola dalla compagnia che frequenta." L'idea è tanto semplice quanto profonda: il significato di una parola è definito dal contesto in cui appare. Le parole che compaiono in contesti simili hanno significati simili.

Pensiamoci con un esempio italiano. Le parole "espresso" e "cappuccino" compaiono spesso vicino a "bar", "tazzina", "mattina", "zucchero". La parola "algoritmo" compare vicino a "calcolo", "programmazione", "dati". Analizzando milioni di testi, un sistema può dedurre che "espresso" e "cappuccino" sono semanticamente vicini, perché vivono nello stesso quartiere linguistico.

Questa è la distributional hypothesis (ipotesi distribuzionale), e il suo potere sta nel fatto che non richiede nessuna conoscenza esplicita del significato delle parole. Basta osservare come vengono usate.

Word2Vec: la rivoluzione del 2013

L'ipotesi distribuzionale rimase per decenni un principio teorico, finché nel 2013 Tomas Mikolov e il suo team a Google pubblicarono Word2Vec, un sistema che la trasformò in realtà computazionale.

Word2Vec funziona così: una rete neurale viene addestrata su enormi quantità di testo con un compito apparentemente banale — prevedere quali parole compaiono vicino ad altre parole. Dopo l'addestramento, i pesi interni della rete neurale diventano le rappresentazioni numeriche delle parole: i famosi embedding.

Ogni parola viene rappresentata non più come un vettore di 100.000 zeri e un uno, ma come un vettore di poche centinaia di numeri (tipicamente 300), ciascuno dei quali cattura un aspetto del significato della parola. Questi numeri non sono arbitrari: codificano relazioni semantiche reali.

Il risultato più celebre di Word2Vec è un'equazione che sembra quasi magica:

re - uomo + donna = regina

Più precisamente: il vettore di "re" meno il vettore di "uomo" più il vettore di "donna" produce un vettore vicinissimo a quello di "regina". L'aritmetica dei vettori cattura le analogie semantiche.

Questa non è una coincidenza programmata. Nessuno ha insegnato al sistema che esiste una relazione tra re e regina. Il sistema l'ha scoperta autonomamente, osservando come queste parole vengono usate in miliardi di frasi. La dimensione che distingue "re" da "regina" è la stessa che distingue "uomo" da "donna": una direzione nello spazio vettoriale che codifica il genere.

Allo stesso modo, si possono trovare analogie geografiche (Parigi - Francia + Italia = Roma), temporali (Windows - Microsoft + Apple = macOS) e molte altre. Gli embedding catturano strutture profonde del linguaggio che nemmeno i linguisti avevano formalizzato in modo così preciso.

Spazi vettoriali e significato

Per comprendere davvero gli embedding, serve un'intuizione geometrica. Non bisogna essere matematici: basta pensare alle parole come a punti in uno spazio.

Uno spazio a molte dimensioni

Immaginiamo uno spazio tridimensionale, come una stanza. Ogni punto nella stanza ha tre coordinate: lunghezza, larghezza, altezza. Ora immaginiamo di estendere questo spazio a 300 dimensioni (o 768, o 1.536, come nei modelli moderni). Non possiamo visualizzarlo, ma le regole matematiche sono le stesse.

In questo spazio ad alta dimensionalità, ogni parola è un punto. E la cosa straordinaria è che la posizione di ogni punto non è casuale: le parole con significati simili si trovano vicine, quelle con significati diversi si trovano lontane.

Facciamo un esempio concreto con parole italiane. Nello spazio degli embedding:

Le città italiane formano un "quartiere" nello spazio vettoriale. Le capitali europee ne formano un altro, parzialmente sovrapposto. I cibi italiani ne formano un altro ancora. E così via, per milioni di concetti.

Distanza come misura di significato

La distanza tra due punti nello spazio vettoriale corrisponde alla differenza di significato tra due parole. Più due parole sono vicine, più i loro significati sono correlati. Questa distanza si misura tipicamente con la cosine similarity (similarità del coseno), che calcola l'angolo tra due vettori anziché la distanza euclidea.

Per capire intuitivamente: due vettori che puntano nella stessa direzione hanno cosine similarity uguale a 1 (significato identico). Due vettori perpendicolari hanno cosine similarity uguale a 0 (significati non correlati). Due vettori che puntano in direzioni opposte hanno cosine similarity uguale a -1 (significati opposti).

In pratica, misurando la similarità del coseno tra parole italiane, troveremmo valori come questi:

Alta similarità

"pasta" e "spaghetti": ~0.82

Concetti strettamente correlati: gli spaghetti sono un tipo di pasta. I contesti d'uso si sovrappongono ampiamente.

Bassa similarità

"pasta" e "democrazia": ~0.05

Concetti non correlati. Compaiono in contesti linguistici completamente diversi.

Le dimensioni come tratti semantici astratti

Cosa rappresentano le singole dimensioni di un vettore di embedding? Questa è una domanda affascinante e, in parte, ancora aperta. A differenza di uno spazio fisico dove le dimensioni hanno significati chiari (lunghezza, larghezza, altezza), le dimensioni degli embedding codificano tratti semantici astratti che emergono automaticamente dall'addestramento.

Alcune dimensioni catturano tratti relativamente interpretabili: una potrebbe codificare il grado di "concretezza" di un concetto (parole come "tavolo" avranno un valore alto, "libertà" un valore basso). Un'altra potrebbe codificare la "animatezza" (esseri viventi vs oggetti inanimati). Un'altra ancora potrebbe catturare sfumature di formalità o registro linguistico.

Ma la maggior parte delle dimensioni codifica tratti che non hanno un nome nel linguaggio umano. Sono astrazioni statistiche che il modello ha trovato utili per rappresentare il significato, senza che nessuno le abbia definite esplicitamente. È uno degli aspetti più affascinanti del machine learning: la macchina scopre strutture nel linguaggio che noi non avevamo nemmeno pensato di cercare.

Embedding nei modelli moderni

Word2Vec è stato rivoluzionario, ma aveva un limite fondamentale: produceva embedding statici. Ogni parola aveva una e una sola rappresentazione, indipendentemente dal contesto. Ma il linguaggio umano è intrinsecamente ambiguo: la stessa parola può avere significati completamente diversi.

Il problema della polisemia

Consideriamo la parola italiana "pesca". In un sistema statico come Word2Vec, "pesca" ha un unico vettore, che è una specie di media tra tutti i suoi significati. Ma nella realtà:

Contesto 1

"Vado a pesca al lago di Bolsena"

Qui "pesca" è l'attività del pescare: canna, ami, pesce, pazienza, alba.

Contesto 2

"Mangio una pesca matura"

Qui "pesca" è il frutto: dolce, succosa, estate, marmellata, nocciolo.

Un embedding statico non può distinguere questi due significati. Il vettore di "pesca" sarà una media inutile, lontano sia dal concetto di frutto sia da quello di attività sportiva. È come avere una fotografia sfocata che mostra due immagini sovrapposte.

La rivoluzione degli embedding contestuali

La soluzione è arrivata con l'architettura Transformer, introdotta nel 2017 e alla base di tutti i modelli moderni: BERT, GPT, Claude, Gemini. L'innovazione chiave è il meccanismo di attenzione (attention), che permette al modello di generare una rappresentazione diversa della stessa parola a seconda del contesto in cui appare.

Nei modelli basati su Transformer, l'embedding di una parola non è fisso: viene calcolato dinamicamente tenendo conto di tutte le altre parole nella frase. La parola "pesca" nella frase "vado a pesca" produrrà un vettore orientato verso il cluster dei concetti legati alla natura e allo sport. La stessa parola nella frase "mangio una pesca" produrrà un vettore completamente diverso, orientato verso il cluster dei frutti e dell'alimentazione.

Questa capacità di produrre embedding contestuali è ciò che rende i modelli moderni così potenti nella comprensione del linguaggio. Non trattano le parole come simboli isolati, ma come entità il cui significato si definisce in relazione a tutto ciò che le circonda.

La profondità della rappresentazione

Un altro aspetto fondamentale dei modelli moderni è la profondità della rappresentazione. Un modello come GPT-4 o Claude non produce un singolo embedding per ogni parola, ma una serie di rappresentazioni sempre più astratte, strato dopo strato.

Nei primi strati della rete neurale, gli embedding catturano proprietà superficiali: fonetica, morfologia, categorie grammaticali. Negli strati intermedi emergono relazioni sintattiche: soggetto-verbo, aggettivo-nome. Negli strati più profondi compaiono rappresentazioni semantiche ad alto livello: il significato complessivo della frase, le intenzioni comunicative, il registro linguistico.

È un processo che ricorda, in modo suggestivo, la gerarchia del processamento linguistico nel cervello umano: dalle aree uditive primarie, che elaborano i suoni, alle aree associative, che costruiscono il significato.

Un dato che impressiona: i modelli linguistici più avanzati utilizzano embedding con 4.096 o più dimensioni per ogni singolo token. Ogni parola, in ogni posizione di ogni frase, viene rappresentata da migliaia di numeri che ne catturano il significato in quel preciso contesto. La complessità computazionale è enorme, ma i risultati sono straordinari.

Applicazioni pratiche

Gli embedding semantici non sono una curiosità accademica. Sono la tecnologia alla base di molti strumenti che le aziende usano (o potrebbero usare) ogni giorno. Vediamo le applicazioni più rilevanti per il contesto italiano.

Ricerca semantica

La ricerca tradizionale funziona per corrispondenza di parole chiave: cerchi "ristorante pesce Livorno" e il sistema trova documenti che contengono esattamente quelle parole. Ma cosa succede se un documento parla di "trattoria specializzata in piatti di mare sulla costa labronica"? Con la ricerca tradizionale, non lo trovi. Con la ricerca semantica, sì.

Il principio è semplice: sia la query dell'utente sia i documenti vengono convertiti in embedding. Poi si cercano i documenti i cui embedding sono più vicini all'embedding della query. Poiché gli embedding catturano il significato e non le parole esatte, la ricerca funziona anche quando il vocabolario è diverso.

Per un'azienda italiana, questo significa poter implementare un motore di ricerca interno che comprende le domande dei dipendenti anche quando non usano la terminologia esatta dei documenti aziendali. Un operatore che cerca "come fare il reso di un prodotto difettoso" troverà anche le procedure intitolate "gestione reclami e restituzioni per non conformità".

Sistemi di raccomandazione

I sistemi di raccomandazione — quelli che suggeriscono prodotti, articoli, contenuti — beneficiano enormemente degli embedding. Invece di basarsi solo su chi ha comprato cosa (filtraggio collaborativo), possono comprendere la similarità semantica tra i prodotti stessi.

Un e-commerce di prodotti alimentari toscani potrebbe usare gli embedding per suggerire, a chi ha acquistato un Chianti Classico Riserva, non solo altri Chianti (corrispondenza di parole), ma anche un Brunello di Montalcino (vino rosso toscano strutturato) o un tagliere di salumi senesi (abbinamento enogastronomico). Gli embedding catturano queste relazioni semantiche profonde.

Sistemi RAG (Retrieval-Augmented Generation)

Una delle applicazioni più promettenti degli embedding è nei sistemi RAG (Retrieval-Augmented Generation), che combinano la ricerca semantica con la generazione di testo.

In un sistema RAG, quando l'utente fa una domanda, il sistema prima usa gli embedding per trovare i documenti più rilevanti nel database aziendale, poi passa questi documenti al modello linguistico che genera una risposta basata sulle informazioni trovate. È il modo più efficace per creare assistenti virtuali aziendali che rispondono sulla base dei dati reali dell'azienda, anziché inventare informazioni.

Per un'azienda italiana, un sistema RAG potrebbe permettere ai clienti di fare domande in linguaggio naturale — "qual è il vostro olio più adatto per la frittura?" — e ricevere risposte precise basate sulle schede tecniche dei prodotti, senza che nessuno debba programmare manualmente ogni possibile domanda e risposta.

Clustering e analisi delle recensioni

Gli embedding permettono di raggruppare automaticamente testi simili per significato. Questa capacità è particolarmente utile per analizzare grandi volumi di feedback dei clienti.

Un hotel a Montepulciano che riceve centinaia di recensioni su TripAdvisor, Google e Booking.com può usare gli embedding per raggruppare automaticamente i commenti per tema: quelli sulla colazione, quelli sulla pulizia, quelli sulla posizione, quelli sul personale. Senza dover leggere ogni singola recensione, il gestore ottiene una mappa dei punti di forza e delle criticità, con le citazioni più rappresentative di ogni cluster.

Corrispondenza semantica per l'e-commerce

Nel commercio elettronico, gli embedding risolvono il problema della corrispondenza imperfetta tra ciò che il cliente cerca e come il prodotto è descritto nel catalogo. Un cliente che cerca "regalo per nonna che ama cucinare" può essere indirizzato verso un set di utensili da cucina artigianali, anche se la scheda prodotto non contiene nessuna di quelle parole.

Per i prodotti del Made in Italy, questa tecnologia è particolarmente preziosa: permette di superare le barriere linguistiche, collegando la query di un cliente giapponese che cerca "traditional Italian leather craftwork" alla scheda di un artigiano fiorentino che descrive i suoi prodotti in italiano.

Limiti e bias

Come ogni tecnologia, gli embedding hanno limiti importanti che è necessario conoscere per usarli responsabilmente.

I bias nel linguaggio

Gli embedding vengono addestrati su testi prodotti da esseri umani, e gli esseri umani hanno pregiudizi. Questi pregiudizi vengono codificati fedelmente nello spazio vettoriale. Studi hanno dimostrato che gli embedding addestrati su testi generici tendono ad associare certi mestieri a un genere specifico ("infermiera" più vicina a "donna", "ingegnere" più vicino a "uomo") o certi attributi a determinate etnie.

Questo non è un difetto dell'algoritmo: è un riflesso dei dati su cui è stato addestrato, che a loro volta riflettono la società. Ma è un problema serio quando gli embedding vengono usati per prendere decisioni: selezionare curriculum, valutare candidati, assegnare punteggi di credito. In questi contesti, un bias nell'embedding può tradursi in discriminazione automatizzata.

La ricerca sul debiasing degli embedding è attiva e ha prodotto tecniche efficaci, ma nessuna soluzione è perfetta. La consapevolezza del problema è il primo passo fondamentale.

Specificità culturale e linguistica

La maggior parte dei modelli di embedding è addestrata prevalentemente su testi in lingua inglese. Questo crea una distorsione significativa per chi lavora con l'italiano. Gli embedding "vedono" il mondo attraverso una lente anglofona, e alcune sfumature specifiche della cultura italiana possono non essere catturate adeguatamente.

Per esempio, il concetto di "campanilismo" — l'orgoglio e l'attaccamento alla propria città o al proprio quartiere — è profondamente italiano e non ha un equivalente diretto in inglese. Un sistema di embedding addestrato prevalentemente su testi anglosassoni potrebbe non catturare la ricchezza semantica di questo termine. Lo stesso vale per concetti come "arte di arrangiarsi", "dolce far niente" o le sottili differenze tra "trattoria", "osteria" e "ristorante" nella cultura gastronomica italiana.

Per le aziende italiane che vogliono sfruttare al meglio gli embedding, è importante scegliere modelli che includano una quantità significativa di testo italiano nel loro addestramento, oppure effettuare un fine-tuning (addestramento aggiuntivo) su dati specifici del proprio dominio.

Costi computazionali

Generare embedding, soprattutto con i modelli più avanzati, richiede risorse computazionali significative. Convertire milioni di documenti aziendali in embedding vettoriali può richiedere ore di calcolo su hardware specializzato (GPU). E questi vettori devono poi essere memorizzati in database specifici (i cosiddetti vector database) che occupano spazio e richiedono manutenzione.

Per una grande azienda, questi costi sono trascurabili. Per una piccola impresa artigiana toscana, possono essere un ostacolo. Fortunatamente, i costi sono in rapida diminuzione e esistono soluzioni cloud che permettono di accedere a embedding di alta qualità a costi contenuti, pagando solo per l'uso effettivo.

L'opacità della rappresentazione

Infine, c'è un limite epistemologico. Gli embedding sono opachi: un vettore di 1.536 numeri non è interpretabile da un essere umano. Non possiamo guardare un vettore e dire "ah, questa dimensione rappresenta la formalità, quest'altra la concretezza". Possiamo osservare i risultati — le parole vicine, le analogie che emergono — ma non possiamo ispezionare il meccanismo interno con la stessa trasparenza con cui possiamo leggere un dizionario.

Questa opacità non invalida l'utilità degli embedding, ma richiede un approccio empirico: valutare i risultati, non fidarsi ciecamente del processo. Come per molti strumenti di intelligenza artificiale, la regola d'oro è "verifica, non presumere".

Conclusioni

Gli embedding semantici sono una delle innovazioni più importanti e meno conosciute dell'intelligenza artificiale moderna. Sono il meccanismo invisibile che permette ai modelli linguistici di "comprendere" il significato, alle ricerche di trovare risultati pertinenti, ai sistemi di raccomandazione di suggerire prodotti rilevanti.

L'idea alla base è tanto semplice quanto potente: rappresentare il significato come posizione in uno spazio matematico. Parole simili sono vicine, parole diverse sono lontane. Relazioni complesse come analogie, gerarchie e sfumature di significato emergono naturalmente dalla geometria dello spazio.

Per le imprese italiane, gli embedding aprono possibilità concrete: ricerca semantica nei documenti aziendali, assistenti virtuali che comprendono il linguaggio naturale dei clienti, analisi automatica del feedback, sistemi RAG che rispondono sulla base dei dati reali dell'azienda. Non sono tecnologie futuristiche: sono disponibili oggi, a costi accessibili.

Ma è fondamentale usarli con consapevolezza. Gli embedding ereditano i bias dei dati su cui sono addestrati. Funzionano meglio per le lingue e le culture dominanti nei dati di addestramento. E la loro opacità richiede una validazione costante dei risultati.

"Gli embedding sono il vocabolario segreto dell'intelligenza artificiale: un linguaggio fatto di numeri che cattura, con sorprendente fedelta', le sfumature del linguaggio fatto di parole."
— Centro Studi CID

Il futuro degli embedding è ricco di promesse. I modelli multimodali stanno estendendo lo stesso principio a immagini, suoni e video, creando spazi vettoriali dove una foto del Ponte Vecchio, la parola "Firenze" e una melodia rinascimentale possono trovarsi vicine. È un mondo dove il significato, in tutte le sue forme, diventa misurabile, confrontabile, computabile.

Comprendere gli embedding non è solo un esercizio intellettuale. È la chiave per capire come funziona l'intelligenza artificiale che usiamo ogni giorno — e per usarla meglio, con più consapevolezza e più efficacia.