Principiante2 min de lectura

Qué son los embeddings (y por qué todo lo demás depende de ellos)

Un embedding convierte texto en un punto de un espacio donde 'cerca' significa 'parecido'. Es la pieza que hace posible la búsqueda semántica, el RAG y la atención.

  • #embeddings
  • #fundamentos
  • #rag

La idea en una frase

Un embedding es una lista de números que representa un trozo de texto de forma que textos con significados parecidos acaban con números parecidos. Nada más. Y nada menos: casi todo lo que hoy llamamos "IA generativa" se apoya en esa propiedad.

De palabras a coordenadas

Imagina que a cada palabra le asignas un punto en un mapa. Al principio, al azar. Después ajustas los puntos con una sola regla: las palabras que aparecen en contextos parecidos deben quedar cerca. Repite millones de veces sobre millones de frases.

Lo que sale de ahí no es un mapa de dos dimensiones sino de cientos o miles, pero la intuición se conserva: perro y gato acaban cerca; perro y factura, lejos. Y aparecen regularidades que nadie programó: la dirección que va de rey a reina se parece a la que va de hombre a mujer.

Medir "cerca": similitud coseno

Para comparar dos embeddings no se usa la distancia en línea recta sino el coseno del ángulo entre ellos. Si apuntan en la misma dirección, el coseno es 1; si son perpendiculares, 0; si son opuestos, −1.

function cosine(a: number[], b: number[]): number {
  let dot = 0;
  let normA = 0;
  let normB = 0;
  for (let i = 0; i < a.length; i++) {
    dot += a[i] * b[i];
    normA += a[i] * a[i];
    normB += b[i] * b[i];
  }
  return dot / (Math.sqrt(normA) * Math.sqrt(normB));
}

Al dividir por las normas, el tamaño del vector deja de importar y solo cuenta la dirección. Por eso dos textos de longitudes muy distintas pueden tener similitud alta.

Para qué sirve esto

UsoQué hace con los embeddings
Búsqueda semánticaConvierte la consulta y los documentos en vectores; devuelve los más cercanos.
RAGIgual que arriba, pero los documentos recuperados se pegan al prompt del modelo.
ClasificaciónUn texto cae en la categoría cuyo centroide tiene más cerca.
AtenciónCada token compara su vector con los demás para decidir a cuál "mirar".

Ese último caso es el que conecta con el siguiente artículo: la atención de un Transformer es una comparación de embeddings, hecha muchas veces por segundo.

Lo que un embedding no es

  • No es una comprensión. Codifica co-ocurrencia estadística, no verdad. Dos frases opuestas ("me encantó", "lo odié") pueden quedar sorprendentemente cerca porque hablan del mismo tema.
  • No es estable entre modelos. Los vectores de un modelo no significan nada en el espacio de otro. Si cambias de modelo de embeddings, reindexa todo.
  • No es reversible. Del vector no se recupera el texto original, aunque sí se puede inferir bastante sobre él. Trátalos como datos sensibles si el texto lo era.

Para llevarte

Cuando leas "vector", "espacio latente" o "índice semántico", traduce mentalmente a puntos cuya cercanía significa parecido. Con esa traducción, el resto del hub se lee mucho más fácil.