Pular para o conteúdo principal

Capítulo 1: Métricas de Avaliação de RAG

Duas Áreas de Avaliação​

ÁreaO Que MedePrincipais Métricas
RecuperaçãoQualidade dos documentos recuperadosPrecisão, Revocação, MRR
GeraçãoQualidade da resposta do LLMFidedignidade, Relevância

Métricas de Recuperação​

Precisão@K​

def precision_at_k(retrieved_ids, relevant_ids, k):
"""Qual % dos documentos recuperados são 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]
# Precisão@5 = 2/5 = 0.4

Revocação@K​

def recall_at_k(retrieved_ids, relevant_ids, k):
"""Qual % dos documentos relevantes foi recuperado?"""
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]
# Revocação@5 = 2/3 = 0.67

MRR (Mean Reciprocal Rank)​

def reciprocal_rank(retrieved_ids, relevant_ids):
"""Quão alta está a posição do primeiro documento relevante?"""
for i, doc_id in enumerate(retrieved_ids):
if doc_id in relevant_ids:
return 1 / (i + 1)
return 0

# Se o primeiro relevante está na posição 3: RR = 1/3 = 0.33

Métricas de Geração​

Fidedignidade​

A resposta usa SOMENTE informações do contexto?

# Alta fidedignidade:
# Contexto: "A política permite devoluções em até 30 dias"
# Resposta: "Você pode devolver itens em até 30 dias"

# Baixa fidedignidade (alucinação):
# Contexto: "A política permite devoluções em até 30 dias"
# Resposta: "Você pode devolver itens em até 60 dias para reembolso total"

Relevância da Resposta​

A resposta realmente aborda a pergunta?

Relevância do Contexto​

Os trechos recuperados são relevantes para a pergunta?

Resumo das Métricas​

MétricaO Que MedeMeta
Precisão@KRelevância dos recuperados>0.8
Revocação@KCobertura>0.9
MRRQualidade do ranqueamento>0.7
FidedignidadeSem alucinações>0.9
RelevânciaQualidade da resposta>0.8