RAG evals e citações
Um RAG pode recuperar documentos relacionados e ainda produzir uma resposta sem sustentação. Também pode responder fielmente a um contexto incompleto. Nesta semana você separará avaliação de recuperação e avaliação de geração, construindo métricas que tenham denominadores e rótulos claros.
O caso é responder quando um acesso fica disponível, considerando confirmação e análise manual. A coleção possui regra e exceção. Você vai medir se os trechos necessários chegam ao contexto e se cada afirmação da resposta é sustentada por esse contexto, sem confundir isso com verdade universal.
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: Laboratório: Hybrid search/reranking
Groundedness e faithfulness
FundamentosGroundedness e faithfulness costumam avaliar se afirmações da resposta estão sustentadas pelas evidências fornecidas, embora definições exatas variem por ferramenta e rubrica. A métrica de faithfulness do Ragas compara afirmações com o contexto recuperado. Uma resposta pode ser fiel a um documento desatualizado e errada no mundo atual. Portanto, verificação de origem e vigência permanece separada. Não use um único score para resumir todas as formas de qualidade.
Divida a resposta em afirmações verificáveis. “O pagamento foi confirmado e o acesso já está ativo” contém dois fatos. Se o contexto apenas confirma pagamento, a segunda parte não é sustentada. Uma frase com citação não se torna correta automaticamente; o trecho citado precisa realmente apoiar a afirmação. Para condições, preserve qualificadores como pode exigir análise manual. Omiti-los pode produzir uma promessa maior que a evidência. Esse exame retoma chunking e contexto: a geração só pode se apoiar no que foi preservado e selecionado.
Relevância rotulada e precision de retrieval
FundamentosPrecision de retrieval pergunta qual fração dos itens recuperados é relevante segundo rótulos definidos. Se três trechos retornam e dois ajudam a responder, a precisão simples é dois sobre três. A definição da unidade importa: trecho, documento ou afirmação exigida. Um documento parcialmente útil pode contar de formas diferentes em rubricas diferentes. Registre a convenção antes de comparar sistemas. Algumas métricas, como variantes de context precision, consideram ordenação e podem usar julgadores; não são idênticas à fração simples.
Rótulos precisam de critério. Relevância temática não basta se a pergunta exige uma exceção específica. Defina o que ajuda a responder e preserve casos de produtos ou versões diferentes. Avaliação humana pode divergir; anote discordâncias e esclareça a rubrica. Se usar modelo como julgador, registre configuração e valide uma amostra com revisão humana. O julgador também pode errar e variar. Um score automatizado é uma observação produzida por um procedimento, não uma prova incontestável.
Recall e evidência que ficou de fora
FundamentosRecall de retrieval compara relevantes recuperados com relevantes conhecidos no conjunto avaliado. Se regra e exceção são necessárias e apenas a regra chegou, recall simples é um sobre dois. A resposta pode soar completa enquanto falta a condição decisiva. A definição de relevante e o conjunto de referência determinam o denominador. Se seus rótulos são incompletos, a métrica também será limitada. Não declare recall de toda a base sem saber quais documentos poderiam sustentar a resposta.
Precision e recall têm compromissos: aumentar candidatos pode recuperar mais evidência e também trazer ruído. Top-k modifica esse equilíbrio, mas duplicatas não devem ser contadas como novas fontes relevantes sem critério. Compare por grupos de pergunta e observe posição das evidências. Uma exceção correta no fim de um contexto longo pode ser recuperada, mas mal utilizada. Essa falha exige avaliar geração e montagem além de recall. Métricas de retrieval ajudam a localizar a ausência, enquanto a análise de afirmações mostra o uso efetivo.
Dataset, rubrica e separação de etapas
FundamentosUm dataset de avaliação contém perguntas, evidências relevantes, resposta de referência quando útil e condições de aceitação. Inclua caso nominal, exceção, versão antiga, pergunta sem resposta e tentativa fora do escopo. Separe casos usados para ajustar o sistema dos casos reservados. Se você altera o pipeline olhando sempre as mesmas perguntas, pode melhorar especificamente aquele conjunto sem ganhar robustez em pedidos novos.
↗ Ragas Faithfulness↗ Ragas Context Precision↗ Ragas Context Recall
Avalie retrieval com rankings e rótulos antes de gerar. Depois avalie resposta com o contexto efetivamente enviado, não com toda a base. Uma referência pode ajudar a detectar cobertura, mas correspondência textual exata costuma rejeitar respostas corretas com palavras diferentes. Use critérios semânticos observáveis: preservar condição, não inventar estado e indicar ausência de evidência. Registre quando o caso não possui resposta na coleção. Forçar uma resposta a todo pedido incentiva fabricação; uma abstenção justificada pode ser o resultado correto.
↗ Ragas Faithfulness↗ Ragas Context Precision↗ Ragas Context Recall
Interpretação, erros e decisão de melhoria
FundamentosImagine precision alta e recall baixo: os poucos trechos encontrados são relevantes, mas falta a exceção. A intervenção pode ampliar candidatos ou melhorar recuperação. Imagine recall alto e faithfulness baixa: a evidência chegou, mas a resposta inventou uma conclusão. A intervenção pode atuar na montagem do contexto, instrução e validação da saída. Imagine métricas altas e política desatualizada: a falha é de corpus e governança. Essas combinações impedem usar um score único como diagnóstico.
↗ Ragas Faithfulness↗ Ragas Context Precision↗ Ragas Context Recall
Preserve exemplos de falha e explique o mecanismo, não apenas médias. Grupos pequenos podem esconder dificuldade em produtos raros ou perguntas sem resposta. Meça também custo e latência para comparar melhorias com orçamento. Não invente benchmarks a partir de dados didáticos. O resultado da avaliação é um argumento para escolher a próxima intervenção e uma evidência limitada ao dataset e procedimento usados. Esse rigor permitirá evoluir o RAG sem confundir sofisticação do pipeline com qualidade demonstrada.
↗ Ragas Faithfulness↗ Ragas Context Precision↗ Ragas Context Recall
Exemplo comentado e limites
FundamentosO exemplo calcula frações simples sobre rótulos manuais. Ele não reproduz todas as variantes de métricas do Ragas nem chama um julgador. Os conjuntos são fictícios e pequenos, adequados para inspecionar denominadores e localizar ausências.
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});Precision e recall são ambos 0,5 neste conjunto; a coincidência é particular aos números escolhidos. A fração de afirmações sustentadas também é 0,5, mas mede outra etapa. Não conclua que scores iguais representam o mesmo problema. O código usa null para denominador ausente em retrieval, preservando a necessidade de definir política para esse caso.
Exercício aplicado
A resposta afirma acesso imediato, mas a exceção não foi recuperada. Calcule métricas simples e localize a primeira falha.
- 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.
Relevantes R, E; ranking R, R, X. Deduplica/métricas; resposta afirma E não recebida.
Conferir raciocínio e critérios de domínio
Únicos R, X; precision 1/2, recall 1/2.
Faltou E na recuperação e geração afirma sem suporte; diagnosticar ambas.
Correção de prompt não recupera documento ausente.
Evidências para autoavaliação ou revisão por pares
- Métricas: Únicos R, X; precision 1/2, recall 1/2.
- Camadas: Faltou E na recuperação e geração afirma sem suporte; diagnosticar ambas.
- Ausência: Correção de prompt não recupera documento ausente.
Um erro frequente
Alta precision garante recall.
Precision e recall medem denominadores diferentes.
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.