Asistente RAG de curso
Asistente RAG local para consultar los PDF del curso CINF104 con Ollama, LangChain y ChromaDB.
01 Problema y contexto
Estudiar un curso desde decenas de PDF implica buscar a mano; los buscadores por palabra clave fallan con preguntas en lenguaje natural y los LLM genéricos alucinan contenido que no está en el material.
02 Solución
Pipeline RAG con LangChain (LCEL): carga de PDF con PyPDF, chunking recursivo (1000/200), embeddings FastEmbed (BAAI/bge-small-en-v1.5) y recuperación top-5 desde ChromaDB. La generación corre en LLMs locales vía Ollama (llama3:8b, mistral, phi) con un prompt que restringe la respuesta al contexto recuperado, cita la página fuente y responde explícitamente cuando la información no está en los documentos.
03 Cómo está construido
Asistente conversacional basado en la arquitectura RAG (Retrieval-Augmented Generation) para consultar en lenguaje natural los materiales en PDF del curso CINF104 — Aprendizaje de Máquina. Indexa los documentos con embeddings locales (FastEmbed) en ChromaDB y responde usando LLMs locales servidos por Ollama, con una cadena LangChain que restringe las respuestas al contexto recuperado. Toda la solución (app Streamlit y servidor Ollama) se orquesta con Docker Compose, con persistencia de modelos y base vectorial.
04 Aspectos destacados
- Pipeline RAG completo con LangChain (LCEL): PyPDF, chunking recursivo (1000/200), embeddings FastEmbed y recuperación top-5 desde ChromaDB.
- Ejecución 100% local y privada: LLMs servidos por Ollama en contenedor Docker, sin dependencia de APIs externas.
- Orquestación con Docker Compose de dos servicios (Ollama y app Streamlit) con red propia y volúmenes persistentes.
- Interfaz de chat en Streamlit con selección dinámica de modelo (llama3:8b, mistral, phi) y control de temperatura.
- Prompt de RAG restringido al contexto recuperado, con cita de página fuente y respuesta explícita cuando la información no está en los documentos.