Capitolo 1 — Embedding: il significato diventa geometria

Partiamo dal problema che questo livello risolve. Hai mille documenti aziendali e vuoi che l'AI risponda a domande su di essi. Metterli tutti nel contesto non si può (troppi) e comunque sarebbe uno spreco: per ogni domanda ne servono due o tre, non mille. Ti serve un modo per trovare i documenti giusti per quella domanda. La ricerca per parole chiave — quella dei vecchi motori — fallisce spesso: chi chiede "non riesco ad accedere al mio account" non usa nessuna delle parole del documento intitolato "procedura di reset della password". Il significato coincide, le parole no.

La soluzione è una delle idee più eleganti del settore: gli embedding. Un modello di embedding trasforma un testo in un vettore — una lunga lista di numeri, centinaia o migliaia — costruito con una proprietà magica: testi con significato simile producono vettori vicini. Immagina uno spazio con mille dimensioni dove ogni testo è un punto: "non riesco ad accedere" e "come resetto la password" finiscono a pochi millimetri l'uno dall'altro, mentre "ricetta della carbonara" sta in un altro quartiere. La vicinanza si misura con la matematica (similarità del coseno, se vuoi il nome), ma l'intuizione è tutta qui: il significato è diventato una posizione, e cercare per significato è diventato cercare i punti più vicini.

Per conservare milioni di questi punti e trovare in fretta i più vicini a una domanda, esistono i database vettoriali: ChromaDB per iniziare (gratuito, locale, cinque righe di Python), Pinecone, Weaviate o pgvector quando si fa sul serio. Il loro mestiere è uno solo: "dammi i K testi più vicini a questo" — e farlo in millisecondi.

L'esperimento del giorno. Prendi dieci frasi tue — alcune parenti strette nel significato ma con parole diverse, altre estranee — calcola i loro embedding (via API o con sentence-transformers in locale) e misura le similarità a coppie. Verifica che la geometria rispecchi il significato: è il momento in cui l'idea smette di essere astratta.