Blog
Benchmarks·13 min de leitura

Avaliação de LLMs: métricas que importam

Além dos benchmarks genéricos: como definir sucesso em um caso de uso específico, medir regressão e envolver o negócio.

Visualização analítica minimalista com gráficos

Trocar de modelo ou de prompt sem avaliação é deploy às cegas. Para aplicações em produção, você precisa de métricas alinhadas ao que o usuário considera sucesso — não apenas perplexidade ou notas em benchmarks abertos.

O problema com benchmarks genéricos

MMLU, HellaSwag, HumanEval são úteis para comparar modelos em tarefas gerais. Mas eles não dizem se o seu assistente responde bem perguntas sobre as suas políticas internas, se mantém o tom de voz da sua marca, ou se consegue extrair dados estruturados dos seus documentos específicos. Um modelo com 95% no MMLU pode ter 60% de acurácia no seu domínio.

Por que benchmarks públicos não bastam

  • Não cobrem o seu domínio específico (jurídico, médico, financeiro, etc)
  • Não testam o formato de saída que você precisa (JSON, tabelas, citações)
  • Não medem latência, custo ou taxa de recusa em casos reais
  • Podem vazar para os dados de treino dos modelos (benchmark contamination)
  • Não capturam requisitos de compliance ou segurança do seu contexto

Definição de sucesso com o negócio

Traduza requisitos em critérios testáveis: 'resposta deve citar a fonte correta', 'não pode inventar cláusula', 'deve responder em até N tokens', 'tom formal'. Isso vira rubrica humana ou checklist automatizado parcial.

Criando rubricas de avaliação

Uma rubrica é um conjunto de critérios específicos e mensuráveis. Exemplo para um assistente de RH: (1) Factualidade: resposta baseada apenas em documentos da empresa (peso 40%), (2) Completude: responde todas as partes da pergunta (peso 30%), (3) Tom: linguagem profissional e respeitosa (peso 15%), (4) Citação: inclui referências aos documentos fonte (peso 15%). Cada critério recebe nota 0-3, e você tem uma nota final ponderada.

Envolvendo stakeholders

Não defina métricas sozinho. Sente com: usuários finais (o que é uma boa resposta para eles?), especialistas no domínio (o que está factualmente correto?), compliance/legal (o que não pode ser dito?), e produto (qual métrica move o negócio?). Isso garante que você está otimizando para o que realmente importa.

Camadas de avaliação

Avaliação não é um único número. É uma pirâmide de camadas, cada uma testando um aspecto diferente do sistema.

1. Recuperação (para sistemas RAG)

  • Precisão@k: dos k documentos retornados, quantos são relevantes?
  • Recall@k: dos documentos relevantes no índice, quantos foram recuperados?
  • MRR (Mean Reciprocal Rank): em que posição aparece o primeiro documento relevante?
  • NDCG (Normalized Discounted Cumulative Gain): considera relevância gradual e posição

2. Geração (qualidade da resposta)

  • Acurácia factual: humanos validam se a resposta está correta (gold standard)
  • LLM-as-judge: usar GPT-4 para avaliar respostas segundo critérios definidos (complemento, não substituto)
  • Conformidade com formato: se pediu JSON, retornou JSON válido?
  • Groundedness: a resposta se baseia apenas no contexto fornecido?

3. Regressão (mudanças não quebraram o que funcionava)

Conjunto fixo de casos de teste (regression suite) que roda em CI após mudanças de: prompt, modelo, índice RAG, ou código de pós-processamento. Se a acurácia cair além de um threshold (ex: -5%), o deploy é bloqueado.

Construindo datasets de avaliação

Um bom dataset de avaliação é pequeno, mas representativo. Não precisa de 10 mil exemplos — 100 exemplos bem escolhidos valem mais.

Como construir seu dataset

  • Casos comuns (70%): perguntas que você espera receber frequentemente
  • Casos extremos (15%): edge cases, perguntas ambíguas, múltiplas interpretações
  • Casos adversariais (10%): tentativas de quebrar o sistema, injection attacks
  • Casos de 'não sei' (5%): perguntas onde a resposta correta é admitir falta de informação

