Guide sull’IA · 10 min di lettura

Cos'è un embedding nell'IA? Vettori, similarità e RAG

Un embedding trasforma il testo in un vettore che avvicina significati simili. Scopri embedding di parole e frasi, similarità coseno e RAG.

Uno spazio vettoriale indaco scuro con tre gruppi di punti luminosi e una scintilla di ricerca più brillante vicino al gruppo color ambra

Un embedding nell’IA è un vettore numerico, cioè una lista di numeri in virgola mobile, che rappresenta testo o altri dati in uno spazio matematico in cui significati simili sono vicini. I modelli di apprendimento automatico usano gli embedding vettoriali per misurare la relazione tra concetti, alimentare la ricerca semantica e recuperare contesto pertinente nei sistemi RAG.

Quando spiego gli embedding agli ingegneri che costruiscono la loro prima pipeline di ricerca, chiedo di immaginare una mappa in cui gli argomenti prendono il posto della geografia. La ricerca per parole chiave verifica se due stringhe condividono esattamente le stesse lettere, ma fallisce se un documento parla di cane e un altro di cucciolo. Un embedding vettoriale colma questa distanza trasformando il significato in coordinate, così che il software possa confrontare idee usando la geometria di base.

Come rappresenta il significato un embedding vettoriale?

Un embedding vettoriale rappresenta il significato convertendo input complessi, come parole, frasi o immagini, in coordinate all’interno di uno spazio di embedding multidimensionale. Secondo il glossario delle definizioni di IA di Stanford HAI, gli embedding collocano elementi simili vicini nello spazio matematico: parole come cane e cucciolo ricevono vettori vicini, mentre cane e toast finiscono lontani.

Nella guida agli embedding di OpenAI, un embedding è definito come un vettore di numeri in virgola mobile la cui distanza misura la relazione tra stringhe di testo. Piccole distanze tra due vettori indicano una relazione forte, mentre grandi distanze indicano una relazione debole. IBM Think presenta lo stesso principio per diversi tipi di dati: gli embedding vettoriali trasformano input non matematici come testo o immagini in array numerici elaborabili dai modelli di apprendimento automatico, facendo sì che elementi più simili nel mondo reale ricevano vettori più simili.

Il Machine Learning Crash Course di Google aggiunge tre proprietà pratiche degli spazi di embedding che influenzano il lavoro degli ingegneri:

  • Proiezione a dimensioni inferiori: I modelli proiettano spesso input grezzi ad alta dimensionalità in uno spazio di embedding più denso e con meno dimensioni, dove la distanza può essere calcolata matematicamente come similarità relativa.
  • Coordinate individuali opache: Le singole dimensioni di un embedding appreso sono raramente interpretabili come concetti chiari etichettati a mano. Il significato risiede nella posizione e nella direzione combinate di tutti i numeri dell’array.
  • Specificità del compito: Gli embedding sono generalmente addestrati per compiti specifici: uno spazio vettoriale ottimizzato per il recupero semantico del testo è quindi diverso da uno addestrato per i consigli sui prodotti.

Poiché i vettori codificano la relazione anziché l’ortografia esatta, OpenAI elenca sei compiti comuni in produzione per gli embedding: ricerca (ordinamento dei risultati in base alla pertinenza rispetto alla query), clustering, raccomandazioni, rilevamento delle anomalie, misurazione della diversità e classificazione (assegnazione di una stringa all’etichetta più vicina).

Embedding di parole, frasi e documenti

Gli embedding di parole, frasi e documenti differiscono per la quantità di testo che un modello comprime in un singolo vettore. La scelta della granularità corretta determina se il sistema tiene traccia di singoli termini, brevi query degli utenti o passaggi di più paragrafi.

Embedding di parole

Un embedding di parola è un vettore denso assegnato a una singola parola o a un token di IA. Gli embedding statici di parole come word2vec, introdotto da Tomas Mikolov e colleghi nel 2013, assegnano un vettore globale fisso a ogni parola di un vocabolario. Come spiega il Machine Learning Crash Course di Google, i modelli addestrati a prevedere il contesto di una parola assumono che parole presenti in contesti simili abbiano significati correlati.

