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.