# 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.

- Fuente canónica: https://www.ricardovelit.com/blog/p/que-son-los-embeddings
- Nivel: principiante · Lectura: 2 min · Publicado: 2026-09-01
- Etiquetas: embeddings, fundamentos, rag
- Relacionados: [atencion-en-transformers](https://www.ricardovelit.com/blog/p/atencion-en-transformers.md)

---
## 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.

```ts
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

| Uso | Qué hace con los embeddings |
| --- | --- |
| Búsqueda semántica | Convierte la consulta y los documentos en vectores; devuelve los más cercanos. |
| RAG | Igual que arriba, pero los documentos recuperados se pegan al prompt del modelo. |
| Clasificación | Un texto cae en la categoría cuyo centroide tiene más cerca. |
| Atención | Cada 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.
