Módulo 2: ¿Cómo funcionan Embeddings?
Bienvenido al Módulo 2: ¿Cómo funcionan Embeddings?
Descripción
Bienvenido al segundo módulo de Embeddings Deep Dive, donde profundizarás en la arquitectura técnica que convierte texto en vectores: Transformers encoder-only, tokenización, self-attention, y pooling strategies.
En el Módulo 1 usaste embeddings como "cajas negras" (texto → vector). En este módulo abrirás esa caja y entenderás el pipeline completo: desde caracteres hasta el embedding final de 1536 dimensiones. También construirás un API client robusto con retry logic, rate limiting y batch processing.
Al finalizar este módulo, podrás tomar decisiones informadas sobre modelos de embeddings y escribir código production-ready para consumir APIs.
¿Por qué este módulo es crítico?
Para tu código:
Entender el pipeline técnico te permite:
- ✅ Elegir el modelo correcto (OpenAI vs SBERT vs BGE)
- ✅ Debuggear cuando embeddings no funcionan como esperas
- ✅ Optimizar tokenización para reducir costos
- ✅ Implementar batching efectivo (10x más rápido)
- ✅ Manejar edge cases (texto vacío, muy largo, etc.)
Sin entender el "cómo", solo copias código sin saber por qué funciona.
Para tu carrera:
En entrevistas técnicas para AI Engineer, te preguntarán:
- "¿Cómo genera un Transformer un embedding?"
- "¿Qué es self-attention y por qué es importante?"
- "¿Cómo optimizarías llamadas a APIs de embeddings?"
- "¿Por qué normalizar embeddings?"
Este módulo te da las respuestas con profundidad técnica.
Para sistemas en producción:
Sistemas production-ready requieren:
- Batch processing (no 1 API call por documento)
- Rate limiting (evitar throttling)
- Retry logic (manejar errores transitorios)
- Cost optimization (cachear, comprimir)
Este módulo enseña estos patterns.
Conexión con Módulo 1
Lo que ya sabes (Módulo 1):
- ✅ Qué son embeddings (vectores que capturan significado)
- ✅ Propiedades vectoriales (cosine similarity)
- ✅ Espacios de alta dimensionalidad (1536D)
- ✅ Casos de uso reales (RAG, search, recommendations)
- ✅ Arquitectura high-level (4 pasos: tokenización → transformer → pooling → normalización)
Lo que aprenderás (Módulo 2):
- 🎯 Tokenización profunda (BPE, WordPiece, tiktoken código)
- 🎯 Transformer encoders (self-attention, feed-forward layers)
- 🎯 Contextualización (cómo "bank" cambia según contexto)
- 🎯 Pooling strategies (mean vs CLS vs max, implementación)
- 🎯 Normalization (por qué y cuándo normalizar)
- 🎯 OpenAI API avanzado (batching, rate limiting, error handling)
- 🎯 API client robusto (production-ready)
De conceptos high-level a implementación técnica profunda.
Objetivos de este módulo
Al completar este módulo, serás capaz de:
Nivel conceptual (Cápsulas 02-03):
- ✅ Explicar tokenización (BPE, sub-palabras)
- ✅ Entender Transformer encoders (arquitectura)
- ✅ Comprender self-attention (contexto)
- ✅ Diferenciar embeddings contextuales vs estáticos
Nivel técnico (Cápsulas 04-05):
- ✅ Implementar tokenización con tiktoken
- ✅ Comparar pooling strategies (mean, CLS, max)
- ✅ Normalizar embeddings (L2 norm)
- ✅ Usar OpenAI API avanzado (parámetros)
Nivel producción (Cápsulas 06-08):
- ✅ Implementar batch processing
- ✅ Manejar rate limiting
- ✅ Implementar retry logic con exponential backoff
- ✅ Construir API client production-ready
Roadmap del módulo
Cápsula 01 (esta): Introducción al Módulo
Contexto, objetivos, progresión, conexión con Módulo 1.
Cápsula 02: Transformer Encoders
Arquitectura encoder-only, self-attention (conceptual), feed-forward layers.
Cápsula 03: Tokenización
BPE, WordPiece, tiktoken código, sub-palabras, vocabulario.
Cápsula 04: Contextualización
Embeddings contextuales vs estáticos, "bank" example, por qué contexto importa.
Cápsula 05: Pooling Strategies
Mean, CLS, max pooling, implementación con numpy, comparación.
Cápsula 06: Normalization
L2 norm, por qué normalizar, dot product vs cosine similarity.
Cápsula 07: OpenAI API Advanced
API parameters, batching, error handling, rate limits.
Cápsula 08: Mini-Proyecto - API Client Robusto
Retry logic, rate limiting, batch processing, production-ready.
Duración estimada
| Actividad | Tiempo |
|---|---|
| Lectura de cápsulas 02-07 | 50-60 min |
| Práctica durante lectura | 30-40 min |
| Mini-proyecto (cápsula 08) | 40-50 min |
| Total | ~2.5 horas |
Nota: Este módulo es más técnico que Módulo 1 (40% teoría, 60% código).
Prerequisites verificados
Antes de empezar, asegúrate de haber completado:
Módulo 1 completado:
✅ Conceptos básicos:
- Definición de embeddings
- Cosine similarity
- Espacios vectoriales
- Casos de uso
✅ Mini-proyecto Módulo 1:
- Similarity calculator funcional
- OpenAI API básico funcionando
- Caché de embeddings
Si NO completaste Módulo 1: Hazlo primero. Este módulo asume esos conocimientos.
Setup técnico:
✅ Python 3.10+ instalado
python --version # ≥ 3.10
✅ Dependencias instaladas:
pip install openai numpy python-dotenv tiktoken
✅ OpenAI API key configurada:
# .env
OPENAI_API_KEY=sk-proj-tu-key-aqui
Estructura del módulo
Fase 1: Arquitectura Profunda (Cápsulas 02-04)
Aprenderás arquitectura interna de modelos de embeddings.
Resultado: Entenderás el pipeline completo desde texto hasta vector.
Fase 2: Implementación (Cápsulas 05-06)
Implementarás pooling y normalización con código.
Resultado: Código funcional de pooling strategies y normalization.
Fase 3: Producción (Cápsulas 07-08)
Construirás API client production-ready.
Resultado: Sistema robusto con retry, batching, rate limiting.
Diferencias con Módulo 1
Módulo 1 (Fundamentos):
- 50/50 teoría/práctica
- Conceptos high-level
- Proyecto simple (CLI básico)
- Enfoque: ¿Qué son embeddings y por qué?
Módulo 2 (Arquitectura):
- 40/60 teoría/práctica
- Arquitectura técnica profunda
- Proyecto complejo (API client robusto)
- Enfoque: ¿Cómo funcionan embeddings internamente?
Progresión natural: De conceptos a implementación.
Qué NO aprenderás en este módulo
Límites claros:
❌ NO entrenarás Transformers desde cero
- Usarás modelos pre-entrenados (OpenAI, SBERT)
- Entrenar Transformers es ML Engineering (fuera de scope)
❌ NO implementarás self-attention con PyTorch
- Verás conceptos y arquitectura
- NO escribirás backward pass o gradient descent
❌ NO fine-tunearás modelos
- Fine-tuning es Módulo avanzado (fuera de esta guía)
- Este módulo usa modelos out-of-the-box
❌ NO crearás tokenizadores custom
- Usarás tiktoken (OpenAI) y tokenizers existentes
- Crear tokenizadores es tarea de research
Este módulo es sobre usar embeddings técnicamente, no sobre entrenar modelos.
Progresión pedagógica
Cómo está estructurado el aprendizaje:
Cápsula 02: Transformer Encoders (arquitectura conceptual)
↓
Cápsula 03: Tokenización (primer paso del pipeline)
↓
Cápsula 04: Contextualización (por qué Transformers > Word2Vec)
↓
Cápsula 05: Pooling (agregación de tokens)
↓
Cápsula 06: Normalization (paso final opcional)
↓
Cápsula 07: OpenAI API Advanced (parámetros y optimizaciones)
↓
Cápsula 08: Proyecto integrador (API client production-ready)
Cada cápsula construye sobre la anterior. No hay saltos abruptos.
Habilidades profesionales que desarrollarás
Al completar este módulo, podrás:
-
Explicar arquitectura técnica de embeddings
- Transformers, self-attention, pooling
- A nivel que impresiona en entrevistas técnicas
-
Debuggear problemas de embeddings
- Por qué embeddings no capturan lo esperado
- Cómo optimizar tokenización
-
Escribir código production-ready
- Batch processing (10x más rápido)
- Rate limiting (evitar throttling)
- Retry logic (resiliencia)
-
Optimizar costos de API
- Batching reduce llamadas
- Caché evita regenerar
- Comprimir tokens reduce precio
-
Tomar decisiones de arquitectura
- OpenAI vs SBERT vs BGE (cuándo usar cuál)
- Mean pooling vs CLS pooling (trade-offs)
- Normalizar o no normalizar (depende del caso)
Estas habilidades son diferenciadoras en el mercado laboral.
Casos de uso que dominarás
Este módulo te prepara para:
1. Optimizar sistemas existentes
# Antes (naïve):
for doc in documents:
embedding = get_embedding(doc) # 1000 API calls 😱
# Después (optimizado):
embeddings = get_embeddings_batch(documents, batch_size=100) # 10 API calls ✅
2. Manejar errores en producción
# Antes (frágil):
embedding = get_embedding(text) # Si falla → crash 😱
# Después (robusto):
embedding = get_embedding_with_retry(text, max_retries=3) # Retry automático ✅
3. Debuggear embeddings inesperados
# ¿Por qué este embedding es diferente al esperado?
tokens = tokenize(text) # Ver cómo se tokeniza
# → "Ah, se dividió en 3 sub-palabras (no esperado)"
4. Comparar modelos informadamente
# OpenAI: Mean pooling, 1536 dims, $0.00002/1K tokens
# SBERT: Mean pooling, 384 dims, gratis (local)
# BGE: CLS pooling, 1024 dims, gratis (local)
# Decisión informada basada en: costo, dims, pooling
Diferenciador competitivo
La mayoría de AI Engineers:
- ❌ Usan
langchain.embeddingscomo caja negra - ❌ No entienden tokenización
- ❌ No optimizan batch processing
- ❌ No manejan rate limiting correctamente
Tú después de este módulo:
- ✅ Entiendes arquitectura completa
- ✅ Optimizas tokenización y batching
- ✅ Implementas retry logic robusto
- ✅ Escribes código production-ready
Este conocimiento te diferencia del 80% de la competencia.
Conexión con el AI Engineering Learning Path
¿Dónde estás en el path?
AI Engineering Learning Path:
├── #5: AI Semantics Guide (completado)
├── #6: Embeddings Deep Dive Guide
│ ├── Módulo 1: ¿Qué son Embeddings? (completado ✅)
│ ├── Módulo 2: ¿Cómo funcionan? ← Estás aquí
│ ├── Módulo 3: Modelos de Embeddings (siguiente)
│ └── Módulos 4-8: Implementación + Producción
└── #7: Vector Databases Guide (futuro)
Este módulo prepara para:
Módulo 3 (Modelos de Embeddings):
- Comparar OpenAI, SBERT, BGE, Instructor
- Entenderás diferencias técnicas (pooling, dims, training)
Módulo 4 (Semantic Search desde Cero):
- Implementarás search engine completo
- Usarás pooling y normalization aprendidos aquí
Módulo 6 (Producción):
- Patterns de producción (batch, cache, lazy loading)
- Basado en API client robusto de este módulo
Filosofía pedagógica de este módulo
Balance teoría/práctica: 40/60
Teoría (40%):
- Arquitectura de Transformers
- Self-attention conceptual
- Contextualización
Práctica (60%):
- Tokenización con tiktoken (código)
- Pooling con numpy (código)
- API client robusto (proyecto)
Más código que Módulo 1 porque estás listo para profundizar.
Profundidad técnica apropiada:
NO haremos:
- ❌ Derivar matemáticas de attention
- ❌ Implementar Transformer desde cero con PyTorch
- ❌ Entrenar modelos
SÍ haremos:
- ✅ Entender conceptualmente cómo funciona attention
- ✅ Usar Transformers pre-entrenados con código
- ✅ Implementar pooling y normalization manualmente
- ✅ Construir API client production-ready
Enfoque AI Engineering (usar, no entrenar).
Preparación antes de empezar
1. Mindset correcto
✅ Sí a:
- Profundizar técnicamente (más que Módulo 1)
- Escribir código (mucho código en este módulo)
- Experimentar con tiktoken
- Construir sistemas robustos
❌ No a:
- Saltarte el código (crítico para entender)
- Frustrarte con matemáticas (mínimo necesario)
- Esperar que sea "solo conceptual" (es técnico)
2. Espacio de trabajo
# Crear carpeta para Módulo 2
mkdir embeddings-module-02
cd embeddings-module-02
# Virtualenv (si aún no tienes)
python -m venv venv
source venv/bin/activate # macOS/Linux
# venv\Scripts\activate # Windows
# Instalar dependencias
pip install openai numpy python-dotenv tiktoken
3. Verificar setup
# test_setup.py
import openai
import numpy as np
import tiktoken
from dotenv import load_dotenv
import os
load_dotenv()
# Verificar API key
api_key = os.getenv("OPENAI_API_KEY")
if api_key:
print("✅ OpenAI API key cargada")
else:
print("❌ OpenAI API key NO encontrada")
# Verificar tiktoken
encoding = tiktoken.encoding_for_model("gpt-4")
tokens = encoding.encode("test")
print(f"✅ tiktoken funciona ({len(tokens)} tokens)")
# Verificar numpy
arr = np.array([1, 2, 3])
print(f"✅ numpy funciona (array: {arr})")
print("\n🎉 Setup completo!")
python test_setup.py
Métricas de éxito del módulo
Al final del Módulo 2, deberías poder:
- ✅ Explicar arquitectura de Transformers a nivel técnico
- ✅ Tokenizar texto con tiktoken y entender output
- ✅ Implementar pooling strategies con numpy
- ✅ Normalizar embeddings correctamente
- ✅ Usar OpenAI API avanzado (batching, error handling)
- ✅ Construir API client robusto production-ready
Evidencia: Podrás completar el mini-proyecto de la cápsula 08 sin asistencia.
Recursos opcionales de preparación
Si quieres contexto adicional (opcional):
- The Illustrated Transformer - Visualización excelente
- tiktoken GitHub - Tokenizador OpenAI
- OpenAI Embeddings Docs - API reference
- Sentence-BERT Paper - Mean pooling justification
No necesitas leer esto ahora. Las cápsulas son auto-contenidas.
Estructura de este módulo
8 cápsulas, progresión técnica:
01. Introducción al Módulo ← Estás aquí
↓
02. Transformer Encoders (arquitectura)
↓
03. Tokenización (BPE, tiktoken)
↓
04. Contextualización (por qué contexto importa)
↓
05. Pooling Strategies (mean, CLS, max)
↓
06. Normalization (L2 norm)
↓
07. OpenAI API Advanced (batching, rate limiting)
↓
08. Mini-Proyecto: API Client Robusto
Cada cápsula es técnica pero accesible.
Resumen
Módulo 2 profundiza en arquitectura técnica.
Lo que aprenderás:
- Transformer encoders (self-attention)
- Tokenización (BPE, tiktoken)
- Contextualización (embeddings contextuales)
- Pooling strategies (mean, CLS, max)
- Normalization (L2 norm)
- OpenAI API avanzado (batching, retry)
- API client production-ready
Lo que NO harás:
- Entrenar modelos (usarás pre-entrenados)
- Implementar Transformers desde cero (conceptual)
- Fine-tuning (fuera de scope)
Lo que construirás:
- API client robusto con retry logic
- Batch processing (10x más rápido)
- Rate limiting (evitar throttling)
- Código production-ready
Evidencia de éxito:
- Explicar arquitectura técnicamente
- Optimizar llamadas a APIs
- Debuggear embeddings
- Escribir código robusto
¿Listo para empezar?
En la siguiente cápsula, profundizarás en:
"Transformer Encoders"
Aprenderás:
- Arquitectura encoder-only (BERT-style)
- Self-attention mechanisms (conceptual)
- Feed-forward layers
- Por qué Transformers > RNNs/LSTMs
También verás ejemplos concretos de cómo self-attention captura contexto y por qué es crítico para embeddings modernos.
De conceptos high-level a arquitectura técnica profunda. 🚀
Recursos de preparación (opcional)
Si quieres adelantar lectura:
- Attention Is All You Need - Paper original de Transformers
- BERT Explained - Encoder-only architecture
- OpenAI Embedding Models - Technical specs
No es necesario. Las cápsulas cubren todo lo necesario.
Módulo 2 - Embeddings Deep Dive Guide Abriendo la caja negra: de texto a vector paso a paso