Daily Scrum - 16 de Octubre 2025

🎯 Sprint 2 - Día 3

Continuando con la implementación del sistema RAG para el chatbot educativo.


✅ ¿Qué hice ayer?

Implementación completa de la primera iteración del servicio RAG:

  1. Stack tecnológico definido y documentado (devLog/notas/RAG_Service_Stack.md):
    • Base de datos vectorial: Qdrant (elegida por escalabilidad y rendimiento)
    • Embeddings: Ollama con modelo nomic-embed-text (768 dimensiones)
    • Framework: LangChain para abstracciones y utilidades
    • API: FastAPI con endpoints para búsqueda e indexación
  2. Arquitectura del servicio implementada (16 archivos nuevos, +1353 líneas):
    • api.py: FastAPI con 5 endpoints funcionales
      • / - Información del servicio
      • /health - Health check con estado de Qdrant
      • /search - Búsqueda semántica con filtros
      • /index - Indexación de documentos
      • /collection/info - Información de la colección vectorial
    • config.py: Configuración centralizada con Pydantic Settings
    • models.py: Modelos de datos completos (Document, QueryRequest, QueryResponse, etc.)
    • embeddings.py: Servicio de embeddings con Ollama
    • vector_store.py: Operaciones con Qdrant (búsqueda, indexación, filtrado)
    • document_processor.py: Chunking automático con RecursiveCharacterTextSplitter
  3. Características implementadas:
    • ✅ Chunking inteligente de documentos con overlap configurable (1000 chars, 200 overlap)
    • ✅ Filtrado por metadata (asignatura, tipo_documento, fecha, tema, etc.)
    • ✅ Búsqueda semántica con umbral de similitud configurable
    • ✅ Sistema de logging completo
    • ✅ Singleton patterns para servicios (embedding, vector store)
    • ✅ Preservación de metadata en chunks
  4. Infraestructura Docker:
    • Actualizado docker-compose.yml con servicios:
      • qdrant: Base de datos vectorial con persistencia
      • ollama: Servidor de embeddings (ya existente)
      • rag-service: Microservicio RAG (puerto 8081)
    • Dockerfile optimizado para el servicio RAG
    • Script init_ollama.sh para pre-cargar modelo de embeddings
  5. Documentación completa:
    • README exhaustivo con ejemplos de uso
    • Documentación de configuración y variables de entorno
    • Instrucciones de instalación (Docker y local)
    • Modelo de metadata documentado

Commit realizado: 49c89b2 - “chore: Added first iteration of RAG service”


🚀 ¿Qué haré hoy?

Testing y validación del servicio RAG:

  1. Implementar tests unitarios:
    • Tests para document_processor.py (chunking, metadata preservation)
    • Tests para embeddings.py (generación de embeddings)
    • Tests para vector_store.py (indexación, búsqueda, filtros)
    • Tests para endpoints de la API
  2. Pruebas de integración:
    • Verificar funcionamiento completo del stack (Qdrant + Ollama + RAG Service)
    • Probar flujo completo: indexación → búsqueda → retrieval
    • Validar filtros de metadata
  3. Optimizaciones y mejoras:
    • Revisar configuración de chunking (¿es óptimo 1000/200?)
    • Implementar generación de IDs única para documentos (UUID vs hash)
    • Evaluar necesidad de caché de embeddings
  4. Documentación adicional:
    • Crear docs/CHUNKING.md con estrategias de chunking
    • Documentar flujos de datos y arquitectura
    • Añadir ejemplos de uso práctico

🚧 Obstáculos

Identificados:

  • ⚠️ Falta sistema de tests - crítico antes de continuar desarrollo
  • ⚠️ Generación de IDs de puntos en Qdrant usa índice secuencial - puede causar conflictos en producción
  • ⚠️ No hay validación de que Ollama tenga el modelo nomic-embed-text descargado

A resolver:

  • Implementar generación de IDs robusta (UUID o hash del contenido)
  • Añadir verificación de modelo en init_ollama.sh
  • Crear suite de tests completa antes de integrar con el backend principal

📊 Progreso del Sprint 2

Issue #8 - Sistema RAG:

  • Estado: 🟡 En progreso (70% completado)
  • Completado:
    • ✅ Investigación de stack tecnológico
    • ✅ Implementación de servicio base
    • ✅ API REST funcional
    • ✅ Chunking y embedding
    • ✅ Búsqueda con filtros
    • ✅ Dockerización
    • ✅ Documentación básica
  • Pendiente:
    • ⏳ Tests unitarios e integración
    • ⏳ Optimizaciones
    • ⏳ Documentación avanzada
    • ⏳ Integración con backend principal

💡 Decisiones técnicas tomadas

  1. Qdrant sobre ChromaDB: Mayor escalabilidad y mejor rendimiento para búsquedas
  2. nomic-embed-text: Modelo de embeddings optimizado, 768 dimensiones, buen balance calidad/velocidad
  3. LangChain: Framework maduro con buenas abstracciones para RAG
  4. Chunk size 1000/overlap 200: Basado en mejores prácticas, a validar empíricamente
  5. FastAPI: Consistencia con el resto del proyecto

🎯 Meta para mañana

  • Suite de tests completa funcionando
  • Primera prueba de integración exitosa con documentos reales
  • Decisión sobre ID generation strategy
  • Comenzar integración con el backend principal

📝 Notas adicionales

Recursos útiles creados:

  • devLog/notas/RAG_Service_Stack.md - Documentación técnica completa del stack
  • rag-service/README.md - Guía de uso del servicio

Próximos microservicios a considerar:

  • Servicio de scraping de PRADO (cuando corresponda)
  • Servicio de procesamiento de PDFs/documentos