saltar al contenido
volver al mapa
técnica
etapa: index
3 min de lectura

Embeddings

Los embeddings mapean el texto a un espacio donde la distancia se vuelve semántica: 'perro' y 'mascota' quedan cerca, 'perro' y 'satélite' quedan lejos. Es el motor de la búsqueda por similitud del RAG.

OpenAICoheresentence-transformersVoyage AI

Qué es

Un embedding es un vector denso de números reales (típicamente entre 300 y 3072) que representa un fragmento de texto. La propiedad útil es geométrica: dos textos con significado parecido quedan a poca distancia en el espacio, y dos textos sin relación quedan lejos. La 'distancia' se mide por coseno, producto interno o euclidiana.

El vector lo genera un modelo entrenado con pares de texto (original y traducción, pregunta y respuesta, o títulos parecidos). Después del entrenamiento, el modelo aprendió a colocar palabras y frases cerca de palabras similares y lejos de otras. No hay una regla simbólica. El arreglo es puramente estadístico.

Modelos y dimensiones

Tres familias dominan. Los modelos de uso general, como text-embedding-3-small de OpenAI o embed-multilingual-v3 de Cohere, devuelven vectores de 384 a 3072 y funcionan razonablemente bien en cualquier dominio. Los modelos ajustados por dominio (jurídico, biomédico, código) ganan precisión cuando el corpus es técnico, y la pierden cuando salen de él. Los modelos locales vía sentence-transformers corren sin llamada externa, cuestan más CPU y son útiles cuando el dato no puede salir de la infraestructura.

Más dimensiones cuestan más almacenamiento, más memoria y más tiempo de búsqueda. Para un corpus pequeño, 384 dimensiones son suficientes; para un millón de documentos, conviene medir si la ganancia de subir a 1024 cubre el costo.

Similitud en la práctica

La mide el ángulo entre dos vectores e ignora la magnitud, así que dos textos largos y dos cortos pueden tener el mismo valor de similitud por contenido. La fórmula es la del producto interno dividido por la norma de cada vector.

embeddings/cosine.tstypescript
type Vec = number[];

export function dot(a: Vec, b: Vec): number {
  let s = 0;
  for (let i = 0; i < a.length; i++) s += a[i] * b[i];
  return s;
}

export function norm(a: Vec): number {
  return Math.sqrt(dot(a, a));
}

export function cosine(a: Vec, b: Vec): number {
  const denom = norm(a) * norm(b);
  if (denom === 0) return 0;
  return dot(a, b) / denom;
}

// uso
const doc: Vec = await embedder.embed("rag combina búsqueda y generación");
const query: Vec = await embedder.embed("¿cómo funciona rag?");
const score = cosine(doc, query);
console.log(score.toFixed(3));

Eligiendo el modelo

Cuatro preguntas determinan la elección. Primera: ¿el dominio es general o técnico? Un modelo multilingüe ayuda en PT-BR; un modelo de código ayuda en bases de código. Segunda: ¿necesita correr offline o puede llamar a una API? Offline obliga a usar sentence-transformers o BGE local. Tercera: ¿cuál es el presupuesto de almacenamiento? Vectores de 3072 dimensiones para 10 millones de documentos son 120 GB solo de embeddings. Cuarta: ¿necesita consistencia semántica a lo largo del tiempo? Cambiar el modelo de embedding después de indexar obliga a reindexar todo.

La regla que evita más arrepentimientos: define el modelo antes de indexar y congela esa decisión. La reindexación es cara, y alternar entre modelos a mitad del proyecto degrada la calidad del retrieval sin aviso.

Puntos fuertes

  • comprensión semántica aproximada sin reglas: frases distintas con el mismo sentido quedan cerca, sin necesidad de sinónimos hardcodeados
  • modelos listos de calidad: open weights (BGE, E5, mE5) y APIs administradas cubren la mayoría de los casos sin entrenamiento
  • costo bajo por llamada: los embeddings son típicamente órdenes de magnitud más baratos que la generación del LLM

Limitaciones

  • ceguera léxica: 'lechuga' y 'verdura' quedan cerca, pero 'lechuga' y 'Lechuga S.A.' (empresa) también, y el retrieval no sabe distinguirlas
  • modelo desactualizado: el modelo vio datos hasta la fecha del entrenamiento; los términos nuevos no tienen buena posición en el espacio
  • sin garantía de alineación entre idiomas: los modelos multilingües aproximan, pero las traducciones literales salen adelante de las paráfrasis
  • costo de cambiar: cambiar el modelo de embedding es una reindexación completa, así que la decisión inicial pesa
Similitud de cosenoMedida de qué tan alineados están dos vectores en el espacio de embeddings: coseno del ángulo entre ellos, independiente de la magnitud. Para embeddings normalizados basta el producto interno y sigue siendo rápido, por eso se volvió la distancia estándar en casi toda base vectorial.ver en el glosario →

conexiones en el mapa

actualizado el 14/10/2026 · fuentes para profundizar · reportar un error

Estudia antes

Desbloquea

pon a prueba lo que entendiste

Cargando preguntas…