English · Español
Fase 29 — Generación aumentada con recuperación (RAG)¶
Requiere: 13 — Embeddings y espacios de representación · 28 — Fine-tuning, LoRA, QLoRA Enseña:
rag·chunking·bm25·hnsw·hybrid-search·rerankingSalta a cualquier capítulo desde el índice de referencia de fases.
Mapa del capítulo¶
Preescrita según A12. La teoría y los enunciados de los laboratorios son borradores estables; las soluciones se escriben justo a tiempo al abrir la fase.
RAG = recuperar primero, generar después. En vez de meter las reglas de gramática en los pesos del modelo, las dejamos en una base vectorial y las traemos al vuelo. Para consultas como "¿cuál es el past participle de eat?" basta con MiniGPT + un buen retriever. Esta fase construye el pipeline a mano: chunker, embedding store, BM25, reranker, lector.
Objetivo¶
Construir un pipeline mínimo de RAG (Retrieval-Augmented Generation) anclado en una base de conocimiento curada a mano con reglas de gramática verbal inglesa (cubriendo el alcance de §A13: 5 tiempos, 3 personas, 20 verbos, más pares en español). Dada una consulta como "what's the past participle of eat?" o "how do you say 'I will work' in Spanish?", el pipeline recupera los chunks de reglas relevantes, opcionalmente los rerankea, y pide a MiniGPT (con el adaptador LoRA de la Fase 28) que produzca una respuesta fundamentada (grounding) con citas.
El artefacto es un CLI: verb-tutor ask "what's the past participle of eat?" → respuesta + lista (chunk_id, score).
Ubicación del módulo¶
El toolkit de RAG vive en src/minirag/ (nuevo en esta fase): chunk.py, embed.py, index.py, bm25.py, retrieve.py, rerank.py, generate.py, cli.py. La base de conocimiento vive en data/kb/grammar-rules/. Ver src/minirag/BLUEPRINT.md para el contrato de la API.
Orden de lectura¶
theory/00-motivation.md— por qué RAG; el tradeoff closed-book vs open-book en LLMs.theory/01-embeddings-and-biencoders.md— bi-encoders, cross-encoders, objetivos de entrenamiento.theory/02-chunking-and-indexes.md— estrategias de chunking; flat / IVF / HNSW; las estructuras.theory/03-hybrid-search-and-reranking.md— BM25, dense, RRF, pipelines de reranking.theory/04-evaluation.md— hit-rate, MRR, recall@k, faithfulness, métricas end-to-end.lab/00-kb-curation.md— curar a mano la KB de 50 chunks de reglas gramaticales.lab/01-bi-encoder-baseline.md— implementar recuperación (retrieval) densa; medir hit-rate@k.lab/02-bm25-and-hybrid.md— implementar BM25; combinar con dense vía RRF; mostrar que el híbrido gana.lab/03-end-to-end-rag.md— conectar reader + retriever + CLI; medir faithfulness.
solutions/ se rellena al abrir la fase, una vez que la API de src/minirag/ se estabilice.
Definition of Done¶
Ver PHASE_29_PLAN.md §6. Brevemente:
- KB curada (~50 chunks, matriz verbo-tiempo-persona §A13 + español).
src/minirag/{chunk,embed,index,bm25,retrieve,rerank,generate,cli}.pyimplementados.- Hit-rate@5 ≥ 0.80; MRR ≥ 0.60 en el conjunto sintético de eval.
- Híbrido bate a dense-solo y a BM25-solo por ≥ 5pp en hit-rate@5.
- Faithfulness ≥ 70% en una eval cualitativa de 30 consultas.
- El CLI
verb-tutor askfunciona de extremo a extremo con citas.
Lo que esta fase intencionalmente NO cubre¶
langchain/llama-index/haystack. Anti-goal §10. Lo construimos todo a mano.- Bases vectoriales a escala de producción. Nada de Pinecone, Weaviate o Milvus. FAISS-flat sobra para una KB de 50 docs.
- Recuperación multimodal. Solo texto.
- Reescritura de consultas (HyDE, multi-query). Mencionado en la teoría; no implementado. Se revisita en la Fase 32 si resulta útil.
- Infraestructura de streaming / serving. Fase 33.
- Fine-tuning del modelo de embedding. Usamos un modelo preentrenado
sentence-transformerstal cual. - Entrenamiento del reranker. Usamos un cross-encoder preentrenado tal cual.
- Tool-calling para recuperación. Territorio de la Fase 31 (MCP).
El alcance de la Fase 29 es un pipeline RAG pequeño, hecho a mano, fundamentado en reglas de gramática verbal, con métricas medibles de recuperación y faithfulness. Nada más.
Lecturas recomendadas¶
Opcional — enriquece pero no es necesario para aprobar la fase.
- 📄 Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks — Lewis et al. · 2020. el paper que bautizó RAG.
- 📄 Dense Passage Retrieval for Open-Domain QA — Karpukhin et al. · 2020. retrieval con bi-encoder bien hecho.
- 📄 Efficient and Robust ANN Search using HNSW — Malkov & Yashunin · 2016. el índice tras toda base de datos vectorial.