Embeddings
Los embeddings son vectores aprendidos que sitúan cerca entre sí textos, imágenes o elementos similares. Incluye cómo se crean, comparan y buscan a gran escala.
Un embedding es un vector aprendido de números que representa un elemento, como una palabra, una imagen, un producto o un usuario, de modo que los elementos con significado o contenido similares tengan vectores próximos. La distancia en este espacio vectorial sirve como medida de similitud, lo que permite al software buscar, agrupar, recomendar y clasificar mediante la comparación de vectores en vez de píxeles o cadenas sin procesar. Los embeddings también son la representación de trabajo de las redes neuronales: un modelo de lenguaje grande (LLM) convierte cada token en un embedding antes de su primera capa transformer, y un modelo de visión transforma una imagen en vectores de características mediante su red troncal. Los embeddings usados para búsquedas suelen tener entre unos cientos y unos miles de dimensiones, muchas menos que los valores de la entrada sin procesar.
Cómo se crean los embeddings#
Los embeddings proceden de dos tipos de componentes aprendidos:
- Tablas de consulta: Para elementos discretos, como tokens, ID de productos o ID de usuarios, una capa de embeddings almacena una fila que se puede aprender por cada elemento, y consultar un elemento devuelve su fila. La tabla
nn.Embeddingde PyTorch es una de ellas. Sus filas empiezan con valores aleatorios y se actualizan mediante retropropagación, junto con el resto del modelo, por lo que los elementos que desempeñan funciones similares en la tarea de entrenamiento tienden a generar vectores similares. - Codificadores: Para imágenes, audio y texto libre, una red transforma toda la entrada en un vector, a menudo mediante la agrupación de los mapas de características de una CNN o la lectura de los tokens de salida de un Transformer. Los codificadores entrenados para una tarea como la clasificación producen embeddings útiles como resultado secundario, y los codificadores entrenados con aprendizaje contrastivo dan forma directamente al espacio de embeddings, como hace CLIP al situar las imágenes y sus pies de foto en un mismo espacio compartido.
Word2vec, publicado por Tomas Mikolov y sus colegas de Google en 2013, mostró cuánta estructura captura este tipo de entrenamiento. En sus vectores de palabras, vector("Rey") − vector("Hombre") + vector("Mujer") queda más cerca de vector("Reina"), y los vectores preentrenados de Google News que publicó abarcan 3 millones de palabras y expresiones en 300 dimensiones.
Comparación de embeddings#
La similitud coseno compara las direcciones de dos vectores y oscila entre −1 y 1. El producto escalar también tiene en cuenta sus longitudes, y la distancia euclídea mide la distancia en línea recta entre ellos. Muchos sistemas normalizan los embeddings a una longitud unitaria, lo que hace que la similitud coseno y el producto escalar sean idénticos y ordena los vecinos igual que la distancia euclídea. Los modelos YOLO26 generan embeddings de imágenes mediante embed(), que omite la cabeza de predicción y devuelve un vector por imagen al aplicar una agrupación media a la salida de la penúltima capa del modelo:
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}")En YOLO26n-cls, la incrustación es un vector de 256 dimensiones, la salida agrupada del bloque de atención que cierra su backbone, y la segunda línea muestra la similitud coseno entre las dos fotos de ejemplo incluidas. Comparar de la misma forma las incrustaciones almacenadas de toda una colección permite que una búsqueda de imágenes similares ordene los resultados.
Búsqueda de embeddings a gran escala#
Comparar una consulta con millones de vectores almacenados, uno por uno, es demasiado lento, así que las bases de datos vectoriales crean índices aproximados de vecinos más cercanos, como los índices HNSW basados en grafos o los índices de archivos invertidos, que encuentran coincidencias cercanas examinando solo una pequeña parte de la colección. La colección se convierte en embeddings una vez y cada consulta se convierte en embedding en el momento de la búsqueda con el mismo codificador, o con el codificador de texto emparejado cuando se buscan imágenes mediante texto:
El almacenamiento influye en el diseño tanto como la precisión. El aprendizaje de representaciones Matryoshka entrena embeddings cuyas dimensiones iniciales funcionan por sí solas, de modo que los vectores se pueden truncar para ahorrar espacio, y la cuantización vectorial comprime cada vector en unos pocos bytes. La búsqueda híbrida combina la similitud de embeddings con la búsqueda por palabras clave.
Aplicaciones#
- Búsqueda semántica y generación aumentada por recuperación (RAG): Los embeddings de texto recuperan pasajes por su significado, así que una consulta sobre «reclamaciones de seguros de automóviles» también encuentra documentos que hablan de «pólizas de coche», y RAG proporciona los pasajes recuperados a un LLM como contexto.
- Sistemas de recomendación: Los usuarios y los elementos se representan en un mismo espacio, y los elementos más cercanos al vector de un usuario se convierten en candidatos para recomendar.
- Clasificación de tiro cero: Los modelos con un espacio compartido para imágenes y texto clasifican una imagen comparando su embedding con los embeddings de los nombres de clase escritos como texto.
- Reidentificación de objetos: Los embeddings de apariencia permiten asociar a la misma persona o vehículo entre distintas cámaras y en los intervalos de una trayectoria.
- Exploración de conjuntos de datos: proyectar las incrustaciones en dos dimensiones con t-SNE o UMAP revela agrupaciones, duplicados aproximados y valores atípicos en un conjunto de datos, como hace el panel Clustering con los conjuntos de datos de Ultralytics Platform.
Embeddings y términos relacionados#
- Espacio latente: El espacio vectorial que ocupan los embeddings. «Representación latente» y «embedding» suelen utilizarse como sinónimos.
- Extracción de características: Cualquier proceso que transforma datos sin procesar en características. Un embedding es un vector de características aprendido para que las distancias entre vectores tengan significado.
- Tokenización: Divide el texto en tokens y asigna a cada uno un ID entero. A continuación, la capa de embeddings transforma cada ID en un vector.
- Codificación one-hot: Representa el elemento i de un vocabulario como un vector de ceros con un 1 en la posición i, de modo que todos los pares de elementos están a la misma distancia y la codificación no contiene información de similitud. Multiplicar un vector one-hot por la matriz de pesos de una tabla de embeddings selecciona exactamente una fila, que es el resultado que devuelve una consulta de embedding sin realizar la multiplicación.










