Qué es un embedding vectorial y para qué sirve
Índice de contenidos
- Puntos clave
- Cómo se genera un embedding
- Similitud coseno: la medida de referencia
- Modelos disponibles en 2026
- Cuándo usar embeddings
- Preguntas frecuentes
- ¿Cuántas dimensiones necesita un embedding para funcionar bien?
- ¿Es lo mismo un embedding que un modelo de lenguaje grande?
- ¿Puedo generar embeddings en mi propio equipo sin depender de APIs externas?
- Conclusión
Un embedding vectorial convierte texto en números que preservan su significado semántico: aprende cómo funcionan, para qué sirven y cómo elegir el modelo.
El embedding vectorial es la técnica que convierte texto, imágenes o cualquier dato en una lista de números que preserva su significado semántico. Dos frases con el mismo sentido terminan cerca en ese espacio matemático; dos frases sin relación, lejos. Sobre este principio se construyen el RAG, la búsqueda semántica y los sistemas de recomendación modernos. Esta misma explicación está disponible en inglés para quien prefiera ese idioma.
Puntos clave
- Un embedding es un vector de números reales en un espacio de alta dimensión (de 128 a 3072 dimensiones).
- La cercanía entre vectores mide la similitud semántica: se calcula con la similitud coseno o el producto escalar.
- Los modelos actuales aprenden esas representaciones entrenando con miles de millones de pares de textos similares.
- Postgres con pgvector puede almacenar y consultar embeddings sin una base de datos vectorial separada.
- La elección del modelo depende del idioma, el dominio y el margen de latencia.
Cómo se genera un embedding
Un modelo de lenguaje recibe una secuencia de tokens y produce, en su última capa, un vector de números reales. Ese vector captura el contexto semántico del texto de entrada: si el modelo ha aprendido que "perro" y "can" aparecen en contextos similares, sus vectores estarán próximos.
Los modelos basados en Transformers generan embeddings contextuales: el mismo token produce vectores distintos según el texto que le rodea. La guía de Hugging Face[1] explica este comportamiento con ejemplos prácticos que se pueden reproducir en tu propio equipo.
El trabajo fundacional de Mikolov et al., publicado en Word2Vec (2013)[2], demostró que se podía codificar el significado de las palabras en vectores densos y que las relaciones semánticas emergían de forma aritmética. El vector resultante de restar "hombre" a "rey" y sumar "mujer" apunta, con sorprendente precisión, hacia "reina". Como señalaron los propios autores: "Each relationship is characterized by a relation-specific vector offset. For example, if we denote the word vector for word ‘Paris’ as vec(‘Paris’), then the following relationship holds: vec(‘Paris’) – vec(‘France’) + vec(‘Italy’) is close to vec(‘Rome’)." (Mikolov et al., 2013)
La documentación de embeddings de OpenAI resume el principio con claridad: "An embedding is a vector (list) of floating point numbers. The distance between two vectors measures their relatedness. Small distances suggest high relatedness and large distances suggest low relatedness."
Similitud coseno: la medida de referencia
Para comparar dos embeddings se usa habitualmente la similitud coseno: el coseno del ángulo entre los dos vectores. Vale 1 si apuntan en la misma dirección (máxima similitud) y 0 si son perpendiculares (sin relación).
import numpy as np
def cosine_similarity(a, b):
return np.dot(a, b) / (np.linalg.norm(a) * np.linalg.norm(b))
En bases de datos como Postgres, esta operación se optimiza con índices HNSW o IVFFlat. Si ya tienes Postgres en producción, en RAG con Postgres y pgvector explicamos cómo montar eso sin infraestructura adicional.
Modelos disponibles en 2026
La oferta se ha consolidado en tres familias. La tabla siguiente recoge los modelos más usados con sus dimensiones reales y el caso de uso donde cada uno encaja mejor:
| Modelo | Dimensiones | Mejor para |
|---|---|---|
text-embedding-3-small (OpenAI) |
1 536 | Búsqueda semántica general, coste bajo |
text-embedding-3-large (OpenAI) |
3 072 | Máxima precisión en inglés, RAG exigente |
all-MiniLM-L6-v2 (Sentence Transformers) |
384 | Prototipos rápidos, ejecución local |
paraphrase-multilingual-MiniLM-L12-v2 |
384 | Textos en español y otros idiomas |
Los modelos propietarios de OpenAI permiten reducir las dimensiones (1 536 a 512 para text-embedding-3-small, 3 072 a 1 536 para text-embedding-3-large) sin pérdida significativa de calidad, gracias a Matryoshka Representation Learning. Para proyectos que priorizan la privacidad o el coste de inferencia, all-MiniLM-L6-v2 con sus 384 dimensiones es el punto de partida habitual. La documentación oficial de embeddings de OpenAI[3] detalla los precios y el contexto máximo de cada variante.
Para proyectos con texto en español, paraphrase-multilingual-MiniLM-L12-v2 funciona bien sin necesidad de llamadas a APIs externas.
Cuándo usar embeddings
Los embeddings son la base de cuatro tipos de sistemas:
- Búsqueda semántica. En lugar de buscar por palabras exactas, el usuario busca por significado. Resulta útil en buscadores de documentación, bases de conocimiento y catálogos de producto.
- RAG (Retrieval-Augmented Generation). El modelo de lenguaje recupera fragmentos relevantes de una base de conocimiento antes de generar la respuesta. En el artículo sobre cómo construir un agente con el SDK de Anthropic vemos cómo integrar este patrón en sistemas en producción.
- Recomendación. Dos productos, artículos o canciones con embeddings próximos son candidatos naturales a recomendarse entre sí.
- Detección de anomalías y trazabilidad. Un punto muy alejado de sus vecinos en el espacio de embeddings puede indicar fraude, spam o un fallo de producción. Para sistemas que monitorizan agentes de IA, el artículo sobre observabilidad de agentes con OpenTelemetry describe cómo complementar los embeddings con métricas de traza.
Preguntas frecuentes
¿Cuántas dimensiones necesita un embedding para funcionar bien?
Depende del caso de uso. Con 384 dimensiones, modelos como all-MiniLM-L6-v2 funcionan bien para búsqueda semántica general en proyectos medianos. A partir de 1 536 dimensiones, los modelos de OpenAI capturan matices más finos y resultan adecuados para RAG exigente o clasificaciones complejas. Más dimensiones implican mayor coste de almacenamiento y latencia en la búsqueda, por lo que conviene medir con datos propios antes de elegir.
¿Es lo mismo un embedding que un modelo de lenguaje grande?
No. Un modelo de lenguaje grande (LLM) genera texto; un modelo de embeddings transforma texto en un vector numérico. Técnicamente, los modelos de embeddings suelen ser redes más pequeñas, entrenadas con objetivos de similitud en lugar de predicción de tokens. Muchos LLM incorporan internamente embeddings como representación intermedia, pero el producto que ofrecen es texto, no un vector exportable.
¿Puedo generar embeddings en mi propio equipo sin depender de APIs externas?
Sí. Herramientas como Ollama permiten ejecutar modelos de embeddings localmente en Apple Silicon o en una GPU dedicada. all-MiniLM-L6-v2 pesa menos de 100 MB y genera embeddings en milisegundos en un portátil moderno. La latencia será mayor que la de una API optimizada, pero el coste es cero y los datos no salen de tu infraestructura.
Conclusión
Un embedding vectorial no es más que una coordenada en un espacio donde la distancia equivale a la diferencia semántica. Entender este mecanismo es el punto de partida para trabajar con RAG, búsqueda semántica o cualquier sistema que necesite relacionar datos por su significado y no por sus palabras exactas. El siguiente paso natural es elegir un modelo, medir la latencia y decidir si almacenas los vectores en Postgres o en una solución especializada.