4 · ¿Qué son los embeddings?
Un embedding mapea texto a un vector para que significados similares queden cerca. La semántica se vuelve geometría — la base de cada sistema de búsqueda, RAG y recomendación que construirás.
Un embedding es una función que mapea un fragmento de texto a un vector de números de longitud fija, entrenado para que textos con significado similar produzcan vectores cercanos. Una vez que el significado es un punto en el espacio, 'encontrar texto relacionado' se vuelve 'encontrar vectores cercanos' — un problema de geometría que resuelves con aritmética.
Sin esto:
Sin embeddings solo puedes coincidir texto por palabras clave exactas; una búsqueda de 'auto' se pierde 'automóvil', y no hay forma de darle a un modelo los documentos 'más relevantes' para una pregunta — toda la idea detrás de RAG se desmorona.
Hasta ahora un LLM ha sido una función sobre tokens. Pero hay una segunda función, igual de importante, en toda app con LLM: el modelo de embeddings. Su trabajo no es generar texto — es convertir un fragmento de texto en un único vector de números, llamado embedding.
embed("el gato se sentó en la alfombra") → [0.12, -0.44, 0.91, ...] (p. ej. 1536 números)
Lo que hace útil a un embedding no son los números individuales — es la geometría de todo el espacio. El modelo se entrena para que textos con significado similar produzcan vectores cercanos, y textos no relacionados produzcan vectores lejanos. "Un perro persiguió la pelota" y "el cachorro corrió tras el juguete" quedan cerca aunque casi no comparten palabras; "la bolsa de valores se desplomó" queda lejos.
Esta única propiedad — el significado se vuelve distancia — es el motor detrás de:
- Búsqueda semántica: encontrar documentos cuyo embedding esté más cerca del embedding de la consulta.
- RAG: recuperar los fragmentos más cercanos de tu base de conocimiento y pegarlos en el prompt.
- Clustering / recomendación / deduplicación: agrupar o rankear por cercanía de vectores.
Los modelos de embeddings reales son redes neuronales entrenadas (viste la maquinaria en los tracks de NLP y Deep Learning). Pero para entender lo que te dan, construiremos uno diminuto y determinista desde cero — un embedder de bolsa de palabras — y mostraremos que incluso esta versión de juguete hace que oraciones relacionadas puntúen más alto que las no relacionadas.
Aquí está el embedder de juguete. Fijamos un vocabulario pequeño (las dimensiones de nuestro espacio) y embebemos cada oración como un vector cuya entrada i cuenta cuántas veces aparece la palabra i del vocabulario. Luego L2-normalizamos cada vector (lo escalamos a longitud 1) para que oraciones largas y cortas sean comparables — solo importa la dirección, no cuántas palabras hay. Por último puntuamos pares por producto punto: para vectores unitarios, un producto punto mayor significa que los vectores apuntan en direcciones más parecidas, es decir, las oraciones comparten más significado.
Python (in browser)
Un embedder de bolsa de palabras: el texto se vuelve un vector normalizado, y los productos punto destacan las oraciones que comparten significado — la semántica convertida en geometría.
Python runs entirely in your browser via Pyodide (~6 MB on first Run, cached after).
En producción no construyes el embedder — llamas a uno, igual que la API de chat. Envías texto y recibes una lista de floats. Lee la llamada estilo OpenAI de abajo; el vector devuelto se conecta directo a la geometría que acabamos de demostrar.
Una llamada de embedding real: envías texto, obtienes un vector de floats de longitud fija. Vive en el mismo espacio 'significado = distancia' que nuestro embedder de juguete — solo que aprendido, no hecho a mano.
¿Cuál es la propiedad que define a un buen espacio de embeddings de texto?
- Un embedding mapea texto a un vector de longitud fija; el modelo de embeddings es una llamada separada del modelo de chat.
- La propiedad clave es geométrica: significado similar → vectores cercanos. Esto convierte 'encontrar texto relacionado' en 'encontrar vectores cercanos'.
- L2-normalizar hace los vectores comparables por dirección (significado) en vez de magnitud (longitud), así el producto punto refleja similitud.
La búsqueda semántica, la recuperación de RAG, la recomendación, el clustering y la deduplicación empiezan todos embebiendo texto y comparando vectores — los embeddings son la entrada de cada capítulo que sigue.
Si lo quitas: Sin embeddings te quedas con coincidencia exacta de palabras clave: sinónimos y paráfrasis son invisibles, y no puedes rankear documentos por relevancia para alimentar a un LLM.