RAG es el patrón más útil de la IA aplicada: fundamenta un modelo en tus datos para que responda con hechos, no con intuiciones. Así se construye uno que sobrevive a usuarios reales, no solo a una demo.
El pipeline
- Ingesta — trae documentos desde tus fuentes.
- Chunking — divide pensando en la estructura, no en un número fijo de caracteres.
- Embeddings — convierte los fragmentos en vectores.
- Almacenamiento — una base de datos vectorial (pgvector funciona muy bien) con buenos metadatos.
- Recuperación — búsqueda vectorial de los top-k fragmentos relevantes.
- Reranking — una segunda pasada que conserva solo los mejores.
- Fundamentación — construye el prompt a partir del contexto recuperado.
- Responde con citas — devuelve siempre las fuentes.
Un esbozo
def answer(question: str) -> Answer:
docs = retrieve(question, k=8) # vector search
docs = rerank(question, docs)[:4] # keep the best
context = format_context(docs)
reply = llm.complete(SYSTEM, question, context)
return Answer(text=reply, sources=[d.id for d in docs])
Qué lo hace "de producción"
Una demo se detiene en el paso 8. Un sistema de producción añade:
- Evals — un conjunto de prueba + análisis de errores para demostrar la calidad.
- Observabilidad — traza la pregunta, el contexto recuperado, los tokens y la latencia.
- Controles — reintentos, timeouts, caché y un presupuesto de coste.
- Seguridad — validación de entradas y defensa contra prompt injection.
Consulta arquitectura GenAI lista para producción para la lista completa de capas.
Depurar RAG
Cuando las respuestas fallan, revisa primero la recuperación. Registra el contexto recuperado — ¿se llegó a traer el fragmento correcto? Arregla el chunking y el reranking antes de tocar el prompt o el modelo. Es también una pregunta de entrevista muy común.
Siguiente paso
Este es el proyecto uno de la hoja de ruta. Constrúyelo, súbelo a GitHub y úsalo como pieza central de tu portafolio — mira 5 proyectos de IA que te consiguen empleo.