rag-notas

Asistente que responde preguntas sobre documentación técnica en español a partir de los fragmentos que recupera, con citas. Cada etapa está hecha primero sin frameworks y se mide antes de pasar a la siguiente.

Estado
En desarrollo
Áreas
IA, Backend
Tecnologías
  • Python
  • ChromaDB
  • sentence-transformers
  • multilingual-e5-large
  • bge-reranker-v2-m3
  • Ollama (qwen2.5:14b)

Demo interactiva

Qué hace

  • Corpus de 20 documentos públicos (Kubernetes, Pro Git y MDN), unas 50.000 palabras
  • Troceado por secciones Markdown y fragmentos de 800 caracteres con 100 de solape
  • Búsqueda vectorial con embeddings locales y reranker cross-encoder sobre 25 candidatos
  • Respuestas con citas [n] y una frase fija cuando la respuesta no está en los documentos
  • Evaluación propia con 28 preguntas escritas a mano, incluidas 5 sin respuesta en el corpus

Qué aprendí

  • Medir antes de optimizar: el reranker sube el recall@1 de 0,57 a 0,65 pero no cambia el recall@5 (0,91)
  • Los fallos suelen estar en la recuperación: la traducción de Pro Git dice «reorganizar», no «rebase»
  • Un LLM local servido desde otro equipo de la red, con el firewall cerrado porque Ollama no tiene autenticación
  • Probar el sistema contra prompt injection con un documento trampa

En desarrollo: falta evaluar la calidad de las respuestas y añadir búsqueda híbrida. La demo busca en un extracto real del corpus con BM25 dentro del navegador; el proyecto usa búsqueda vectorial y un LLM que no se pueden ejecutar aquí.

Cómo está montado

  1. 20 documentosMarkdown limpio
  2. ingest.pytroceado + embeddings
  3. ChromaDBbúsqueda vectorial
  4. Reranker25 candidatos
  5. generate.pyLLM local + citas