Módulo 6: RAG Multimodal
1. Introducción: RAG Multimodal
Descripción
RAG (Retrieval-Augmented Generation) fue un salto enorme para los LLMs: en lugar de depender solo de su conocimiento entrenado, el modelo busca en un corpus de documentos y responde con contexto real. Pero el RAG clásico tiene un punto ciego masivo: solo busca texto. Si tu corpus incluye diagramas, gráficos, capturas de pantalla, fotos de productos, o PDFs con figuras, el RAG clásico los ignora por completo.
El RAG multimodal resuelve esto. Indexa texto e imágenes en el mismo espacio vectorial (o en espacios coordinados) y recupera chunks relevantes de ambos tipos cuando el usuario hace una pregunta. Puedes preguntar "encuentra documentos que muestren un diagrama de arquitectura microservicios" y el sistema recupera tanto los párrafos que mencionan microservicios como los diagramas visuales que los ilustran.
Por qué importa: El RAG multimodal es el corazón del Q&A del Document Analyzer que construirás en el Módulo 8. Sin esto, tu proyecto solo extraería datos aislados. Con RAG multimodal, responde preguntas complejas usando texto Y figuras del documento original. En producción, esto es la diferencia entre un chatbot que dice "no encuentro información sobre el diagrama" y uno que te muestra el diagrama relevante junto con la explicación.
Conexión con los módulos anteriores: Los módulos 1-5 te dieron las piezas individuales: vision (M2), procesamiento de documentos (M3), generación de imágenes (M4), audio (M5). Este módulo las ensambla en un sistema de búsqueda y respuesta que combina todo. Es donde pasas de "puedo analizar una imagen" a "puedo buscar en miles de documentos con imágenes y responder preguntas sobre ellos".
¿Dónde Estamos en la Guía?
Contexto
Esta guía tiene 8 módulos organizados en 3 fases:
Phase 1: Fundamentos Multimodales (Módulos 1-3)
├── Módulo 1: Introducción a IA Multimodal
├── Módulo 2: Vision + LLMs
└── Módulo 3: Comprensión de Documentos
Phase 2: Generación y Audio (Módulos 4-5)
├── Módulo 4: Generación de Imágenes
└── Módulo 5: Procesamiento de Audio
Phase 3: RAG, Casos de Uso y Proyecto (Módulos 6-8)
├── Módulo 6: RAG Multimodal ← ESTÁS AQUÍ
├── Módulo 7: Casos de Uso
└── Módulo 8: Proyecto Final — Document Analyzer Multimodal
Duración total estimada de la guía: 6-7 horas (self-paced).
¿Hacia dónde vamos?
Hasta ahora trabajaste con modalidades individuales: enviar una imagen a un LLM, transcribir audio, generar imágenes. Este módulo conecta esas habilidades con búsqueda inteligente. El Módulo 7 aplica patrones de producción, y el Módulo 8 integra todo en el Document Analyzer.
La progresión dentro de la Phase 3:
- RAG Multimodal (este módulo) — buscar y responder sobre corpus con texto + imágenes
- Casos de Uso (módulo 7) — patrones de producción: Q&A documental, video, monitoring
- Document Analyzer (módulo 8) — el proyecto final que integra vision + RAG + audio
Qué es RAG Multimodal
RAG clásico (solo texto)
El pipeline clásico de RAG funciona así:
1. INDEXAR:
Documentos → chunks de texto → embeddings → vector store
2. QUERY:
Pregunta del usuario → embedding de la pregunta
→ buscar chunks similares en vector store
→ enviar chunks al LLM como contexto
→ LLM genera respuesta
Ejemplo:
"¿Cuál es la política de devoluciones?"
→ recupera chunks del manual de devoluciones
→ LLM responde con la info del manual
Esto funciona bien cuando los documentos son puro texto. Pero el mundo real no es puro texto.
El problema: documentos reales tienen imágenes
Piensa en estos escenarios:
- Un manual técnico con diagramas de arquitectura — el texto dice "ver Figura 3", pero RAG clásico no sabe qué hay en la Figura 3
- Un reporte financiero con gráficos — las tendencias están en los gráficos, no en el texto
- Un catálogo de productos con fotos — el usuario pregunta "¿tienen algo parecido a esta imagen?"
- Un paper académico con tablas y figuras — la mitad de la información está en elementos visuales
Si solo indexas el texto, estás perdiendo entre el 30% y el 60% de la información en estos documentos.
RAG multimodal: la solución
1. INDEXAR:
Documentos → chunks de texto → embeddings de texto → vector store
↑
→ imágenes → descripciones/embeddings de img → vector store
2. QUERY:
Pregunta (texto o imagen)
→ embedding de la pregunta
→ buscar en chunks de texto Y chunks de imagen
→ fusionar resultados (re-ranking)
→ enviar contexto (texto + descripciones de imágenes) al LLM
→ LLM genera respuesta informada por AMBAS modalidades
La clave es que texto e imágenes coexisten en el mismo índice. Cuando buscas, recuperas lo más relevante sin importar si es un párrafo o una imagen.
Dos estrategias principales
Hay dos formas de hacer RAG multimodal, y en este módulo cubrimos ambas:
Estrategia 1: Descripción textual de imágenes
Imagen → Vision API → descripción textual → embedding de texto → vector store
Conviertes cada imagen en una descripción usando un modelo con visión (GPT-4o, Claude 3). Luego tratas esa descripción como cualquier otro chunk de texto. Simple, compatible con cualquier vector store, pero pierdes información visual que el texto no captura.
Estrategia 2: Embeddings multimodales nativos
Imagen → CLIP/modelo multimodal → embedding de imagen → vector store
Texto → CLIP/modelo multimodal → embedding de texto → vector store
Usas un modelo como CLIP que genera embeddings en un espacio compartido para texto e imágenes. Un embedding de "perro" y un embedding de una foto de perro están cerca en el espacio vectorial. Más preciso, pero requiere modelos específicos.
Por Qué Importa el RAG Multimodal
La brecha del RAG clásico
Escenario: Manual técnico de 200 páginas
RAG clásico:
Pregunta: "¿Cómo se conecta el módulo A con el módulo B?"
→ Recupera párrafos que mencionan módulos A y B
→ Respuesta: "El módulo A se conecta al módulo B mediante una API REST"
→ FALTA: El diagrama de arquitectura que muestra exactamente el flujo
RAG multimodal:
Misma pregunta
→ Recupera párrafos Y el diagrama de conexión
→ Respuesta: "El módulo A se conecta al módulo B mediante una API REST.
El diagrama de la página 42 muestra que la comunicación pasa por
un API Gateway con autenticación OAuth 2.0"
→ COMPLETO: Texto + contexto visual
Casos de uso en producción
-
Q&A sobre documentación técnica: Manuales con diagramas, documentación de API con capturas de pantalla. El usuario pregunta y recibe respuestas que referencian tanto texto como figuras.
-
Análisis de reportes: Reportes financieros o de negocio con gráficos. "¿Cómo fueron las ventas del Q3?" recupera el párrafo de resumen Y el gráfico de tendencia.
-
Soporte al cliente con catálogos: "¿Tienen un producto parecido a este?" El usuario envía una imagen y el sistema busca en el catálogo por similitud visual.
-
Investigación académica: Papers con figuras, tablas y ecuaciones. "¿Qué resultados obtuvieron en el experimento?" recupera la sección de resultados Y las figuras relevantes.
-
Legal y compliance: Contratos con firmas, sellos y tablas. El RAG multimodal indexa tanto las cláusulas textuales como los elementos visuales.
-
E-commerce: Búsqueda de productos combinando descripción textual ("vestido rojo elegante") con referencia visual (foto de ejemplo).
Datos de contexto
- 85% de documentos empresariales contienen elementos visuales (McKinsey 2024)
- Un RAG que solo indexa texto pierde 30-60% de la información en documentos con figuras
- Los sistemas de Q&A multimodal muestran +40% de precisión en respuestas sobre documentos técnicos vs RAG solo-texto
- ChromaDB reporta que >50% de sus usuarios indexan alguna forma de dato multimodal
Objetivos del Módulo
Al terminar este módulo serás capaz de:
- ✅ Generar embeddings para imágenes usando dos estrategias: descripción textual con Vision y embeddings nativos con CLIP
- ✅ Construir un índice multimodal en ChromaDB que contenga chunks de texto y representaciones de imágenes
- ✅ Implementar retrieval híbrido que busca por texto e imagen y fusiona resultados con re-ranking
- ✅ Procesar documentos mixtos (PDFs con figuras) preservando la asociación texto-imagen
- ✅ Usar LangChain para construir un pipeline RAG multimodal completo
- ✅ Identificar limitaciones (costo, latencia, calidad) y aplicar optimizaciones (caching, batch, CLIP local)
- ✅ Construir un proyecto funcional de RAG multimodal básico que indexa, busca y responde
Objetivo profesional
Cuando alguien te diga "necesitamos un chatbot que responda preguntas sobre nuestros manuales técnicos con diagramas", sabrás: cómo indexar los documentos (texto + imágenes), qué estrategia de embeddings usar (descripción vs CLIP), cómo implementar la búsqueda (híbrida con re-ranking), cuánto costará (embeddings + Vision + LLM), y qué limitaciones tendrá. Ese nivel de criterio es lo que separa a un developer que "sabe usar ChatGPT" de uno que diseña sistemas de IA en producción.
Roadmap del Módulo
Mapa de cápsulas
| # | Cápsula | Qué aprenderás | Tipo |
|---|---|---|---|
| 01 | Introducción (esta) | RAG multimodal, contexto, objetivos, setup | Intro |
| 02 | Embeddings de imágenes | CLIP, Vision+embedding, similitud coseno, ChromaDB intro | Técnica |
| 03 | Indexación multimodal | ChromaDB setup, indexar texto+imágenes, metadata, persistencia | Técnica |
| 04 | Retrieval híbrido | Búsqueda texto+imagen, fusión de resultados, RRF, ponderación | Técnica |
| 05 | Documentos con imágenes | Chunking de PDFs con figuras, asociar texto-imagen, pipelines | Técnica |
| 06 | Implementación con LangChain | Document loaders, retrievers, chains RAG multimodal | Técnica |
| 07 | Limitaciones y optimización | Costos, latencia, caching, batch, monitoreo | Técnica |
| 08 | Proyecto: RAG multimodal básico | Sistema completo: indexar, buscar, responder con texto+imágenes | Proyecto |
Flujo de aprendizaje
Primero entenderás cómo representar imágenes como vectores (cápsula 02) — esta es la pieza fundamental. Luego aprenderás a almacenar esos vectores junto con texto en un índice (cápsula 03). Después implementarás la búsqueda que combina ambos (cápsula 04). Verás cómo procesar documentos reales que mezclan texto y figuras (cápsula 05). Luego usarás LangChain para simplificar la implementación (cápsula 06). Identificarás limitaciones y cómo optimizar (cápsula 07). Y finalmente integrarás todo en un proyecto funcional (cápsula 08).
La progresión es: representación → almacenamiento → búsqueda → documentos reales → framework → optimización → proyecto.
Duración estimada del módulo: 50-60 minutos.
Conexión con el Proyecto
Proyecto de este módulo: RAG Multimodal Básico
El proyecto de la cápsula 08 es un sistema RAG que:
Input:
- Documentos PDF con texto e imágenes
- Pregunta del usuario (texto)
Proceso:
1. Extraer texto e imágenes del PDF
2. Generar embeddings (texto directo, imágenes vía descripción)
3. Almacenar en ChromaDB
4. Buscar chunks relevantes (texto + imagen)
5. Generar respuesta con LLM usando contexto multimodal
Output:
- Respuesta textual basada en texto E imágenes del documento
- Fuentes: qué chunks y qué páginas se usaron
Conexión con el proyecto final: Document Analyzer
Módulo 2: Vision → analizar imágenes individuales
Módulo 3: Documentos → extraer datos de PDFs
Módulo 6: RAG Multimodal → buscar y responder sobre corpus con imágenes
↓
Módulo 8: Document Analyzer → combina vision + documentos + RAG + audio
Tu RAG multimodal del módulo 6 se convierte en el motor de Q&A del Document Analyzer. Cuando un usuario sube un PDF y hace preguntas, es tu pipeline RAG multimodal el que busca la respuesta.
Prerrequisitos
De módulos anteriores
Este módulo asume que completaste (o al menos leíste) los módulos anteriores:
| Módulo | Qué necesitas de él |
|---|---|
| M1: Introducción | Entender modalidades, modelos, formatos (Base64, APIs) |
| M2: Vision | Enviar imágenes a GPT-4o/Claude, obtener descripciones |
| M3: Documentos | Extraer texto e imágenes de PDFs con PyMuPDF |
| M4: Generación | Concepto de embeddings y espacios vectoriales |
| M5: Audio | Pipeline de procesamiento secuencial de datos |
Conocimientos técnicos
- Python intermedio: Funciones, clases, manejo de archivos, async/await básico
- APIs de LLMs: Experiencia con OpenAI API (chat completions, embeddings)
- Concepto de embeddings: Qué es un vector, similitud coseno (lo profundizamos en cápsula 02)
- PDFs: Haber trabajado con PyMuPDF o herramientas similares
Si no tienes los prerrequisitos
| Te falta | Recurso |
|---|---|
| Módulos 1-5 de esta guía | Completa al menos M1, M2 y M3 antes de continuar |
| Concepto de embeddings | OpenAI Embeddings Guide |
| Vector databases | ChromaDB Getting Started |
| PyMuPDF | Cápsula 05 del Módulo 3 de esta guía |
Setup Técnico
Dependencias
python --version # 3.11+ requerido
pip install openai>=1.0.0 pillow python-dotenv
pip install langchain langchain-openai langchain-community
pip install chromadb
pip install sentence-transformers
# Opcional: CLIP para embeddings nativos
pip install transformers torch
# Opcional: procesamiento de PDFs
pip install pymupdf
Variables de entorno
# .env
OPENAI_API_KEY=sk-...
# Opcionales
ANTHROPIC_API_KEY=sk-ant-...
GOOGLE_API_KEY=...
Verificación rápida
from openai import OpenAI
import chromadb
from dotenv import load_dotenv
load_dotenv()
oai = OpenAI()
response = oai.embeddings.create(
model="text-embedding-3-small",
input="Test de embeddings para RAG multimodal"
)
print(f"Embedding dimension: {len(response.data[0].embedding)}")
chroma = chromadb.Client()
collection = chroma.create_collection("test")
collection.add(
documents=["Texto de prueba"],
ids=["test_1"]
)
results = collection.query(query_texts=["prueba"], n_results=1)
print(f"ChromaDB funciona: {results['documents'][0][0]}")
chroma.delete_collection("test")
print("Setup completo — listo para el módulo 6")
Si ves las tres líneas de output sin errores, tu entorno está listo.
Costos estimados
| Operación | Costo aproximado |
|---|---|
| Embeddings (text-embedding-3-small) | ~$0.02 por 1M tokens |
| Vision (gpt-4o-mini, describir imágenes) | ~$0.01-0.03 por imagen |
| LLM para respuestas (gpt-4o) | ~$0.01-0.05 por query |
| ChromaDB | Gratuito (local) |
| CLIP (Hugging Face) | Gratuito (local) |
Total estimado para completar el módulo: $0.50-2.00 USD.
Consejo: Usa gpt-4o-mini para describir imágenes durante desarrollo. Solo cambia a gpt-4o si necesitas mayor calidad de descripción. ChromaDB y CLIP son gratuitos y locales.
Estructura de archivos recomendada
ai-multimodal-guide/
├── .env
├── module_06/
│ ├── embeddings.py # Funciones de embeddings (cápsula 02)
│ ├── indexer.py # Indexación multimodal (cápsula 03)
│ ├── retriever.py # Retrieval híbrido (cápsula 04)
│ ├── document_processor.py # Procesar docs con imágenes (cápsula 05)
│ ├── langchain_rag.py # Implementación LangChain (cápsula 06)
│ ├── rag_pipeline.py # Proyecto: pipeline completo (cápsula 08)
│ ├── chroma_db/ # Persistencia de ChromaDB
│ └── test_docs/
│ ├── sample.pdf # PDF de prueba con imágenes
│ ├── diagram.png # Imagen de prueba
│ └── product.jpg # Otra imagen de prueba
└── ...
Límites: Qué NO Cubre Este Módulo
- ❌ RAG con video — Nos enfocamos en texto + imágenes estáticas. Video se cubre en M7.
- ❌ RAG con audio — La integración con transcripciones existe pero no es el foco.
- ❌ Fine-tuning de modelos de embedding — Usamos modelos pre-entrenados (CLIP, OpenAI).
- ❌ Vector databases en producción (Pinecone, Weaviate, Qdrant) — Usamos ChromaDB por simplicidad. Los conceptos aplican a cualquier vector store.
- ❌ RAG avanzado (grafos de conocimiento, RAG iterativo) — Cubrimos el pipeline fundamental.
- ❌ Evaluación formal de RAG (RAGAS, benchmarks) — Mencionamos métricas pero no frameworks de evaluación.
Modelo Mental: De RAG Clásico a RAG Multimodal
Antes de entrar en las cápsulas técnicas, ten claro este modelo mental:
RAG clásico:
DATOS: [texto, texto, texto, texto]
BÚSQUEDA: texto → texto
CONTEXTO: solo texto
RAG multimodal:
DATOS: [texto, texto, imagen_desc, texto, imagen_desc, texto]
BÚSQUEDA: texto → texto + imagen_desc
imagen → texto + imagen_desc
CONTEXTO: texto + descripciones de imágenes + referencias visuales
La complejidad adicional no está en el concepto (es el mismo pipeline), sino en:
- Representación: ¿Cómo conviertes una imagen en algo buscable?
- Indexación: ¿Cómo almacenas texto e imágenes juntos?
- Retrieval: ¿Cómo combinas resultados de diferentes modalidades?
- Documentos: ¿Cómo preservas la relación texto-imagen en un PDF?
Cada cápsula del módulo responde una de estas preguntas.
Evidencia de Éxito
Al terminar este módulo, sabrás que tuviste éxito si:
- ✅ Puedes generar embeddings para una imagen (vía descripción textual O vía CLIP) y compararlos con embeddings de texto
- ✅ Tu índice en ChromaDB contiene tanto chunks de texto como representaciones de imágenes con metadata correcta
- ✅ Tu búsqueda híbrida encuentra resultados relevantes combinando texto e imagen, con re-ranking
- ✅ Puedes procesar un PDF con figuras y preservar la asociación texto-imagen en el índice
- ✅ Tu pipeline LangChain funciona end-to-end: documento → indexación → query → respuesta
- ✅ Conoces los costos reales y sabes aplicar al menos 3 optimizaciones (caching, batch, CLIP local)
- ✅ Tu proyecto RAG multimodal funciona: indexar documentos, buscar, y obtener respuestas con contexto de texto e imágenes
Autoevaluación rápida
Si puedes responder estas preguntas antes de empezar, probablemente ya tienes la base. Si no, este módulo te las responderá:
- ¿Qué diferencia hay entre generar un embedding de una imagen con CLIP vs describir la imagen y generar un embedding del texto?
- ¿Por qué necesitas re-ranking cuando combinas resultados de búsqueda de texto e imagen?
- ¿Cuánto cuesta describir 500 imágenes con GPT-4o-mini, y cómo lo optimizarías?
- ¿Qué pasa cuando un chunk de texto dice "ver Figura 3" pero el índice no tiene la Figura 3?
Resumen
- RAG multimodal extiende el RAG clásico para indexar y buscar en texto + imágenes.
- El pipeline es: extraer → representar (embeddings) → indexar → buscar → fusionar → responder.
- Hay dos estrategias principales: descripción textual de imágenes (simple) y embeddings multimodales nativos (más preciso).
- Los casos de uso incluyen: documentación técnica, reportes, catálogos, papers, contratos.
- Este módulo cubre 7 cápsulas técnicas + 1 proyecto que juntas construyen un RAG multimodal funcional.
- Es la base directa del Document Analyzer del Módulo 8.
- Tools principales: OpenAI API (embeddings + vision), ChromaDB (vector store), LangChain (framework), CLIP (embeddings nativos opcionales).
Recursos Adicionales
- OpenAI Embeddings Guide — Documentación oficial de embeddings
- ChromaDB Documentation — Vector store que usamos en el módulo
- CLIP Paper (Radford et al.) — El modelo que conecta texto e imágenes
- LangChain RAG — Tutorial oficial de RAG con LangChain
- Multimodal RAG (LlamaIndex) — Referencia de implementación alternativa
- Sentence Transformers — Modelos de embeddings open source
- Pinecone: Multimodal Search — Conceptos de búsqueda multimodal