Seu RAG parece correto? Meça recuperação e resposta separadamente

|Autor: Equipe editorial da QUASA|6 min de leitura
Seu RAG parece correto? Meça recuperação e resposta separadamente

Para avaliar um RAG com Ragas, registre a pergunta, os trechos recuperados, a resposta gerada e uma resposta de referência. Compare precisão e recall do contexto para investigar a recuperação; use fidelidade e relevância da resposta para investigar a geração. O catálogo de métricas do Ragas apresenta essas medidas para aplicações RAG.

Observe as pontuações por pergunta antes de resumir o conjunto. Uma resposta pode atender diretamente ao pedido e acrescentar uma afirmação sem apoio nos trechos. Também pode reproduzir fielmente o contexto recebido enquanto omite uma informação que a busca deixou de recuperar. Uma média única esconderia a diferença entre esses casos.

Monte registros que preservem a evidência

Trecho pertinente aparece depois de material irrelevante na recuperação avaliada pelo Ragas.

Os campos mínimos são user_input, retrieved_contexts, response e reference. Guarde os trechos em retrieved_contexts na ordem em que chegaram ao gerador: a posição de cada trecho afeta a precisão do contexto. Prepare reference a partir do conteúdo que a base deveria oferecer, sem copiar a saída do sistema. O tutorial de avaliação do Ragas organiza esses campos em um EvaluationDataset.

Considere um exemplo hipotético de uma base de ajuda. O registro seria user_input = 'Qual é o prazo para pedir uma troca?'; retrieved_contexts = ['Entregas são feitas no endereço cadastrado.', 'Trocas podem ser solicitadas em até 30 dias.']; response = 'A troca pode ser solicitada em até 45 dias.'; reference = 'A troca pode ser solicitada em até 30 dias.'. Os prazos são inventados para mostrar o formato. O trecho útil chegou depois de um trecho irrelevante, enquanto a resposta gerada introduziu um prazo sem apoio no contexto.

Inclua perguntas resolvidas por um trecho e outras que exijam combinar condições espalhadas por vários trechos. Registre à parte os identificadores dos documentos, a versão da base e a configuração da busca para conseguir abrir o conteúdo original durante a revisão. Casos sem resposta na base também merecem um grupo próprio: antes de atribuir sua nota ao recuperador, confira se a referência descreve corretamente a ausência de informação.

Calcule as métricas com a API de coleções

Instale ragas e openai, configure a credencial do provedor no ambiente e use um modelo avaliador. O exemplo abaixo emprega a API de coleções documentada para cada métrica; score devolve um resultado cujo atributo value contém a pontuação. As chamadas são independentes, o que permite guardar uma coluna para cada aspecto avaliado.

  1. Importe as dependências: from openai import AsyncOpenAI; from ragas.llms import llm_factory; from ragas.embeddings.base import embedding_factory; from ragas.metrics.collections import ContextPrecision, ContextRecall, Faithfulness, AnswerRelevancy.
  2. Crie os avaliadores: cliente = AsyncOpenAI(); juiz = llm_factory('gpt-4o-mini', client=cliente); vetores = embedding_factory('openai', model='text-embedding-3-small', client=cliente).
  3. Para a recuperação, calcule ContextPrecision(llm=juiz).score(user_input=pergunta, reference=referencia, retrieved_contexts=trechos).value e ContextRecall(llm=juiz).score(user_input=pergunta, reference=referencia, retrieved_contexts=trechos).value.
  4. Para a resposta, calcule Faithfulness(llm=juiz).score(user_input=pergunta, response=resposta, retrieved_contexts=trechos).value e AnswerRelevancy(llm=juiz, embeddings=vetores).score(user_input=pergunta, response=resposta).value.

Em cada chamada, pergunta, referencia, trechos e resposta recebem os valores dos campos correspondentes do registro. O exemplo usa chamadas síncronas; as mesmas classes documentam ascore para execução assíncrona. Ao salvar os resultados, mantenha a pergunta e os trechos ao lado das pontuações: sem o caso original, uma nota baixa mostra o sintoma, mas não revela a passagem ou afirmação que precisa ser examinada.

Leia precisão e recall como problemas diferentes

Precisão do contexto indica se os trechos úteis aparecem cedo entre os resultados. A definição de Context Precision considera a relevância de cada trecho e sua posição; colocar material irrelevante antes do trecho útil reduz a pontuação. Quando ela cai, abra a lista recuperada na ordem original e examine ranking, filtros e quantidade de trechos enviados ao gerador.

Recall do contexto pergunta quanto da informação contida na resposta de referência pode ser sustentado pelos trechos recuperados. Se ele estiver baixo, procure a condição ausente na base e no índice. Ela pode estar em outro documento, ter sido separada pelo chunking ou exigir a recuperação conjunta de passagens. Um ranking limpo não resolve a omissão: é possível receber poucos trechos pertinentes e ainda deixar fora parte indispensável da resposta.

Essas interpretações dependem da qualidade da referência. Se ela exigir um detalhe que a base nunca conteve, o recall baixo aponta para um problema no conjunto de avaliação ou no conteúdo disponível, não necessariamente no algoritmo de busca. Verificar o documento de origem distingue essas possibilidades antes de mudar a configuração do recuperador.

Separe resposta pertinente de resposta sustentada

Uma afirmação da resposta ultrapassa as evidências presentes nos trechos recuperados.

Fidelidade verifica se as afirmações geradas encontram apoio nos trechos fornecidos. No exemplo hipotético, o prazo de 45 dias exige inspeção mesmo que a pergunta tenha sido entendida. Se a recuperação trouxe a regra correta e a fidelidade caiu, compare cada afirmação com o contexto e revise as instruções dadas ao gerador. Uma resposta fiel ainda pode repetir um erro presente na própria base.

Relevância da resposta avalia a relação entre a pergunta e o texto produzido; ela não mede sua exatidão factual. Relevância alta com fidelidade baixa descreve uma resposta que trata do assunto, mas pode acrescentar algo sem sustentação. Fidelidade alta com relevância baixa aponta para fatos amparados pelos trechos que não resolvem o pedido do usuário. Se ambas estiverem baixas apesar de boa recuperação, examine como o contexto foi apresentado e qual tarefa o gerador recebeu.

Quando a resposta é fiel, mas incompleta, consulte também o recall. Se a informação necessária não chegou, a recuperação é a primeira candidata à revisão. Se chegou e ficou de fora do texto, investigue a síntese feita pelo gerador, especialmente em perguntas que combinam várias condições. A combinação das notas orienta a investigação; ela não substitui a leitura da pergunta, dos trechos e da resposta.

Revise os casos baixos antes de alterar o sistema

Confira se a referência está correta, se os trechos foram registrados integralmente e se o avaliador interpretou a pergunta em português como esperado. Depois, agrupe os casos por tipo de pergunta e pelo padrão das métricas. Isso evita tratar um erro de referência, uma passagem ausente e uma afirmação inventada como se tivessem a mesma causa.

Após uma mudança de chunking, busca ou instrução do gerador, execute novamente o mesmo conjunto e compare as métricas por caso. Preserve a versão da base e a configuração usadas em cada rodada. Assim, uma melhora na recuperação pode ser observada junto de seu efeito sobre a resposta, sem que um único número oculte qual componente mudou.

Leia também:

Compartilhar:

Assine nossa newsletter

Receba as últimas notícias sobre Web3, IA e cripto diretamente no seu e-mail.

0