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:

  1. ✅ Búsqueda semántica conceptual
  2. ✅ Búsqueda exacta (metadata)
  3. ✅ Q&A con LLM
  4. ✅ Diversidad de resultados

No funcionales:

  1. ✅ Latencia < 2s (p95)
  2. ✅ Costo < $2000/mes
  3. ✅ Escalable a 200K docs

Restricciones:

  1. ✅ Embeddings locales (datos privados)
  2. ✅ Presupuesto limitado
  3. ✅ Equipo pequeño

Tu tarea (Etapa 1)

Ahora que conoces requisitos y restricciones, analiza:

  1. ¿Qué requisitos son conflictivos?
    (Ej: Latencia < 2s vs Embeddings locales)

  2. ¿Qué restricciones impactan decisiones técnicas?
    (Ej: Datos privados → NO OpenAI para embeddings)

  3. ¿Qué trade-offs anticipas?
    (Ej: Precision vs Latencia vs Costo)


Próxima etapa: 03-architecture-design.md — Diseñar arquitectura completa del sistema.