Módulo 6: Diseño de Sistemas de Búsqueda
6. Evaluación de Calidad de Búsqueda
Descripción
¿Cómo saber si tu sistema de búsqueda es bueno? Esta cápsula cubre métricas estándar: precision, recall, MRR (Mean Reciprocal Rank), NDCG (Normalized Discounted Cumulative Gain), y cómo crear un evaluation set.
Conceptos base
Ground truth (verdad esperada):
Para cada query de prueba, defines qué documentos SON relevantes.
Ejemplo:
Query: "cómo usar Pinecone"
Ground truth (documentos relevantes):
- Doc 12 (guía de setup)
- Doc 34 (tutorial básico)
- Doc 56 (FAQ)
Documentos NO relevantes:
- Doc 78 (comparación Pinecone vs Weaviate)
- Doc 90 (pricing de Pinecone)
Métrica 1: Precision
Definición:
De los documentos retornados, ¿cuántos son relevantes?
Fórmula:
Precision@K = (Documentos relevantes en top-K) / K
Ejemplo:
Query: "cómo usar Pinecone"
Ground truth: [Doc 12, Doc 34, Doc 56]
Sistema retorna top-5:
1. Doc 12 ✅
2. Doc 78 ❌
3. Doc 34 ✅
4. Doc 90 ❌
5. Doc 56 ✅
Precision@5 = 3/5 = 0.60 (60%)
Interpretación:
- Precision@5 = 1.0 → Todos los top-5 son relevantes (perfecto)
- Precision@5 = 0.0 → Ninguno es relevante (pésimo)
Métrica 2: Recall
Definición:
De todos los documentos relevantes, ¿cuántos fueron retornados?
Fórmula:
Recall@K = (Documentos relevantes en top-K) / (Total relevantes)
Ejemplo (mismo caso):
Ground truth: 3 documentos relevantes [Doc 12, Doc 34, Doc 56]
Sistema retorna top-5: [12, 78, 34, 90, 56]
Documentos relevantes retornados: 3 (Doc 12, 34, 56)
Recall@5 = 3/3 = 1.0 (100%)
Si sistema solo hubiera retornado top-3:
Top-3: [Doc 12, Doc 78, Doc 34]
Relevantes retornados: 2 (Doc 12, 34)
Recall@3 = 2/3 ≈ 0.67 (67%)
Precision vs Recall trade-off
Escenario:
- Retornar pocos resultados → Alta precision, bajo recall
- Retornar muchos resultados → Alto recall, baja precision
Ejemplo:
Ground truth: [Doc A, Doc B, Doc C]
Sistema 1 (top-3): [Doc A, Doc B, Doc X]
Precision@3 = 2/3 ≈ 0.67
Recall@3 = 2/3 ≈ 0.67
Sistema 2 (top-10): [Doc A, Doc B, Doc C, Doc X, Doc Y, ...]
Precision@10 = 3/10 = 0.30
Recall@10 = 3/3 = 1.0
Trade-off: Más resultados → Más recall, menos precision.
Métrica 3: MRR (Mean Reciprocal Rank)
Definición:
Posición del primer documento relevante (promediado sobre múltiples queries).
Fórmula:
RR = 1 / (posición del primer relevante)
MRR = Promedio de RR sobre todas las queries
Ejemplo:
Query 1: Primer relevante en posición 1
RR1 = 1/1 = 1.0
Query 2: Primer relevante en posición 3
RR2 = 1/3 ≈ 0.33
Query 3: Primer relevante en posición 2
RR3 = 1/2 = 0.5
MRR = (1.0 + 0.33 + 0.5) / 3 ≈ 0.61
Interpretación:
- MRR = 1.0 → Primer resultado siempre relevante (perfecto)
- MRR = 0.5 → Primer relevante en posición 2 en promedio
- MRR < 0.3 → Sistema pobre
Métrica 4: NDCG (Normalized Discounted Cumulative Gain)
¿Por qué NDCG?
Precision/Recall no consideran orden. NDCG penaliza relevantes en posiciones bajas.
Fórmula (simplificada):
DCG@K = Σ (relevance_i / log2(position_i + 1))
NDCG@K = DCG@K / IDCG@K
IDCG (Ideal DCG): DCG si resultados estuvieran en orden perfecto.
Ejemplo:
Query: "Python tutorial"
Ground truth relevancia (0-3):
- Doc A: 3 (muy relevante)
- Doc B: 2 (relevante)
- Doc C: 1 (algo relevante)
- Doc D: 0 (no relevante)
Sistema retorna:
1. Doc B (relevancia: 2)
2. Doc D (relevancia: 0)
3. Doc A (relevancia: 3)
DCG@3:
= 2/log2(2) + 0/log2(3) + 3/log2(4)
= 2/1 + 0 + 3/2
= 2 + 0 + 1.5
= 3.5
IDCG@3 (orden ideal: A, B, C):
= 3/log2(2) + 2/log2(3) + 1/log2(4)
= 3/1 + 2/1.58 + 1/2
≈ 3 + 1.26 + 0.5
= 4.76
NDCG@3 = 3.5 / 4.76 ≈ 0.735
Interpretación:
- NDCG = 1.0 → Orden perfecto
- NDCG = 0.735 → Bueno (Doc A debería estar primero)
Crear evaluation set
Paso 1: Define queries de prueba
Query 1: "cómo usar Pinecone"
Query 2: "diferencia entre HNSW e IVF"
Query 3: "qué es RAG"
...
(20-100 queries típicas)
Paso 2: Labeling (manual)
Para cada query:
- Ejecutar sistema actual
- Revisar top-20 resultados
- Etiquetar como relevante (1) o no (0)
- Guardar ground truth
Paso 3: Calcular métricas
Para cada query:
- Ejecutar sistema
- Comparar con ground truth
- Calcular Precision@K, Recall@K, MRR, NDCG
Promediar métricas sobre todas las queries
Benchmarking
Antes de cambios:
Precision@5: 0.65
Recall@10: 0.80
MRR: 0.55
NDCG@10: 0.70
Después de agregar reranking:
Precision@5: 0.78 (+13%)
Recall@10: 0.80 (sin cambio)
MRR: 0.68 (+13%)
NDCG@10: 0.82 (+12%)
Conclusión: Reranking mejora precision y ranking, sin afectar recall.
Resumen
Puntos clave:
- Precision: ¿Cuántos retornados son relevantes?
- Recall: ¿Cuántos relevantes fueron retornados?
- MRR: Posición del primer relevante
- NDCG: Calidad del ranking (orden importa)
- Evaluation set: 20-100 queries etiquetadas
Próxima cápsula: 07-case-studies.md — RAG, e-commerce, soporte.