Gli embedding statici di parole hanno un limite noto: un solo vettore deve rappresentare contemporaneamente tutti i significati di una parola, come bank nel senso di istituto finanziario e bank nel senso di riva di un fiume. Google osserva inoltre, citando Deep Learning with Python di François Chollet, che gli embedding statici di parole usavano comunemente 256, 512 o 1024 dimensioni.

Embedding di frasi

Un embedding di frase mappa un’intera espressione o frase in un solo vettore invece di produrre vettori separati per ogni parola. IBM osserva che gli embedding di frasi catturano il significato semantico combinato di un’espressione completa e sono comunemente usati per codificare le query degli utenti nei processi di ricerca e risposta alle domande. Codificare l’intera frase aiuta a distinguere stringhe che contengono parole identiche in ordine diverso.

Embedding di documenti

Un embedding di documento rappresenta un passaggio più lungo, una sezione di un articolo o un intero blocco di documento come un vettore. Un semplice approccio di base combina i vettori delle parole calcolandone la media, anche se questo metodo perde spesso struttura e sfumature. I modelli di embedding testuali progettati allo scopo codificano l’intero passaggio in un solo passaggio. Nei sistemi di recupero reali, i team raramente comprimono un intero libro in un vettore; dividono invece i file lunghi in blocchi più piccoli e generano un embedding per ciascun blocco.

Tipo di embedding Granularità dell’input Unità vettoriale tipica Ruolo principale e limite
Embedding di parola Singola parola o token Un vettore per voce del vocabolario Cattura la similarità tra termini; modelli statici come word2vec uniscono tutti i significati di una parola in un vettore
Embedding di frase Espressione o singola frase Un vettore per query o riga Cattura l’intento a livello di espressione; usato comunemente per query di ricerca e risposta alle domande
Embedding di documento Passaggio o blocco di documento Un vettore per blocco o documento Supporta il recupero nel corpus; i documenti lunghi devono solitamente essere divisi prima dell’embedding

Cosa significano le dimensioni di un embedding?

Le dimensioni di un embedding misurano la lunghezza di un vettore, cioè quanti numeri in virgola mobile un modello produce per ogni input. I vettori più grandi hanno maggiore capacità di codificare sottili differenze semantiche, mentre quelli più piccoli riducono l’uso di memoria, la dimensione dell’indice e il calcolo necessario per i confronti.

I modelli di embedding di terza generazione di OpenAI illustrano direttamente questo compromesso. Al 14 novembre 2026, la documentazione ufficiale di OpenAI stabilisce lunghezze di output predefinite di 1536 dimensioni per text-embedding-3-small e 3072 dimensioni per text-embedding-3-large. Entrambi i modelli accettano un parametro opzionale dimensions nella richiesta API, che permette agli sviluppatori di richiedere un vettore più corto senza perdere le proprietà dell’embedding che rappresentano i concetti.

OpenAI ha addestrato entrambi i modelli di terza generazione affinché i numeri finali possano essere rimossi senza problemi. Secondo la guida agli embedding di OpenAI al 14 novembre 2026, ridurre text-embedding-3-large a 256 dimensioni supera comunque, nel benchmark MTEB, un embedding text-embedding-ada-002 non ridotto di 1536 dimensioni. Se un database vettoriale impone un limite rigido di 1024 dimensioni, OpenAI osserva che gli sviluppatori possono comunque chiamare text-embedding-3-large impostando dimensions a 1024, sacrificando una piccola quantità di precisione per ottenere compatibilità e ridurre lo spazio di archiviazione.

Gli sviluppatori che accorciano manualmente i vettori dopo averli ricevuti da un’API devono applicare in seguito la normalizzazione della lunghezza L2. Passare il parametro dimensions direttamente durante la creazione dell’embedding evita l’elaborazione manuale successiva ed è la procedura consigliata da OpenAI.

