11 puntos por GN⁺ 2025-07-29 | 2 comentarios | Compartir por WhatsApp
  • Los embeddings son la base semántica de los LLM, ya que convierten el texto en vectores numéricos para que el modelo pueda entenderlo
  • La evolución de los embeddings ha pasado por muchos cambios, desde técnicas estadísticas como count-based y TF-IDF hasta métodos modernos como Word2Vec, BERT y la familia GPT
  • Un buen embedding requiere equilibrar la preservación de la similitud semántica entre palabras y el ajuste del número de dimensiones; en los LLM se entrena en conjunto y se optimiza para los datos y la tarea
  • Se explican métodos representativos de embedding como TF-IDF, Word2Vec y BERT con ejemplos y visualizaciones; en particular, en los LLM los embeddings convierten los tokens de entrada en vectores de alta dimensión y luego se actualizan jerárquicamente según el contexto
  • Con código práctico de la capa de embeddings en Torch, análisis de grafos de vectores de embedding y recursos visuales, se guía al lector para entender de forma intuitiva cómo funcionan realmente los embeddings

¿Qué es un embedding?

  • Un embedding es una técnica que transforma datos como texto, imágenes y audio en vectores de alta dimensión
  • En NLP, en particular, es el proceso de convertir palabras o tokens en vectores para darles una forma que la computadora pueda entender
  • Aunque los embeddings pueden aplicarse a distintos tipos de datos, este texto se centra en los embeddings de texto

Evolución y tipos de embeddings

  • Las primeras técnicas de embedding estaban dominadas por enfoques estadísticos como count vectors, TF-IDF y Co-Occurrence Matrix
  • Después aparecieron embeddings basados en redes neuronales como Word2Vec, GloVe y FastText, que empezaron a reflejar la similitud semántica en el espacio vectorial
  • En los modelos basados en transformers como BERT y GPT, el embedding de cada token se actualiza después de la entrada para incorporar información contextual capa por capa (embeddings dinámicos/contextualizados)

Condiciones de un buen embedding

Representación semántica (semantic representation)

  • Las palabras con significados similares quedan ubicadas cerca unas de otras en el espacio vectorial
    Ejemplo: "cat" y "dog" se mapean de forma más similar entre sí que "dog" y "strawberry"

Tamaño de la dimensionalidad (dimensionality)

  • Si la dimensión del embedding es demasiado pequeña, falta capacidad de representación; si es demasiado grande, se desperdicia memoria y aumenta el riesgo de sobreajuste
    Ejemplo: GPT-2 tiene una dimensión de embedding mínima de 768

Técnica tradicional de embedding: TF-IDF

  • TF-IDF calcula la importancia de una palabra multiplicando su frecuencia por su rareza (frecuencia inversa de documento)
  • TF: con qué frecuencia aparece una palabra en un documento
  • IDF: qué tan rara es esa palabra en el conjunto total de documentos
  • El resultado de TF-IDF se usa en tareas simples como recuperación de información o extracción de palabras clave, pero no refleja bien la similitud semántica
  • Al visualizarlo, la mayoría de las palabras se concentran en un solo grupo y la separación semántica es baja

Word2Vec

  • Word2Vec es un embedding basado en redes neuronales que refleja con eficacia las relaciones semánticas en el espacio vectorial
  • Existen métodos como CBOW (predecir la palabra central a partir de las palabras vecinas) y Skipgram (predecir el contexto a partir de la palabra central)
  • Durante el entrenamiento, la matriz de embeddings de la capa oculta se utiliza como vector semántico de las palabras
  • Usa técnicas de optimización como negative sampling, lo que permite entrenar eficientemente incluso con grandes volúmenes de datos
  • Si se visualiza con herramientas como TensorFlow Embedding Projector, puede verse que las palabras semánticamente parecidas forman clústeres

BERT y embeddings basados en transformers

  • BERT es un modelo transformer Encoder-only que incorpora información contextual de forma dinámica a medida que avanza por cada capa
  • Etapa de entrada: tokenizar el texto con un tokenizer → convertirlo en vectores de token embedding → sumarlo con el positional embedding
  • Después pasa por varias capas transformer, donde el embedding cambia dinámicamente al reflejar la información contextual
  • También procesa información de la oración completa o de segmentación mediante tokens especiales como [CLS] y [SEP]
  • Después de BERT, muchos LLM adoptaron el enfoque de embeddings dinámicos (contextualizados)

