Módulo 8: Proyecto Final Integrador
2. Etapa 1: Requisitos y Restricciones del Proyecto
Descripción
Antes de diseñar, debes entender a fondo el problema. Esta etapa cubre requisitos funcionales, no funcionales, restricciones, y usuarios objetivo.
El caso completo: Sistema RAG académico
Contexto organizacional
Cliente: Universidad pública (20K estudiantes, 1K profesores)
Problema actual:
- Estudiantes buscan papers en sistema antiguo (keyword only)
- Muchas consultas fallidas ("no encontré nada útil")
- Tiempo promedio de búsqueda: 15-30 minutos por paper
- Investigadores duplican esfuerzos (no encuentran trabajos previos)
Visión:
Chatbot inteligente que responde preguntas y sugiere papers relevantes instantáneamente.
Requisitos funcionales
RF1: Búsqueda semántica conceptual
Usuario: "papers sobre deep learning aplicado a medicina"
Sistema:
→ Encuentra papers aunque NO contengan exactamente "deep learning" o "medicina"
→ Entiende sinónimos: "neural networks", "healthcare", "medical imaging"
→ Retorna top-20 papers más relevantes
Métrica de éxito: Precision@10 > 0.75
RF2: Búsqueda exacta (autor, título, año)
Usuario: "tesis de María González 2021"
Sistema:
→ Filtro exacto: author="María González" AND year=2021
→ Retorna solo tesis (no papers, no otros documentos)
Métrica de éxito: Recall@5 = 1.0 (encuentra todos los matches exactos)
RF3: Q&A sobre contenido
Usuario: "¿Qué metodología usa el paper de Smith sobre NLP?"
Sistema:
→ Busca paper de Smith
→ Extrae sección de metodología
→ LLM genera resumen: "El paper usa transformer-based model..."
Métrica de éxito: Respuestas citadas (con fuente) en 90% de casos
RF4: Sugerencia de papers relacionados (diversidad)
Usuario busca: "optimization algorithms"
Sistema retorna:
- Paper A: Gradient descent (optimization)
- Paper B: Genetic algorithms (optimization)
- Paper C: Simulated annealing (optimization)
- Paper D: Applications in robotics (related field)
→ Diversidad: múltiples enfoques + campo relacionado
Métrica de éxito: Diversity score (disciplinas) ≥ 3 en top-20
RF5: Filtros por metadata
Filtros disponibles:
- Autor
- Año (rango: 2000-2024)
- Departamento (CS, Physics, Biology, Math, etc.)
- Tipo (paper, tesis, guía de estudio)
Usuario: "papers de CS sobre AI después de 2020"
Sistema:
→ Filtro: department=CS AND topic~"AI" AND year>=2020
Requisitos no funcionales
RNF1: Latencia
Target: < 2 segundos (p95)
Breakdown aceptable:
- Query embedding: < 200ms
- kNN search: < 100ms
- Reranking: < 300ms
- LLM generation: < 1500ms
Total: 2100ms
RNF2: Escalabilidad
Dataset inicial: 100K documentos
Crecimiento: +5K documentos/año
Sistema debe soportar:
- 200K documentos sin degradación de latencia
RNF3: Disponibilidad
Uptime target: 99.5% (SLA)
→ Downtime máximo: 3.65 horas/mes
RNF4: Costo
Presupuesto: $2000/mes
Queries esperadas: 50K/mes
(20K estudiantes × 2.5 queries/mes en promedio)
Restricciones
Restricción 1: Datos privados (no pueden salir de la universidad)
→ NO usar APIs externas para embeddings (OpenAI, Cohere)
→ Opción: Modelo local (Sentence-BERT)
Excepción: LLM puede ser API externa (GPT-4) si datos de query no son sensibles.
Restricción 2: Presupuesto limitado ($2000/mes)
→ Priorizar soluciones cost-effective
→ Self-hosting cuando sea posible
Restricción 3: Equipo pequeño (2 ingenieros)
→ Evitar soluciones muy complejas (múltiples servicios)
→ Priorizar managed services (menos mantenimiento)
Restricción 4: Documentos en múltiples formatos
Formatos:
- 60% PDFs (papers)
- 30% LaTeX source (tesis)
- 10% DOCX (guías de estudio)
→ Sistema debe parsear todos los formatos
Usuarios objetivo
Perfil 1: Estudiantes de grado (50% de queries)
Queries típicas:
- "papers sobre [tema del curso]"
- "guías de estudio de [materia]"
- "resumen de [concepto]"
Expectativas:
- Latencia baja (< 2s)
- Resultados fáciles de entender
Perfil 2: Investigadores (40% de queries)
Queries típicas:
- "papers sobre [tema muy específico]"
- "trabajos de [autor específico]"
- "metodología de [paper]"
Expectativas:
- Alta precisión (Precision@10 > 0.80)
- Diversidad de resultados
Perfil 3: Profesores (10% de queries)
Queries típicas:
- "material de [curso]"
- "papers recientes sobre [tema]"
Expectativas:
- Filtros avanzados (año, departamento)
Datos del dataset
Estadísticas:
Total documentos: 100K
Distribución por tipo:
- Papers (journals): 60K
- Tesis (masters/PhD): 25K
- Guías de estudio: 15K
Distribución por departamento:
- CS: 30K
- Physics: 20K
- Biology: 20K
- Math: 15K
- Otros: 15K
Distribución por año:
- 2000-2010: 20K
- 2011-2020: 50K
- 2021-2024: 30K
Tamaño promedio:
- Paper: 8 páginas (~10K tokens)
- Tesis: 80 páginas (~100K tokens)
- Guía: 20 páginas (~25K tokens)
Total tokens: ~3.5B tokens
(60K papers × 10K + 25K tesis × 100K + 15K guías × 25K
= 600M + 2,500M + 375M ≈ 3,475M)
Resumen de requisitos críticos
Funcionales:
- ✅ Búsqueda semántica conceptual
- ✅ Búsqueda exacta (metadata)
- ✅ Q&A con LLM
- ✅ Diversidad de resultados
No funcionales:
- ✅ Latencia < 2s (p95)
- ✅ Costo < $2000/mes
- ✅ Escalable a 200K docs
Restricciones:
- ✅ Embeddings locales (datos privados)
- ✅ Presupuesto limitado
- ✅ Equipo pequeño
Tu tarea (Etapa 1)
Ahora que conoces requisitos y restricciones, analiza:
-
¿Qué requisitos son conflictivos?
(Ej: Latencia < 2s vs Embeddings locales) -
¿Qué restricciones impactan decisiones técnicas?
(Ej: Datos privados → NO OpenAI para embeddings) -
¿Qué trade-offs anticipas?
(Ej: Precision vs Latencia vs Costo)
Próxima etapa: 03-architecture-design.md — Diseñar arquitectura completa del sistema.