Come confronta gli embedding la similarità coseno?

La similarità coseno confronta due vettori di embedding misurando il coseno dell’angolo tra essi. Poiché valuta l’orientamento nello spazio di embedding anziché la grandezza grezza dei vettori, due passaggi che puntano nella stessa direzione semantica ottengono un punteggio alto anche se le loro lunghezze differiscono.

Per vettori generici, la similarità coseno varia da -1 a 1:

  • 1: Entrambi i vettori puntano esattamente nella stessa direzione, indicando la massima similarità.
  • 0: Entrambi i vettori sono ortogonali, indicando significati non correlati.
  • -1: I due vettori puntano in direzioni opposte.

La distanza euclidea offre una metrica alternativa misurando la distanza in linea retta tra due punti nello spazio di embedding. Quando gli sviluppatori chiedono quale funzione di distanza scegliere, la FAQ sugli embedding di OpenAI raccomanda esplicitamente la similarità coseno, osservando che la scelta della metrica in genere fa poca differenza sui vettori OpenAI. Ogni embedding restituito dall’API di OpenAI è già normalizzato a lunghezza 1: ciò significa che la similarità coseno equivale al prodotto scalare e che similarità coseno e distanza euclidea producono classifiche di ricerca identiche.

Come si usano gli embedding nel RAG?

Gli embedding alimentano la generazione aumentata dal recupero (RAG) confrontando la domanda di un utente con blocchi di documenti memorizzati prima che un modello linguistico scriva una risposta. Invece di affidarsi solo ai fatti memorizzati durante il preaddestramento, una pipeline RAG cerca in raccolte di testi privati o aggiornati usando la similarità vettoriale.

In linea con le indicazioni di OpenAI sulla risposta alle domande e sulla ricerca testuale, una pipeline RAG standard segue cinque passaggi:

  1. Dividere il corpus in blocchi: Suddividi i documenti sorgente lunghi in passaggi più piccoli, in modo che ogni vettore rappresenti un’idea circoscritta. La nostra guida su come dividere i documenti per RAG illustra strategie specifiche di suddivisione.
  2. Creare embedding e indicizzare i blocchi: Invia ogni blocco a un modello di embedding e memorizza i vettori risultanti insieme al testo originale. OpenAI consiglia di memorizzare i vettori in un database vettoriale per cercare rapidamente in grandi raccolte.
  3. Creare l’embedding della query dell’utente: Passa la domanda ricevuta attraverso lo stesso identico modello di embedding, affinché la query si trovi nello stesso spazio matematico dei blocchi indicizzati.
  4. Recuperare i vicini più prossimi: Calcola punteggi di similarità, come la similarità coseno o il prodotto scalare di vettori normalizzati, e recupera i blocchi più corrispondenti.
  5. Passare il contesto al modello: Inserisci i blocchi di testo recuperati nel prompt del modello linguistico, affinché possa generare una risposta basata sui tuoi materiali sorgente.

La dimensione dei blocchi e le soglie di recupero variano molto in base alla struttura dei documenti e ai tipi di query; i team dovrebbero quindi verificare le strategie di suddivisione sul proprio corpus effettivo invece di affidarsi a un’unica dimensione universale.

Modelli di embedding OpenAI, limiti e prezzi

Al 14 novembre 2026, l’API di embedding di OpenAI offre tre modelli testuali principali con limiti fissi di token e prezzi per token. Gli sviluppatori generano vettori inviando una richiesta POST https://api.openai.com/v1/embeddings contenente input e model, con dimensions opzionale (per i modelli di terza generazione) e encoding_format (float per impostazione predefinita, oppure base64).

Tutti e tre i modelli di embedding OpenAI elencati condividono gli stessi limiti per richiesta: un massimo di 8.192 token per singolo input, fino a 2.048 elementi per array di input e al massimo 300.000 token complessivi sommando tutti gli input di una chiamata API. Le stringhe vuote vengono rifiutate. Per contare i token localmente prima di inviare le richieste, OpenAI consiglia di usare la codifica cl100k_base con tiktoken. Tutti e tre i modelli supportano anche la Batch API di OpenAI.

