Avaliação de RAG: Recall@K, MRR e answer faithfulness na prática (guia com checklist)

Por que medir RAG como sistema (e não só o LLM)

RAG é um pipeline com peças interdependentes: indexação → recuperação → reordenação → geração. Alterar chunking, embeddings ou ranking muda o que chega ao LLM e, portanto, a qualidade da resposta. A avaliação precisa separar (1) qualidade de recuperação e (2) qualidade da resposta, além de monitorar latência e custo como restrições de produto. Guias técnicos recentes organizam a avaliação em camadas e recomendam medir o componente e o app ponta a ponta, de forma reproduzível.

Métricas essenciais

Recall@K (recuperação) — fração dos itens relevantes presentes no top-K. Útil quando o objetivo é “não perder” contexto essencial. Em IR clássico, recall mede a capacidade do sistema de retornar os itens relevantes; a variante @K foca os primeiros resultados. 

MRR (recuperação orientada à posição)Mean Reciprocal Rank captura a posição do primeiro item relevante na lista: quanto mais alto, melhor a experiência do reordenador e do buscador. Muito usada em busca e recomendação.

Answer faithfulness (resposta) — verifica se todas as afirmações da resposta podem ser suportadas pelo contexto recuperado; pode ser calculada por regras, “judge LLM” ou bibliotecas que automatizam a verificação claim-by-claim. 

Outras úteis — precisão semântica/adequação (factualidade), toxicidade/segurança, e sinais operacionais: latência p95 e custo/1.000 chamadas no mesmo relatório para decisões realistas. 

Golden set de Q&A: como construir

  1. Coleta das perguntas — derive de tickets reais, buscas internas e FAQs priorizadas por volume/valor.

  2. Respostas canônicas — redija respostas curtas somente com fatos presentes nas fontes; cite o trecho origem para auditoria.

  3. Fontes segmentadas — marque cada exemplo com “tópico/vertical”, “tipo de documento”, “tempo (mês/ano)”. Isso permite estratificar o teste (amostra balanceada por tópico).

  4. Negative sampling — para cada pergunta, crie negativos plausíveis: chunks muito parecidos porém não relevantes, para pressionar o rankeador e evitar “atalhos” (ex.: mesmo termo, outra data).

  5. Rotulagem dupla — em dúvidas, peça uma segunda revisão e guarde o rastro (quem marcou o quê, quando).

Dica: mantenha o golden set em repositório versionado e congele uma seed para reproduzir amostras. Isso é padrão em pipelines de avaliação modernos. 

Protocolo de experimento (reprodutível)

  • Tamanho de amostra: 200–500 Q&A costumam dar sinais estáveis para mudanças incrementais; aumente nos “lançamentos” maiores.

  • Estratificação: distribua por tópico/tipo de fonte (ex.: 25% políticas, 25% manuais, 25% release notes, 25% tutoriais).

  • Seed fixa: fixe a seed do sampler e registre hash do golden set.

  • Congelamento de versão: anote hash/versão de: embeddings, indexador (FAISS/VS), rankeador, LLM, prompts e pré/pós-processadores.

  • Cutoffs padrão: reporte Recall@1/3/5, MRR@5 e faithfulness para temperatura=0 e max_tokens fixo (evita ruído).

As referências de avaliação de RAG sugerem camadas: medir recall/MRR no retrieval e faithfulness na geração, num mesmo run para comparação entre versões. 

Como calcular (na prática, sem dor)

1) Qualidade de recuperação

  • Recall@K: por pergunta, marque se o chunk rotulado está no top-K. A média dá o recall@K.
  • MRR: identifique a posição do primeiro chunk relevante; some 1/posição por pergunta e faça a média.

Bases clássicas de IR e cursos de Stanford documentam MRR/recall e por que esses indicadores refletem a utilidade do ranqueamento para o usuário.

2) Qualidade da resposta

  • Faithfulness (claim-by-claim): extraia as afirmações da resposta e verifique suporte explícito no contexto recuperado. Ferramentas e docs descrevem o processo e o uso de LLM-as-a-Judge quando não há regra simples.

Boas práticas: avalie com e sem pós-processamento (ex.: citações/trechos), e registre as rationale do juiz (quando aplicar) para auditoria.