Estructura y entrenamiento de los embeddings en LLM

  • Los embeddings en un LLM se implementan como la primera capa (lookup table) que convierte los tokens de entrada en vectores de alta dimensión
  • Están estructurados en forma de tabla, como torch.nn.Embedding, que recibe IDs de tokens y devuelve el vector de embedding correspondiente
  • Durante el entrenamiento, el LLM optimiza también los pesos de la capa de embeddings, refinándolos de acuerdo con los datos y el objetivo del modelo
  • Ejemplo: el modelo DeepSeek-R1-Distill-Qwen-1.5B usa vectores de embedding de 1536 dimensiones

Visualización de embeddings y análisis de grafos

  • A partir de la similitud entre vectores de embedding (como la similitud del coseno), se puede analizar el espacio de embeddings en forma de grafo
  • Ejemplo: se puede tokenizar la oración "AI agents will be the most hot topic..." y visualizar conexiones entre los tokens con mayor similitud en sus embeddings
  • Distintas variantes de una sola palabra (por ejemplo, "list", "_list", "List") también suelen tener embeddings similares

Conclusión

  • Los embeddings son un elemento central en los LLM y el NLP, ya que convierten los datos de entrada en vectores numéricos para que el modelo pueda procesar la estructura semántica y la información contextual
  • Incluso en la era de los LLM, los principios básicos y la estructura de los embeddings no han cambiado mucho, y siguen siendo muy importantes para el rendimiento y la interpretabilidad del modelo
  • Con ejemplos de código intuitivos y recursos de visualización, es posible entender fácilmente cómo funcionan en la práctica los embeddings

2 comentarios

 
crawler 2025-07-29

