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:
- 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
- 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 Settingsmodels.py: Modelos de datos completos (Document, QueryRequest, QueryResponse, etc.)embeddings.py: Servicio de embeddings con Ollamavector_store.py: Operaciones con Qdrant (búsqueda, indexación, filtrado)document_processor.py: Chunking automático con RecursiveCharacterTextSplitter
- 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
- Infraestructura Docker:
- Actualizado
docker-compose.ymlcon servicios:qdrant: Base de datos vectorial con persistenciaollama: Servidor de embeddings (ya existente)rag-service: Microservicio RAG (puerto 8081)
- Dockerfile optimizado para el servicio RAG
- Script
init_ollama.shpara pre-cargar modelo de embeddings
- Actualizado
- 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:
- 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
- Tests para
- 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
- 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
- Documentación adicional:
- Crear
docs/CHUNKING.mdcon estrategias de chunking - Documentar flujos de datos y arquitectura
- Añadir ejemplos de uso práctico
- Crear
🚧 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-textdescargado
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
- Qdrant sobre ChromaDB: Mayor escalabilidad y mejor rendimiento para búsquedas
- nomic-embed-text: Modelo de embeddings optimizado, 768 dimensiones, buen balance calidad/velocidad
- LangChain: Framework maduro con buenas abstracciones para RAG
- Chunk size 1000/overlap 200: Basado en mejores prácticas, a validar empíricamente
- 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 stackrag-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