Embeddings
Gli embedding sono vettori appresi che collocano testi, immagini o elementi simili vicini tra loro. Panoramica di come vengono creati, confrontati e cercati su larga scala.
Un embedding è un vettore appreso di numeri che rappresenta un elemento, come una parola, un'immagine, un prodotto o un utente, in modo che gli elementi con significato o contenuto simili abbiano vettori vicini. La distanza in questo spazio vettoriale diventa una misura di somiglianza, che permette al software di cercare, raggruppare, consigliare e classificare confrontando i vettori invece dei pixel o delle stringhe grezze. Gli embedding sono anche la rappresentazione operativa all'interno delle reti neurali: un modello linguistico di grandi dimensioni (LLM) converte ogni token in un embedding prima del primo livello transformer, mentre un modello di visione trasforma un'immagine in vettori di caratteristiche tramite il proprio backbone. Gli embedding usati per la ricerca hanno in genere da alcune centinaia a qualche migliaio di dimensioni, molte meno dei valori dell'input grezzo.
Come vengono creati gli embedding#
Gli embedding derivano da due tipi di componenti appresi:
- Tabelle di lookup: Per elementi discreti come token, ID di prodotti o ID di utenti, un livello di embedding memorizza una riga apprendibile per ogni elemento; cercando un elemento si ottiene la riga corrispondente.
nn.Embeddingdi PyTorch è una tabella di questo tipo. Le righe iniziano con valori casuali e vengono aggiornate tramite retropropagazione insieme al resto del modello, quindi gli elementi che svolgono ruoli simili nel compito di addestramento tendono ad avere vettori simili. - Encoder: Per immagini, audio e testo libero, una rete mappa l'intero input in un vettore, spesso eseguendo il pooling delle mappe di caratteristiche di una CNN o leggendo i token di output di un transformer. Gli encoder addestrati per un compito come la classificazione producono embedding utili come sottoprodotto; quelli addestrati con l'apprendimento contrastivo modellano direttamente lo spazio degli embedding, come fa CLIP collocando immagini e relative didascalie in un unico spazio condiviso.
Word2vec, pubblicato da Tomas Mikolov e colleghi di Google nel 2013, ha mostrato quanta struttura questo tipo di addestramento riesca a catturare. Nei suoi vettori delle parole, vector("King") − vector("Man") + vector("Woman") è più vicino a vector("Queen"), e i vettori preaddestrati di Google News rilasciati con il modello comprendono 3 milioni di parole ed espressioni in 300 dimensioni.
Confronto tra embedding#
La similarità coseno confronta le direzioni di due vettori e varia da −1 a 1. Anche il prodotto scalare tiene conto delle loro lunghezze, mentre la distanza euclidea misura la distanza in linea retta tra i due. Molti sistemi normalizzano gli embedding a lunghezza unitaria, rendendo identici la similarità coseno e il prodotto scalare e ordinando i vicini nello stesso modo della distanza euclidea. I modelli YOLO26 generano embedding delle immagini tramite embed(), che salta la testa di predizione e restituisce un vettore per immagine applicando il pooling medio all'output del penultimo livello del modello:
import torch.nn.functional as F
from ultralytics import YOLO
from ultralytics.utils import ASSETS
# Load a YOLO26 classification model trained on ImageNet
model = YOLO("yolo26n-cls.pt")
# embed() returns one pooled feature vector per image instead of predictions
bus, zidane = model.embed([ASSETS / "bus.jpg", ASSETS / "zidane.jpg"])
print(f"Embedding length: {bus.shape[0]}")
# Higher cosine similarity means the model sees more similar content
print(f"Cosine similarity: {F.cosine_similarity(bus, zidane, dim=0).item():.3f}")Per YOLO26n-cls, l'embedding è un vettore a 256 dimensioni, l'output aggregato del blocco di attenzione che conclude il suo backbone, e la seconda riga stampa la similarità coseno delle due foto di esempio incluse. Eseguire lo stesso confronto sugli embedding memorizzati di un'intera raccolta è il modo in cui una ricerca di immagini simili ordina i risultati.
Ricerca di embedding su larga scala#
Confrontare una query con milioni di vettori memorizzati uno alla volta è troppo lento, quindi i database vettoriali creano indici approssimati dei vicini più prossimi, come gli indici HNSW basati su grafi o gli indici a file invertito, che trovano corrispondenze vicine esaminando solo una piccola parte della raccolta. La raccolta viene convertita in embedding una sola volta; ogni query viene convertita in embedding al momento della ricerca usando lo stesso encoder, oppure l'encoder di testo associato quando si cercano immagini tramite testo:
Lo spazio di archiviazione influenza la progettazione tanto quanto l'accuratezza. L'apprendimento di rappresentazioni Matryoshka addestra embedding le cui dimensioni iniziali funzionano autonomamente, così i vettori possono essere troncati per risparmiare spazio; la quantizzazione vettoriale comprime ogni vettore in pochi byte. La ricerca ibrida combina la similarità degli embedding con la corrispondenza delle parole chiave.
Applicazioni#
- Ricerca semantica e generazione aumentata dal recupero (RAG): Gli embedding di testo recuperano i passaggi in base al significato, quindi una query su "richieste di risarcimento per assicurazione auto" trova anche documenti che parlano di "polizza auto"; RAG passa i passaggi recuperati a un LLM come contesto.
- Sistemi di raccomandazione: Utenti ed elementi vengono convertiti in embedding nello stesso spazio, e gli elementi più vicini al vettore di un utente diventano candidati da consigliare.
- Classificazione zero-shot: I modelli con uno spazio condiviso tra immagini e testo classificano un'immagine confrontando il suo embedding con gli embedding dei nomi delle classi espressi come testo.
- Reidentificazione degli oggetti: Gli embedding dell'aspetto collegano la stessa persona o lo stesso veicolo tra telecamere diverse e attraverso interruzioni del tracciamento.
- Esplorazione del dataset: proiettare gli embedding in due dimensioni con t-SNE o UMAP rivela cluster, quasi duplicati e valori anomali in un dataset, come fa il pannello Clustering per i dataset di Ultralytics Platform.
Embedding e termini correlati#
- Spazio latente: Lo spazio vettoriale occupato dagli embedding. "Rappresentazione latente" ed "embedding" sono spesso usati come sinonimi.
- Estrazione di caratteristiche: Qualsiasi processo che trasforma dati grezzi in caratteristiche. Un embedding è un vettore di caratteristiche appreso in modo che le distanze tra vettori abbiano un significato.
- Tokenizzazione: Suddivide il testo in token e mappa ciascuno a un ID intero. Il livello di embedding mappa poi ogni ID in un vettore.
- Codifica one-hot: Rappresenta l'elemento i di un vocabolario come un vettore di zeri con un 1 in posizione i, così ogni coppia di elementi è equidistante e la codifica non esprime alcuna similarità. Moltiplicare un vettore one-hot per la matrice dei pesi di una tabella di embedding seleziona esattamente una riga: è il risultato restituito da una ricerca nell'embedding senza eseguire la moltiplicazione.










