Capítulo 1: Métricas de Evaluación en RAG
Dos Áreas de Evaluación
| Área | Qué Mide | Métricas Clave |
|---|---|---|
| Recuperación | Calidad de los documentos recuperados | Precisión, Recall, MRR |
| Generación | Calidad de la respuesta del LLM | Fidelidad, Relevancia |
Métricas de Recuperación
Precisión@K
def precision_at_k(retrieved_ids, relevant_ids, k):
"""¿Qué % de los documentos recuperados son relevantes?"""
retrieved_k = set(retrieved_ids[:k])
relevant = set(relevant_ids)
return len(retrieved_k & relevant) / k
# Recuperados: [A, B, C, D, E], Relevantes: [A, C, F]
# Precisión@5 = 2/5 = 0.4
Recall@K
def recall_at_k(retrieved_ids, relevant_ids, k):
"""¿Qué % de los documentos relevantes fueron recuperados?"""
retrieved_k = set(retrieved_ids[:k])
relevant = set(relevant_ids)
return len(retrieved_k & relevant) / len(relevant)
# Recuperados: [A, B, C, D, E], Relevantes: [A, C, F]
# Recall@5 = 2/3 = 0.67
MRR (Mean Reciprocal Rank)
def reciprocal_rank(retrieved_ids, relevant_ids):
"""¿Qué tan alto está el primer documento relevante?"""
for i, doc_id in enumerate(retrieved_ids):
if doc_id in relevant_ids:
return 1 / (i + 1)
return 0
# Si el primer relevante está en la posición 3: RR = 1/3 = 0.33
Métricas de Generación
Fidelidad
¿La respuesta utiliza SOLO información del contexto?
# Alta fidelidad:
# Contexto: "La política permite devoluciones en 30 días"
# Respuesta: "Puede devolver artículos dentro de los 30 días"
# Baja fidelidad (alucinación):
# Contexto: "La política permite devoluciones en 30 días"
# Respuesta: "Puede devolver artículos dentro de los 60 días para un reembolso completo"
Relevancia de la Respuesta
¿La respuesta realmente responde a la pregunta?
Relevancia del Contexto
¿Los fragmentos recuperados son relevantes para la pregunta?
Resumen de Métricas
| Métrica | Qué Mide | Objetivo |
|---|---|---|
| Precisión@K | Relevancia de lo recuperado | >0.8 |
| Recall@K | Cobertura | >0.9 |
| MRR | Calidad del ranking | >0.7 |
| Fidelidad | Sin alucinaciones | >0.9 |
| Relevancia | Calidad de la respuesta | >0.8 |