Embeddings: Convertir texto en vectores
Cómo funcionan los embeddings, por qué la similitud semántica es posible, y cómo elegir el modelo correcto para RAG en español.
Contenido de Curso Premium
Esta lección es parte de un curso premium. Mejora a Pro para desbloquear todos los cursos premium y su contenido.
- Acceso a todos los cursos premium
- Más de 1000 plantillas de skills de IA incluidas
- Contenido nuevo cada semana
🔄 En la lección anterior cortaste documentos en fragmentos con chunking recursivo. Ahora tienes cientos de fragmentos de texto. Pero las computadoras no entienden texto — entienden números. Necesitas convertir cada fragmento en algo que permita comparar significado matemáticamente.
Eso es exactamente lo que hacen los embeddings.
Lo que aprenderás
Al terminar esta lección entenderás cómo funcionan los embeddings, por qué permiten la búsqueda semántica y cómo elegir el modelo correcto — especialmente para RAG en español.
Qué es un embedding
Un embedding es un vector: una lista de números que representa el significado de un texto.
"¿Cómo devuelvo un producto?" → [0.23, -0.15, 0.87, ..., 0.41]
"Política de devoluciones" → [0.25, -0.12, 0.85, ..., 0.39]
"Horario de atención" → [0.71, 0.34, -0.22, ..., 0.15]
Los dos primeros textos tienen vectores similares porque hablan del mismo tema. El tercero es diferente — y sus números reflejan esa diferencia.
La similitud se mide con distancia coseno: un número entre 0 (nada que ver) y 1 (prácticamente idéntico). En el ejemplo:
- Devolución vs Política: ~0.95 (muy similares)
- Devolución vs Horario: ~0.30 (temas diferentes)
Cómo funcionan por dentro
No necesitas entender la arquitectura completa, pero vale saber esto:
Entrenamiento contrastivo — El modelo ve millones de pares de textos: “estos dos son similares, estos dos no.” Aprende a generar vectores cercanos para textos similares y lejanos para textos diferentes.
Dimensiones — Cada vector tiene un número fijo de dimensiones (1,536 es común). Más dimensiones = más capacidad para capturar matices. Menos dimensiones = más rápido y barato.
No entiende contenido — El modelo no “lee” tu texto como un humano. Transforma patrones estadísticos en posiciones geométricas. Pero el resultado práctico es sorprendentemente bueno para encontrar similitud semántica.
✅ Quick Check: ¿Qué pasa si generas embeddings de documentos con un modelo y luego buscas con otro modelo diferente? (Los resultados son basura. Cada modelo crea su propio espacio vectorial. Los vectores de OpenAI y los de Cohere no son comparables — las distancias no significan nada. Siempre usa el mismo modelo para documentos y consultas.)
Modelos de embedding: Cuál elegir
| Modelo | Dimensiones | Multilingüe | Costo | Mejor para |
|---|---|---|---|---|
| OpenAI text-embedding-3-small | 1,536 | Bueno | $0.02/1M tokens | Mejor relación costo/calidad |
| OpenAI text-embedding-3-large | 3,072 | Bueno | $0.13/1M tokens | Mayor precisión |
| Qwen3-Embedding | Flexible (32-4,096) | #1 MTEB multilingüe | Gratis (open source) | Español, 100+ idiomas |
| Cohere Embed v3 | 1,024 | 100+ idiomas | $0.10/1M tokens | Optimizado para RAG |
| BGE / E5 | Varios | Bueno | Gratis (open source) | Self-hosting |
El tema del español
Para RAG en español, la alineación cross-lingual importa más que la precisión pura en inglés.
¿Qué significa esto? Que si tu base de conocimiento tiene documentos en español pero también manuales técnicos en inglés (común en LATAM), el modelo de embedding necesita entender que “knowledge base” y “base de conocimiento” significan lo mismo.
Qwen3-Embedding lidera los benchmarks multilingües (MTEB) con 100+ idiomas. Es open source — lo puedes correr localmente sin enviar datos a APIs externas. Para equipos en LATAM con requisitos de privacidad, es la primera opción.
OpenAI text-embedding-3-small es la opción más práctica si ya usas la API de OpenAI. Buen rendimiento multilingüe y el costo es mínimo ($0.02 por millón de tokens — procesar 1,000 páginas cuesta centavos).
El costo real de los embeddings
Veamos los números:
| Escenario | Tokens | Costo (OpenAI small) |
|---|---|---|
| 100 páginas de documentación | ~50K tokens | ~$0.001 |
| 1,000 páginas | ~500K tokens | ~$0.01 |
| 10,000 páginas | ~5M tokens | ~$0.10 |
| 1M de fragmentos | ~250M tokens | ~$5.00 |
Los embeddings se generan una vez durante la ingestión. No por consulta. El costo de embeddings es casi despreciable comparado con el costo de generación (la llamada al LLM por cada respuesta).
La excepción: cada consulta del usuario también necesita un embedding (~100 tokens). Pero a $0.02/1M tokens, eso es menos de $0.000002 por consulta.
Dimensiones: ¿Importa el tamaño?
| Dimensiones | Almacenamiento por 1M vectores | Precisión | Velocidad de búsqueda |
|---|---|---|---|
| 256 | ~1 GB | Básica | Muy rápida |
| 768 | ~3 GB | Buena | Rápida |
| 1,536 | ~6 GB | Muy buena | Media |
| 3,072 | ~12 GB | Máxima | Más lenta |
Recomendación: 1,536 dimensiones (OpenAI small) es el sweet spot para la mayoría de proyectos. Si necesitas minimizar almacenamiento y costo, OpenAI permite reducir dimensiones dinámicamente con dimensions=256.
✅ Quick Check: Tu base de conocimiento tiene 5,000 documentos técnicos en español y 200 manuales en inglés. ¿Qué modelo de embedding usarías? (Qwen3-Embedding o OpenAI text-embedding-3-small. Ambos manejan bien la alineación español-inglés. Si necesitas privacidad total y self-hosting, Qwen3-Embedding. Si quieres simpleza, OpenAI.)
De texto a vector: El flujo completo
# 1. Conectar con el modelo de embeddings
from openai import OpenAI
client = OpenAI()
# 2. Generar embedding de un fragmento
response = client.embeddings.create(
model="text-embedding-3-small",
input="La política de devoluciones permite devolver productos dentro de 30 días"
)
vector = response.data[0].embedding
# vector es una lista de 1,536 números flotantes
# 3. Generar embedding de una consulta (mismo modelo!)
query_response = client.embeddings.create(
model="text-embedding-3-small",
input="¿Puedo devolver un producto después de un mes?"
)
query_vector = query_response.data[0].embedding
En la siguiente lección verás dónde almacenar estos vectores y cómo buscar en ellos de forma eficiente.
Puntos clave
- Los embeddings convierten texto en vectores numéricos donde la similitud semántica se traduce en cercanía geométrica
- Siempre usa el mismo modelo de embedding para documentos y consultas — los vectores de modelos diferentes no son comparables
- Para RAG en español, la alineación cross-lingual importa: “return policy” ↔ “política de devoluciones” deben estar cerca
- Qwen3-Embedding (#1 MTEB multilingüe, open source) y OpenAI text-embedding-3-small son las mejores opciones para español
- Los embeddings se generan una vez y cuestan centavos — no es el cuello de botella económico de tu pipeline
Siguiente lección
Tienes vectores. Ahora necesitas un lugar donde guardarlos y buscar en ellos. En la siguiente lección: bases de datos vectoriales — comparamos Supabase pgvector, Pinecone, Weaviate, Qdrant y Chroma para que elijas la correcta.
Comprobación de Conocimientos
Primero completa el quiz de arriba
¡Lección completada!