Modello Dimensioni predefinite Token di input massimi Prezzo per 1 milione di token (14 novembre 2026) Pagine approssimative per dollaro (~800 token/pagina) Punteggio MTEB pubblicato da OpenAI
text-embedding-3-small 1536 8.192 $0.02 62.500 62.3%
text-embedding-3-large 3072 8.192 $0.13 9.615 64.6%
text-embedding-ada-002 1536 8.192 $0.10 12.500 61.0%

Questi dati provengono direttamente dalla pagina dei prezzi di OpenAI e dalla guida agli embedding al 14 novembre 2026. OpenAI descrive text-embedding-3-small come un successore migliorato di text-embedding-ada-002 e presenta text-embedding-3-large come il suo modello più capace sia per compiti in inglese sia in altre lingue. Le percentuali MTEB sopra riportate vanno considerate esclusivamente come benchmark pubblicati da OpenAI nella propria documentazione a questa data, non come una classifica indipendente e aggiornata di tutti i fornitori di embedding del settore.

FAQ

Qual è la differenza tra un embedding vettoriale e un token?

Un token è un frammento di testo in input, come una parola o parte di una parola, che un modello legge e per cui addebita un costo. Un embedding vettoriale è l’array denso di numeri in virgola mobile prodotto dal modello per rappresentare il significato di uno o più token. Puoi fornire fino a 8.192 token a un modello di embedding OpenAI per ricevere un vettore.

Il parametro dimensions di OpenAI riduce la precisione degli embedding?

Accorciare un vettore con il parametro dimensions sacrifica una piccola quantità di precisione in cambio di costi inferiori di archiviazione e calcolo. OpenAI afferma che i suoi modelli di terza generazione sono stati addestrati in modo da poter eliminare i numeri finali preservando la rappresentazione dei concetti. Al 14 novembre 2026, OpenAI riferisce che un vettore text-embedding-3-large di 256 dimensioni supera ancora su MTEB un vettore text-embedding-ada-002 non ridotto di 1536 dimensioni.

Devo usare la similarità coseno o la distanza euclidea per gli embedding OpenAI?

La similarità coseno è la metrica consigliata da OpenAI, anche se entrambe le funzioni danno classifiche identiche sui vettori OpenAI. Poiché gli embedding OpenAI sono normalizzati a lunghezza 1, la similarità coseno è matematicamente equivalente al prodotto scalare e la distanza euclidea mantiene esattamente lo stesso ordine. Per vettori generici non normalizzati provenienti da altre fonti, la similarità coseno isola l’angolo anziché la grandezza.

I modelli di embedding conoscono gli eventi recenti?

I modelli di embedding di terza generazione di OpenAI, text-embedding-3-small e text-embedding-3-large, non conoscono gli eventi avvenuti dopo settembre 2021. OpenAI osserva nella sua FAQ sugli embedding che questo limite di conoscenza è generalmente meno vincolante per gli embedding che per i modelli di generazione del testo, anche se alcune query specifiche di un dominio o successive al limite possono comunque produrre corrispondenze di qualità inferiore.

A chi appartengono gli embedding generati tramite l’API di OpenAI?

Secondo la FAQ ufficiale di OpenAI, i clienti possiedono sia gli input che inviano sia i vettori di output generati dai modelli OpenAI, inclusi gli embedding. OpenAI afferma che la proprietà si applica a tutti i suoi endpoint di embedding, mentre gli utenti restano responsabili di garantire che il loro uso dell’API rispetti la legge applicabile.

Fonti

Scritto da

Chunyu Cai

Chunyu Cai è l’amministratore delegato di Lotook, LLC e un imprenditore che scrive di modelli di IA, agenti e di come cambiano il lavoro quotidiano. Chunyu Cai ha conseguito un master presso Imperial College London.