RAG evals e citações
Você montará uma avaliação pequena de RAG com rótulos explícitos. Antes da execução, tente calcular as frações e dividir a resposta em afirmações. O objetivo é aprender a separar erro de recuperação de erro de geração.
Use perguntas e documentos fictícios com regra e exceção. O julgamento manual torna o procedimento transparente. Se acrescentar uma biblioteca ou modelo julgador, registre versão e configuração e compare uma amostra com a rubrica humana, sem substituir o exame de origem.
JavaScriptRAGAvaliaçãoAo terminar esta aula
- Métricas precisam de definições e rótulos.
- Recuperação e geração são avaliadas separadamente.
- O diagnóstico escolhe a próxima melhoria.
Antes de continuar: Leitura: RAG evals e citações
Definir unidades e rótulos
FundamentosEscolha se a relevância será medida por trecho ou documento e mantenha a unidade em todo o conjunto. Escreva perguntas que exigem regra, exceção e ausência de resposta. Marque relevantes antes de ver o ranking. Retome a semana de ingestão: um trecho que perdeu condição pode ser tematicamente relacionado e ainda insuficiente. Anote casos de discordância sobre relevância e refine a rubrica. Não transforme todo resultado recuperado em relevante para melhorar o score. Preserve o conjunto de referência e a versão do corpus.
Calcular retrieval e casos vazios
FundamentosExecute as frações e confirme manualmente o denominador. Acrescente mais um resultado irrelevante e observe queda de precision sem mudança de recall. Depois acrescente a exceção e observe o efeito. Teste lista vazia e pergunta sem relevantes conhecidos. Defina como apresentar métricas indefinidas e avaliação de abstenção, em vez de dividir por zero ou inventar aprovação. Compare dois valores de top-k no mesmo conjunto. O caso mostra por que ampliar candidatos pode aumentar cobertura e ruído simultaneamente.
Julgar afirmações da resposta
FundamentosEscreva uma resposta sua antes de consultar a solução. Divida-a em afirmações e associe cada uma ao trecho que a sustenta. Marque inferência, ausência e contradição separadamente quando a rubrica exigir. Uma citação precisa corresponder à afirmação; número de citações não mede fidelidade. Avalie também qualificadores e condições, pois omitir pode mudar a promessa. Use apenas o contexto enviado ao gerador para faithfulness, mantendo verdade e vigência como verificações adicionais sobre as fontes.
Diagnosticar e escolher intervenção
FundamentosMonte uma matriz com precision, recall, fidelidade e vigência por pergunta. Escolha uma falha e a camada que primeiro a produz. Se a exceção não chega, teste recuperação; se chega e é ignorada, teste contexto e geração; se o documento é antigo, revise ingestão. Compare custo e latência da intervenção. Separe casos usados para ajuste e reservados para verificar ganho. Feche com exemplos de falha, limites dos rótulos e a próxima hipótese. Uma média agradável não elimina a necessidade de inspecionar situações de alto impacto.
Acrescentar avaliação automática revisável
AvaliaçãoImplemente um runner que percorra os casos e grave retrieval, contexto, resposta e julgamentos em arquivo versionado. Parte da avaliação pode ser determinística, como referência existente e escopo correto; parte pode usar modelo julgador ou biblioteca documentada. Ao usar Ragas, confira a variante de métrica e os campos exigidos pela versão instalada, pois as frações didáticas do exemplo não são uma implementação universal da biblioteca. Preserve saídas intermediárias e revise amostra de julgamentos com a rubrica humana. Um erro do avaliador não deve ser escondido como erro do RAG. O relatório final separa métrica, procedimento, dataset e limites. Automatizar a coleta melhora repetição, mas não elimina a necessidade de conferir relevância, origem e casos de alto impacto.
↗ Ragas Faithfulness↗ Ragas Context Precision↗ Ragas Context Recall
Caso adicional para diagnóstico e decisão
FundamentosImagine dois avaliadores que discordam sobre a relevância do trecho de contato. Um o considera útil porque oferece próximo passo; outro o considera irrelevante porque não responde ao prazo. Antes de calcular, defina se o objetivo é resposta direta ou orientação de suporte completa. A métrica muda legitimamente com essa definição, mas a comparação precisa manter a mesma rubrica. Preserve discordância e decisão, evitando apagar o rótulo inconveniente depois de ver o score. Teste um julgador que aprova uma afirmação apenas por repetir palavras do contexto, apesar de inverter uma condição. A rubrica humana deve detectar esse erro. Compare avaliação automática ampla com revisão manual de casos de risco: a primeira escala coleta; a segunda ajuda calibrar julgamento. Nenhuma substitui origem e vigência. O relatório precisa mostrar o procedimento que produziu a medida, não apenas seu valor final.
Execução, inspeção e diagnóstico
FundamentosExecute o exemplo e varie os conjuntos para observar cada denominador. Acrescente uma resposta fiel a uma política antiga e registre que faithfulness não resolve vigência. Essa falha deliberada impede confundir alinhamento ao contexto com verdade operacional.
const relevantes = new Set(["regra","excecao"]);
const recuperados = ["regra","contato"];
const acertos = recuperados.filter(x=>relevantes.has(x)).length;
const precision = recuperados.length ? acertos/recuperados.length : null;
const recall = relevantes.size ? acertos/relevantes.size : null;
const afirmacoes = [
{texto:"ativação após confirmação",sustentada:true},
{texto:"acesso sempre imediato",sustentada:false}
];
console.log({precision,recall,faithfulnessManual:
afirmacoes.filter(x=>x.sustentada).length/afirmacoes.length});Se todas as métricas aumentam após mudar rótulos, você mudou a avaliação, não necessariamente o sistema. Se retrieval está bom e resposta ruim, não aumente k automaticamente. Localize evidência, uso e vigência antes de escolher a intervenção.
Exercício aplicado
Entregue dataset pequeno, métricas manuais e diagnóstico por camada.
- Tente rotular e calcular antes do código.
- Avalie retrieval e casos vazios.
- Divida respostas em afirmações sustentadas ou não.
- Escolha uma intervenção e teste casos reservados.
Abrir resolução comentada
A primeira falha é a ausência da exceção relevante. Corrija ou avalie recuperação antes de pedir ao modelo que cite uma informação que não recebeu. A frase sempre imediato também precisa ser bloqueada pelo contrato de fidelidade, já que o contexto disponível não a sustenta.
A avaliação ampliada inclui contexto completo, incompleto e antigo para separar recuperação, geração e corpus. Uma solução correta pode informar que precisa de análise manual ou que não há evidência suficiente. O relatório mostra perguntas, rótulos, rankings, contexto e afirmações julgadas.
A resolução preserva denominadores e separa etapas. O relatório deve permitir que outro avaliador refaça os julgamentos e entenda onde a evidência falta.
O runner separa precision, recall e fidelidade manual, trata denominadores vazios com null e deduplica trechos. Uma intervenção fictícia que recupera a exceção é comparada no caso de ajuste e em casos reservados, incluindo pergunta sem resposta e abstenção. O teste com fonte antiga demonstra fidelidade igual a um e vigência falsa ao mesmo tempo. Os rótulos são transparentes e não representam um julgador externo executado ou todas as variantes do Ragas.
import assert from "node:assert/strict";
function retrieval(relevantes,recuperados){
const conjunto=new Set(relevantes),unicos=[...new Set(recuperados)];
const acertos=unicos.filter(id=>conjunto.has(id)).length;
return {precision:unicos.length?acertos/unicos.length:null,
recall:conjunto.size?acertos/conjunto.size:null};
}
function fidelidade(afirmacoes){return afirmacoes.length?
afirmacoes.filter(a=>a.sustentada).length/afirmacoes.length:null;}
const ajuste={id:"q-ajuste",relevantes:["regra","excecao"],baseline:["regra","contato"],
intervencao:["regra","excecao"],afirmacoes:[
{texto:"Ativação após confirmação",sustentada:true,origem:"regra"},
{texto:"Acesso sempre imediato",sustentada:false,origem:null}]};
const reservados=[{id:"q-reservado",relevantes:["excecao"],baseline:["contato"],intervencao:["excecao"]},
{id:"q-sem-resposta",relevantes:[],baseline:[],intervencao:[],resposta:"Não há evidência na coleção"}];
const antes=retrieval(ajuste.relevantes,ajuste.baseline),depois=retrieval(ajuste.relevantes,ajuste.intervencao);
assert.deepEqual(antes,{precision:0.5,recall:0.5});assert.deepEqual(depois,{precision:1,recall:1});
assert.equal(fidelidade(ajuste.afirmacoes),0.5);
assert.deepEqual(retrieval(["regra"],[]),{precision:null,recall:0});
assert.deepEqual(retrieval([],[]),{precision:null,recall:null});
assert.equal(fidelidade([]),null);
const avaliacaoReservada=reservados.map(c=>({id:c.id,antes:retrieval(c.relevantes,c.baseline),
depois:retrieval(c.relevantes,c.intervencao),abstencaoAdequada:!c.relevantes.length?!!c.resposta:null}));
assert.equal(avaliacaoReservada[0].depois.recall,1);
assert.equal(avaliacaoReservada[1].abstencaoAdequada,true);
const fonteAntiga={vigente:false,afirmacoes:[{texto:"Prazo da política antiga",sustentada:true}]};
assert.equal(fidelidade(fonteAntiga.afirmacoes),1);assert.equal(fonteAntiga.vigente,false);
console.log({status:"aprovado",unidade:"trecho único",ajuste:{antes,depois},avaliacaoReservada,
diagnostico:"Ausência da exceção: testar recuperação; afirmação sem apoio: revisar geração",
procedimento:"rótulos manuais e rankings fictícios, não Ragas ou julgador externo executados"});Como conferir seu resultado
- Unidade e relevância estão definidas.
- Casos sem resposta são avaliados.
- Fidelidade não é apresentada como verdade universal.
Aplique em um problema novo
Primeiro resolva sem consultar a resposta. Explique suas decisões e guarde a evidência. A conclusão de leitura é independente desta autoavaliação.
Confira seus pré-requisitos
- Calcular proporções com denominador.
- Separar retrieval e fidelidade.
Fonte: prazo 20, exceto perecíveis 2. Respostas A inclui ambos, B diz só 20, C inventa 30. Quarta pergunta não tem documentos relevantes. Julgue fidelidade/completude e denominadores.
Conferir raciocínio e critérios de domínio
A é sustentada e completa para regra/exceção; B pode ser fiel ao trecho 20, mas é incompleta; C contém prazo 30 sem suporte.
Para pergunta sobre perecível com contexto só 20, há falta de evidência recuperada e uma resposta 20 seria uso inadequado. Corpus, retrieval e geração não são a mesma causa.
Com relevantes vazio, recall é não aplicável. A saída correta declara evidência insuficiente; zero denominador não se converte em100%.
Evidências para autoavaliação ou revisão por pares
- Fidelidade e completude: A é sustentada e completa para regra/exceção; B pode ser fiel ao trecho 20, mas é incompleta; C contém prazo 30 sem suporte.
- Diagnóstico por camada: Para pergunta sobre perecível com contexto só 20, há falta de evidência recuperada e uma resposta 20 seria uso inadequado. Corpus, retrieval e geração não são a mesma causa.
- Denominador vazio: Com relevantes vazio, recall é não aplicável. A saída correta declara evidência insuficiente; zero denominador não se converte em100%.
Um erro frequente
Denominador zero significa 100%.
Métrica sem denominador deve ser não aplicável, não perfeita.
Teste sua compreensão
Responda com suas palavras antes de abrir o comentário. Saber explicar uma decisão é parte do domínio.
1. Faithfulness alta garante verdade atual?
2. Recall precisa de relevantes conhecidos?
3. Precision e recall iguais medem a mesma coisa?
Não.
Uma usa recuperados como base; outra usa relevantes conhecidos.
Seu progresso fica salvo neste navegador. Concluir a leitura não substitui demonstrar o domínio nos exercícios.
Referências e aprofundamento
Documentação oficial e trabalhos originais. As referências registram o escopo e as limitações para você conferir o que sustentam.
- Ragas Faithfulness
Ragas • consulta: 2026-10-06
FundamentosAvalia sustentação das afirmações da resposta no contexto recuperado.
Limites: Métrica com julgamento automatizado pode errar; groundedness não equivale a verdade externa.
- Ragas Context Precision
Ragas • consulta: 2026-10-06
FundamentosPrecisão dos chunks e sua posição no ranking; variantes com referências ou julgador.
Limites: Não confundir versões LLM-based com precision@k calculada sobre relevância humana conhecida.
- Ragas Context Recall
Ragas • consulta: 2026-10-06
FundamentosCobertura da informação de referência no contexto recuperado.
Limites: Dataset e definição de relevância influenciam recall; calibrar julgador e usar ground truth quando possível.