king - man + woman = queen

 
GN⁺ 2025-07-29
Opiniones en Hacker News
  • Realmente sorprende que los embeddings sean una de las partes menos discutidas del stack de los LLM; intuitivamente, uno pensaría que influyen enormemente en la capacidad de la red para inferir conexiones semánticas, pero la gente no habla mucho de eso

    • El problema con los embeddings es que son casi imposibles de interpretar salvo por el propio modelo; aunque claramente codifican el significado de la secuencia de entrada, durante el entrenamiento esa información se comprime tanto que solo la cabeza decodificadora del modelo puede descifrarla. Anthropic tiene una investigación que volvió interpretables las features internas de Sonnet 3, pero eso requiere entrenar en paralelo una red aparte para interpretar las activaciones de las capas internas, y resulta costoso

    • Lo extraño de los espacios de alta dimensión es que la mayoría de los valores son ortogonales entre sí y están muy lejos unos de otros. Aun así, es fascinante que con técnicas de reducción de dimensionalidad se puedan agrupar conceptos incluso en 50 mil dimensiones

    • Cuando empecé a aprender embeddings a fondo, pensé: “al menos un tercio de la magia de los LLMs viene de los embeddings”. El simple hecho de que las palabras ya estén ordenadas de una manera semánticamente útil le quita un poco de misterio a los LLMs. Sigue siendo asombroso, pero es como alcanzar a ver un poco detrás de la cortina

    • Los embeddings cumplen una función parecida a una “Piedra Rosetta” que permite a las computadoras cuantificar el lenguaje humano. Creo que esto debería ser un tema realmente central, aunque también entiendo que intentar comprender un espacio vectorial de 1,000 dimensiones puede ser bastante intimidante

    • No entiendo mucho la idea de que se habla poco de embeddings. Sobre todo en ejemplos de uso de RAG o en discusiones sobre bases de datos vectoriales, los embeddings siempre se tratan como un tema central

  • El tutorial estuvo muy bien — la diferencia entre embeddings contextuales y embeddings estáticos es importante. Mucha gente conoce word2vec (embedding estático), pero los embeddings contextuales suelen ser mucho más poderosos. (Dicho sea de paso, es grave el secuestro del historial del navegador: con solo hacer scroll, se agregan montones de entradas al historial de la página)

  • Una parte que creo que necesita una explicación más avanzada es la diferencia, desde la perspectiva de embeddings, entre los transformers Encoder-Decoder (BERT) y los modelos generativos solo-decoder

    • Hace falta una pequeña corrección: BERT es un encoder (no encoder-decoder), ChatGPT es un decoder. Los modelos encoder (BERT) pueden ver la oración completa, así que son mejores para representar significado. Por ejemplo, en “The bank was steep and muddy”, pueden determinar el sentido de bank (ribera o institución financiera) viendo toda la oración. En cambio, los modelos tipo GPT (decoder) solo ven de izquierda a derecha, así que predicen sin poder ver la información posterior en la frase. Para más contexto, vale la pena revisar el post de modernBERT de huggingface y también el paper de neoBERT

    • Sumando a la explicación de dust42: BERT es encoder, GPT es decoder y T5 es encoder-decoder. Hoy en día los encoder-decoder son menos populares. Los modelos encoder se usan mucho para clasificación, extracción de información y búsqueda, mientras que los decoder son adecuados para generación de texto, resumen y traducción. Investigaciones recientes (paper de Ettin) también lo confirman. Como ambos son transformers, también es posible convertir un encoder en decoder y viceversa. La diferencia de diseño está en la atención bidireccional (todos los tokens pueden ver a todos los tokens) frente a la atención autorregresiva (solo pueden ver los tokens anteriores)

  • Si aprovechas el embedding projector, no solo puedes explorar más de 50 palabras, sino también desarrollar intuición para visualización de datos en 3D. Revisa Tensorflow Embedding Projector

  • ¡Es una guía visual excelente! Yo también hice una lección sobre embeddings de LLM con formato visual + audio + quiz para ayudar a comprender deep learning a mayor profundidad, con un concepto parecido, en app.vidyaarthi.ai. Aquí está el enlace para probarlo. La idea es un enfoque de “aprender haciendo” que vuelva estos conceptos abstractos más intuitivos e interactivos. Agradezco cualquier feedback (no es autopromoción; de verdad es una herramienta hecha con mucha pasión)

  • Parece que no carga bien; salen montones de mensajes de error en la consola, como “Content-Security-Policy: The page’s settings blocked an inline style…”

  • Creo que una visualización tipo nube de palabras o mostrar resultados top-k de una consulta podría ser más intuitivo. Recomiendo ir a Tensorflow Embedding Projector, ingresar una palabra y elegir la proyección UMAP

  • Una explicación con un enfoque más práctico también aparece en este texto explicativo sobre embeddings de sgnt.ai, lo escribí yo mismo

    • ¡Gracias por el gran material! Según entendí, los LLM tienen tres grandes problemas:

      1. Los LLM reducen un espacio vectorial de muy alta dimensión a uno de menor dimensión. Pero como no está claro qué significa cada eje individual de ese espacio reducido, en la práctica casi solo se puede verificar si algo está bien o mal a partir del output. Me interesa saber qué investigaciones buscan resolver esto
      2. Los LLM usan datos de texto para construir esa representación reducida. Es decir, aprenden no de la realidad misma, sino de los registros humanos sobre la realidad. Keen Technologies usa datos de robots reales con sensores para evitar esa limitación; es mucho más lento, pero creen que a largo plazo puede producir modelos más precisos
      3. Como un LLM guarda el significado y el contexto de una conversación dentro de un solo vector (estado interno), en conversaciones largas ese vector se va sobrescribiendo repetidamente y el contexto inicial se vuelve cada vez más borroso. Me pregunto si existe otra forma de manejar ese estado más allá de hacer respaldo de vectores
    • Tu enfoque es mucho más intuitivo. Me preguntaba por qué no mostraste ejemplos de embeddings para características categóricas/escalares

  • Es un artículo muy educativo y con una estructura muy bien lograda. Gracias al autor

    • El perfil del autor puede verse en Huggingface. El equipo de HN antes no había reaccionado mucho, así que recomendaron volver a publicarlo. Lo bueno de este texto es que presenta ejemplos de varios tipos de embeddings
  • Los embeddings de un LLM normalmente forman parte de la capa de entrada y, a diferencia de modelos preentrenados como Word2Vec, se actualizan durante el entrenamiento.
    Además, tengo otra duda: en la etapa de inferencia, el embedding es una lookup table de la forma “token ID -> vector”.
    Matemáticamente, eso equivale a codificar el token ID como un vector one-hot largo y luego pasarlo por una capa lineal para obtener el vector embedding.
    ¿Esa misma estructura se aplica tal cual al entrenamiento del embedding? Es decir, ¿se considera el embedding como una capa lineal y se entrena mediante backpropagation?

    • El embedding también forma parte del proceso normal de backpropagation. Pero por eficiencia no se usa realmente codificación one-hot.
      Se implementa la indexación de forma diferenciable para que el gradiente fluya solo hacia el vector seleccionado.
      Si quieres un ejemplo concreto, puede servir revisar el código fuente de SmallPebble, mi mini librería de deep learning

    • Para explicar un poco más el otro comentario:
      la indexación y la multiplicación por un vector one-hot son matemáticamente equivalentes.
      Por ejemplo, si el vocabulario tiene N elementos y la secuencia tiene longitud L, habría que multiplicar una matriz dispersa NxL por la matriz de embeddings.
      Pero en la práctica basta con conocer un índice por cada columna, así que internamente se representa como un solo número (el índice).
      De esta forma, además del forward pass, también se implementa el backpropagation por separado en función de la indexación,
      para que el gradiente fluya hacia el vector embedding seleccionado