Logging que evita regressão silenciosa

  • Entrada e versão: query normalizada, seed, data/hora, ID do experimento.

  • Retrieval: IDs/posições dos chunks, score, origem da fonte, hash do índice.

  • Geração: prompt final (após templating), parâmetros, resposta bruta.

  • Métricas: recall@K, MRR, faithfulness; latência p50/p95 por estágio; custo estimado/1.000 chamadas.

  • Rastreabilidade: linke cada execução ao commit de dados/código e ao relatório daquela versão.

A literatura prática de RAG/LLMOps recomenda infra de medição com estrutura de métricas para qualidade, custo e latência desde o início (não depois). 

Relatório comparável por versão (exemplo de sumário)

  1. Setup — versão de embeddings/LLM, prompts, indexador, rankeador; data range.

     

  2. Retrieval — Recall@1/3/5 e MRR@5 globais e por tópico; destaque top wins/losses.

     

  3. Resposta — Faithfulness médio e distribuição; exemplos bons/ruins com trechos de suporte.

     

  4. Operação — Latência p95 por estágio e custo/1.000.

     

  5. Decisão — “Promover / Não promover”; próximos experimentos.

     

Guias de engenharia mostram exatamente esse loop de avaliação → decisão → iteração, tanto no componente quanto no app fim-a-fim. 

Checklist de avaliação 

  • Golden set versionado, com estratos e negatives plausíveis.

  • Seed fixada, amostra 200–500 Q&A, cutoffs padronizados.

  • Recall@K e MRR calculados por tópico e no agregado.

  • Answer faithfulness claim-by-claim com rationale do juiz.

  • Latência p50/p95 e custo/1.000 no mesmo relatório.

  • Logging com IDs de chunks, scores, prompts e versões.

Critérios de promoção definidos antes do teste (ex.: +3 p.p. em Recall@3 sem piorar p95 e custo).

Erros comuns (e como evitar)

  • Comparar versões com amostras diferentes — congele seed e estratos.
  • Otimizar só resposta sem olhar a recuperação — suba recall/MRR antes de ajustar prompting.
  • Faithfulness sem rastro de verificação — guarde claims, evidências e a justificativa do juiz.
  • Ignorar custo/latência — ganhos de qualidade que dobram custo e p95 não passam em produção.
  • Misturar “hallucination” com “não encontrou contexto” — resolva retrieval primeiro.

Exemplo de “primeira entrega” (30–60 dias)

Dias 1–10 — monte golden set com 300 Q&A estratificados; configure indexação inicial e baseline de retrieval.
Dias 11–30 — rode experimento A (embeddings A + rankeador simples) vs. baseline e gere relatório v0 com Recall@K/MRR.
Dias 31–45 — adicione re-ranking e faithfulness claim-by-claim; compare v1 vs. v0 (qualidade, custo e p95).
Dias 46–60 — padronize logging, publique painel de avaliação e defina critérios de promoção para as próximas iterações.

Conclusão 

Avaliar RAG “a sério” é separar retrieval de geração, padronizar Recall@K/MRR e faithfulness, e colocar latência + custo no mesmo quadro para decidir promoção de versão. Com golden set versionado, seed fixa e logging profundo, você evita regressões silenciosas e cria base para LLMOps contínuo.

Quer acelerar com prática guiada? O Bootcamp de ML & IA da Tekne conecta estes conceitos a um roteiro de learning-by-doing: você constrói o golden set, implementa experimentos reprodutíveis e publica um relatório comparável por versão, com qualidade, p95 e custo como alavancas de decisão.

FAQ

 Recall@K é suficiente? Não. Use com MRR (posição do primeiro relevante) e uma métrica de resposta (faithfulness) para cobrir o que foi recuperado, o quão cedo e se a resposta se apoia no contexto.
Como medir faithfulness sem anotação humana pesada? Empregue LLM-as-a-Judge com justificativa armazenada e amostragem para auditoria humana periódica.
Onde coloco custo e latência? No mesmo relatório das métricas de qualidade; decisão de promoção precisa olhar três eixos.

Pesquisar

Posts Recentes

Categorias