Módulo 3 — RAG systems y evaluación (2 ECTS · 55 h)
Retrieval-Augmented Generation es hoy el patrón más desplegado en producción para conectar LLMs con conocimiento privado o actualizado. Este módulo cubre el pipeline completo — ingesta, chunking, embeddings, indexado, re
Retrieval-Augmented Generation es hoy el patrón más desplegado en producción para conectar LLMs con conocimiento privado o actualizado. Este módulo cubre el pipeline completo — ingesta, chunking, embeddings, indexado, retrieval, reranking y generación — y, con el mismo peso, cómo evaluarlo: un RAG sin métricas es una demo, no un sistema.
Objetivos de aprendizaje#
Al terminar el módulo deberías ser capaz de:
- Diseñar la arquitectura de un sistema RAG completo y justificar cada decisión (chunking, modelo de embeddings, vector DB, top-k, reranking) con trade-offs reales.
- Elegir base de datos vectorial según el caso: Pinecone, Weaviate, Qdrant, pgvector, Chroma — y saber cuándo NO hace falta una vector DB dedicada.
- Implementar y comparar estrategias de chunking (fixed, semantic, hierarchical, late chunking) midiendo su efecto en retrieval, no por intuición.
- Añadir reranking con cross-encoders y entender qué aporta ColBERT como término medio.
- Aplicar técnicas avanzadas (HyDE, multi-query, Self-RAG, CRAG) sabiendo cuándo compensan su coste extra.
- Montar RAG gestionado con Amazon Bedrock Knowledge Bases y saber qué delegas y qué no.
- Evaluar un pipeline con RAGAS (faithfulness, answer relevancy, context precision/recall) y construir datasets de evaluación propios.
- Detectar y mitigar alucinaciones con métricas y herramientas concretas.
- Construir una aplicación RAG full-stack (FastAPI + Next.js + vector DB) con evaluación automatizada en CI.
Requisitos previos#
- Módulos 1 y 2 completados (API de OpenAI, tokenización, prompting, structured outputs).
- Docker Desktop instalado (para el lab de Qdrant y el proyecto).
- Dependencias del grupo
raginstaladas desde la raíz del repo:
uv sync --extra rag
RAGAS 0.4.3 no comparte entorno con OpenAI SDK 3.x por una restricción transitiva de
Instructor. La evaluación live usa el entorno aislado descrito en
../setup/README.md; los proxies offline no necesitan esa dependencia.
.enven la raíz del repo conOPENAI_API_KEYsolo para los modos generativos. Los labs usan embeddings locales por defecto y ofrecen--lexical/--offline; únicamente la generación y la evaluación RAGAS hacen llamadas de pago.
Orden de estudio y tiempo estimado (~55 h)#
| # | Teoría | Lab asociado | Horas |
|---|---|---|---|
| 1 | 01 — Arquitectura RAG | — | 4 |
| 2 | 02 — Embeddings y vector DBs | 01_embeddings_similitud.py | 7 |
| 3 | (repaso 01 + 02) | 02_rag_minimo.py | 4 |
| 4 | 03 — Chunking | 03_chunking_comparado.py | 6 |
| 5 | 04 — Reranking | 04_reranking.py | 5 |
| 6 | 05 — RAG avanzado | 05_rag_avanzado_multiquery_hyde.py | 6 |
| 7 | 06 — Bedrock Knowledge Bases | — (opcional en AWS) | 3 |
| 8 | 07 — Evaluación con RAGAS | 06_evaluacion_ragas.py | 6 |
| 9 | 08 — Alucinaciones | — | 3 |
| 10 | Ejercicios | Tests y rúbrica de aceptación | 4 |
| 11 | Proyecto del módulo | — | 12 |
Estructura del módulo#
modulo-03-rag/
├── README.md ← estás aquí
├── teoria/ ← 8 capítulos de teoría
├── labs/ ← 6 labs ejecutables + corpus en labs/data/
│ └── data/ ← docs de "NebulaOps" (corpus) + eval_dataset.json
├── ejercicios.md ← 12 ejercicios con criterios verificables
└── proyecto/ ← especificación + baseline backend FastAPI probado
El corpus de los labs#
Todos los labs trabajan sobre el mismo corpus: la documentación interna ficticia de
NebulaOps, una empresa SaaS de observabilidad (handbook, runbooks, políticas, producto,
FAQ). Está en labs/data/ junto con eval_dataset.json (preguntas con
ground truth). Usar un corpus común permite comparar técnicas entre labs con las mismas
preguntas.
Criterio de superación del módulo#
- Los 6 labs ejecutados y entendidos (no solo ejecutados).
- Al menos 10 de los 12 ejercicios superan sus criterios de aceptación.
- Proyecto: pipeline RAG completo con score RAGAS medio ≥ 0.75 sobre el dataset de evaluación (ver criterios de aceptación).