Fontes de dados

Onde encontrar casos de teste: logs de perguntas reais de usuários (quando disponível), perguntas simuladas por especialistas no domínio, queries sintéticas geradas por LLM (validadas por humanos), e casos de falha reportados pelo suporte.

LLM-as-judge: quando usar e quando não usar

Usar um LLM para avaliar outro LLM é tentador: escala facilmente e é mais barato que anotação humana. Mas tem armadilhas.

Quando LLM-as-judge funciona bem

  • Critérios objetivos: 'resposta contém uma citação?', 'formato é JSON válido?'
  • Comparação de pares: qual de duas respostas é melhor?
  • Rubrica bem definida: com exemplos de notas 1, 2, 3 para cada critério
  • Volume alto: quando você tem milhares de casos e não pode validar todos manualmente

Quando LLM-as-judge falha

LLM-as-judge tem vieses: prefere respostas mais longas, prefere respostas do próprio modelo (GPT-4 avaliando GPT-4), tem dificuldade com nuance e contexto cultural, e pode ser manipulado (o modelo avaliado aprende a 'enganar' o juiz). Use sempre em conjunto com validação humana em amostra.

Sinais em produção: o que realmente importa

Métricas offline (no dataset de teste) são importantes, mas não substituem métricas online (em produção). Usuários reais têm comportamentos que você não antecipou.

Métricas comportamentais

  • Thumbs up/down: usuários avaliam se a resposta foi útil
  • Taxa de abandono: % de usuários que saem após ver a resposta
  • Follow-up rate: usuário refaz a pergunta de forma diferente? (sinal de resposta ruim)
  • Time-to-next-action: quanto tempo até o usuário fazer algo após a resposta?
  • Copy rate: % de respostas que usuários copiam (sinal de utilidade)

Métricas técnicas

  • Latência p50, p95, p99: distribuição de tempo de resposta
  • Taxa de erro: % de queries que falharam com erro técnico
  • Taxa de recusa: % de queries onde o modelo disse 'não sei'
  • Custo por query: para monitorar OPEX e identificar queries caras
  • Taxa de citação: % de respostas que incluíram referências (em RAG)

Testes A/B e experimentos controlados

Quando você tem tráfego significativo, testes A/B são a melhor forma de validar mudanças. Divida usuários em: grupo controle (modelo/prompt atual) e grupo tratamento (nova versão). Compare métricas comportamentais entre os grupos.

Boas práticas para A/B em LLMs

  • Tamanho de amostra: precisa de centenas/milhares de queries para significância estatística
  • Duração: rode por pelo menos 1 semana para capturar variação temporal
  • Segmentação: usuários novos vs recorrentes podem reagir diferente
  • Multiple testing: se testar muitas variantes, ajuste para false positive rate
  • Cuidado com métricas de vaidade: mais tokens não significa melhor resposta

Ferramentas para avaliação de LLMs

  • PromptFoo: framework open-source para testes e comparação de prompts
  • LangSmith: datasets de avaliação, comparação de runs, LLM-as-judge integrado
  • Ragas: métricas específicas para RAG (faithfulness, answer relevancy, context recall)
  • DeepEval: similar ao Pytest, mas para LLMs — testes automatizados com asserções
  • Phoenix (Arize): análise de embeddings, detecção de drift, traces

Conclusão

Avaliação não é uma métrica única, é um sistema. Combine: métricas offline (dataset de teste), LLM-as-judge (com validação humana), métricas online (produção), e feedback direto dos usuários. Defina sucesso com stakeholders, não sozinho. E sempre tenha um regression suite para não quebrar o que já funciona.

Lembre-se: o objetivo não é maximizar uma métrica de benchmark. O objetivo é construir algo que usuários reais considerem útil, confiável e que o negócio possa sustentar economicamente.