Projeto pessoal · código aberto
Groundtruth — gate de avaliação para RAG
Desenvolvimento de um harness que mede mudanças em sistemas RAG antes do merge e bloqueia a PR quando o Recall@10 cai mais de 1 ponto percentual.
Problema
Mudar chunking, busca ou reranker “parece melhor” até alguém medir. Sem um baseline versionado, uma regressão de retrieval chega à produção sem aviso.
Dados disponíveis
Um golden set de 100 perguntas revisadas por humano sobre um documento técnico (V1) e 18 perguntas aprovadas num corpus de três documentos (multi-documento).
Decisões de arquitetura
Gate objetivo
Baseline versionado no repositório. A mudança falha se o Recall@10 cair mais de 1 ponto percentual, com tolerância numérica para não falhar por arredondamento.
Provar que o teste funciona
Um retriever quebrado de propósito precisa derrubar o gate. Se não derrubar, o gate não serve.
Busca e resposta medidas separadamente
Recall, MRR e nDCG medem a busca; Faithfulness e Answer Relevancy (RAGAS) medem a resposta. Um sem o outro engana.
Implementação
- Workflow no GitHub Actions que recalcula o retrieval e aplica o gate.
- Comparação entre busca densa, híbrida e reranker com LLM, em dois tamanhos de chunk.
- Multi-documento: busca geral, tool com filtro de documento e expansão por grafo (GraphRAG), em condições controlada e ajustada, com custo, latência e chamadas de tool por resposta.
Resultado
- 0,88 → 0,98nDCG@10 com reranker, Recall dentro do gate
- −2,78 ppde Recall com GraphRAG vs. busca geral: o gate barraria
O reranker foi recomendado como opção quality-first. A expansão por grafo ficou abaixo da busca geral nesta amostra — e o próprio gate teria impedido o merge.
Limitações e aprendizados
- O golden set multi-documento é pequeno (18 perguntas).
- Relevância binária não distingue uma resposta direta de um trecho que só dá contexto; o próximo passo seria usar graus de 0 a 3.
- Custo e latência do reranker não foram comparados no V1.