Ragas: avaliar seu RAG local com chiffres
Ragas é uma biblioteca Python de código aberto (licença Apache 2.0, mais de 15.000 estrelas no GitHub) que quantifica a qualidade de um pipeline de busca documental: fidelidade, pertinência da resposta, precisão e recall do contexto. Ela pode rodar inteiramente com um modelo avaliador e um modelo de embedding locais, evitando enviar seus documentos e suas respostas a um serviço de terceiros apenas para avaliá-los.
Uma cadeia de busca documental é ajustada às cegas enquanto não há números: altera-se o tamanho dos trechos, troca-se o modelo de embedding e avaliam-se os resultados com base na impressão obtida em três perguntas. Ragas é uma biblioteca Python que quantifica essas intuições — e que distingue, quando uma resposta é ruim, a falha na busca da falha no modelo. Ela pode funcionar inteiramente com modelos locais, o que evita enviar seus documentos a um serviço de terceiros para avaliá-los.
#Por que 'isso parece bom' não é suficiente
Ragas é uma biblioteca Python de código aberto, sob licença Apache 2.0, que quantifica a qualidade de uma cadeia de busca documental: a fidelidade da resposta aos trechos fornecidos, sua relevância em relação à pergunta, a precisão e o recall do contexto recuperado. Assim, separa o erro da busca do erro do modelo. Pode ser executada com um juiz local, servido pelo Ollama, desde que esse modelo respeite o formato de saída estruturada que Ragas exige e que seu contexto contenha a pergunta inteira, os trechos e a resposta. Antes de adotá-la, lembre-se de três pontos: suas pontuações servem para comparar duas versões de um mesmo sistema, não para avaliar uma qualidade absoluta; o conjunto de testes é mais importante que a biblioteca; e os tutoriais online misturam a antiga e a nova API.
Quando uma resposta está errada, duas causas muito diferentes podem estar por trás do mesmo sintoma: ou os trechos recuperados não continham a informação, ou a continham e o modelo respondeu algo que não correspondia ao que foi perguntado. A correção não é a mesma — segmentação e embeddings no primeiro caso, modelo e prompt no segundo. Sem medição, corrigimos ao acaso, e uma melhoria em três perguntas piora as respostas a outras cinco sem que percebamos.
A outra armadilha é a comparação. A pergunta “O modelo de 27 bilhões de parâmetros é realmente melhor aqui?” se resolve repetindo o mesmo conjunto de perguntas, não discutindo. É isso que uma avaliação reprodutível permite fazer. Ragas ultrapassa 15.000 estrelas no GitHub. A última versão publicada no PyPI é a 0.4.3, de 13 de janeiro de 2026, e o repositório mudou de organização no GitHub (vibrantlabsai). Fixe a versão que você usa.
#As quatro medidas que importam
Seus documentos, sua IA: um RAG local confiável para seus PDFs, notas e e-mails — sem enviar nada para a nuvem.
- Espaço online vitalício
- PDF + arquivos
- Atualizações vitalícias
| Medição | Pergunta feita | Que problema ela aponta quando diminui | O que deve ser fornecido |
|---|---|---|---|
| Fidelidade | A resposta é totalmente sustentada pelos trechos fornecidos? Pontuação: afirmações sustentadas divididas por afirmações totais da resposta | O modelo inventa ou extrapola | Pergunta, resposta, trechos recuperados |
| Relevância da resposta | A resposta trata da pergunta feita? O juiz gera três perguntas a partir da resposta, depois compara a similaridade delas com a pergunta original | O prompt ou o modelo foge do assunto | Pergunta, resposta e um modelo de embedding |
| Precisão do contexto | Os trechos úteis estão no início do ranking? Média de precisão em cada posição | A busca retorna resultados irrelevantes ou os ordena mal | Pergunta, trechos na ordem em que foram recuperados, resposta de referência |
| Recall do contexto | Foi recuperado tudo o que era necessário? Proporção das afirmações da resposta de referência sustentadas pelos trechos | Segmentação em trechos pequenos demais, limiar restritivo demais, embeddings ruins | Pergunta, trechos, resposta de referência |
A documentação do Ragas especifica que a pertinência da resposta não avalia a exatidão: ela mede apenas a adequação à pergunta e penaliza respostas incompletas ou cheias de detalhes desnecessários. Por isso, não substitui a fidelidade. A análise conjunta é o que torna esses números úteis. Um recall baixo com alta fidelidade descreve um sistema honesto, mas mal alimentado: é preciso melhorar a recuperação. Uma fidelidade baixa com bom recall descreve o inverso: a informação estava lá, mas o modelo inventou detalhes. Os dois problemas se corrigem em pontos opostos da cadeia.
#Construir um conjunto de testes
Essa é a parte que exige trabalho e não pode ser automatizada sem consequências. Um conjunto útil contém perguntas realmente feitas pelos usuários, com suas formulações pouco claras, suas abreviações internas e seus erros de digitação — não perguntas reformuladas de maneira cuidadosa pela pessoa que escreveu a documentação.
- 01Partir das perguntas reaisTrinta a cinquenta perguntas provenientes do uso real valem mais que duzentas perguntas inventadas. Inclua as que falharam: são as mais instrutivas.
- 02Escrever a resposta de referênciaPara cada pergunta, a resposta correta, escrita em uma ou duas frases. Ragas usa isso para estimar o recall do contexto: a versão baseada em um LLM usa essa referência como substituto dos trechos esperados, o que evita anotar os trechos um a um.
- 03Manter os casos sem respostaPerguntas às quais o corpus não responde. Um bom sistema deve dizer isso; sem esses casos, nunca medimos essa qualidade.
- 04Fixar o jogoEle não deve mudar ao mesmo tempo que o sistema, caso contrário nenhuma comparação ao longo do tempo será possível.
O Ragas também oferece geração assistida de conjuntos de teste sintéticos a partir do próprio corpus: a documentação distingue perguntas de um salto (uma única fonte) de perguntas de múltiplos saltos (várias fontes a serem relacionadas), específicas ou abstratas. Um guia oficial mostra como adaptar essa geração a um corpus em outro idioma que não o inglês, usando o espanhol como exemplo, para iniciar uma primeira avaliação antes que as perguntas reais dos usuários tenham tido tempo de se acumular. É um ponto de partida conveniente, nunca um substituto: um conjunto inteiramente sintético não contempla as formulações pouco claras e os erros de digitação que, precisamente, revelam as fragilidades reais de uma busca documental.
#Executar tudo localmente
Ragas se baseia em dois modelos para avaliar: um modelo avaliador que lê a pergunta, os trechos e a resposta, e um modelo de embedding para as medições de similaridade. O quickstart do Ragas utiliza o OpenAI por padrão, mas mostra a variante Ollama: um cliente compatível com OpenAI apontado para http://localhost:11434/v1, passado à função llm_factory. Apenas a relevância da resposta exige um modelo de embedding: fidelidade, precisão e recall do contexto utilizam somente o avaliador.
Duas condições para que o juiz local seja confiável. A primeira é a saída estruturada: as métricas atuais exigem que o juiz forneça decisões intermediárias em um formato imposto (extração de afirmações, veredictos). Um modelo local pode responder em prosa e não cumprir esse contrato, gerando erros de JSON ou pontuações vazias (NaN); um guia da OneUptime recomenda testar o juiz com uma chamada mínima antes de qualquer campanha. Nenhuma fonte oficial define um tamanho mínimo de modelo: cabe a você verificar isso. A segunda é o contexto: o Ollama aplica por padrão 4.000 tokens de contexto quando há menos de 24 GiB de VRAM, e a documentação recomenda aumentar esse valor (variável OLLAMA_CONTEXT_LENGTH) para tarefas pesadas. Um juiz cujo contexto ultrapassa o limite está, na verdade, avaliando um texto truncado.
- Construa a cadeia RAG que você vai avaliar
- Escolher um modelo de embedding para o francês
- Adicione um reranker quando a precisão do contexto for baixa
- Langfuse: rastrear e armazenar as pontuações obtidas
#Ler os resultados sem se enganar
- São indicadores, não notas
- Uma fidelidade de 0,82 não significa «82% de respostas corretas». Esse número serve para comparar duas versões do mesmo sistema, não para garantir uma qualidade absoluta.
- O juiz tem vieses
- O artigo de referência sobre juízes LLM (arXiv 2306.05685) descreve vieses de posição, de verbosidade e de autopreferência. Mantenha o mesmo juiz de uma campanha para outra; caso contrário, as diferenças medem o juiz e não o sistema.
- Uma única campanha não prova nada
- A geração é variável. Em um pequeno conjunto de testes, uma diferença de alguns centésimos pode ser apenas ruído.
- Leia alguns casos manualmente
- Os números indicam onde olhar; eles não indicam o que está errado. Os dez piores casos de uma campanha ensinam mais do que a média geral.
| Método | O que ela oferece | Sua limitação |
|---|---|---|
| Revisão humana em alguns casos | O único controle de qualidade real em um tema com consequências importantes | Não é escalável, exige tempo de especialista em cada campanha |
| Modelo julgador local (Ragas) | Reprodutível, gratuito após a instalação, compara duas versões rapidamente | Vieses de posição, de verbosidade e de autopreferência; a nota não representa uma verdade absoluta |
| Avaliação do usuário (polegar para cima) | Reflete o uso real, sem custo de coleta | Muitas vezes há pouco feedback, e um sinal de positivo não indica qual etapa falhou |
#Casos de uso concretos
- Escolher um tamanho para os trechos
- Repetir o mesmo conjunto de testes com trechos de 256, 512 e depois 1024 tokens dá um número de recall por configuração, e não uma preferência não verificada.
- Validar uma troca de modelo de embedding
- Um novo modelo de embedding, mesmo anunciado como melhor em um benchmark geral, pode reduzir a precisão do contexto no seu corpus específico; só uma rodada de testes locais mostra isso.
- Justificar a adição de um reranker
- Comparar a precisão do contexto antes e depois do reranking quantifica um ganho que, caso contrário, continua sendo apenas uma impressão compartilhada em uma reunião.
- Acompanhar uma regressão após a atualização do corpus
- O acréscimo de novos documentos pode diluir a pesquisa; repetir o jogo de teste fixo após cada importação detecta a degradação antes que o usuário a perceba.
- Escolher entre dois prestadores ou arquiteturas
- Diante de duas propostas concorrentes para construir a mesma cadeia de processamento documental, uma pontuação obtida com o mesmo conjunto de teste e o mesmo corpus permite decidir mais rapidamente do que uma demonstração comercial.
#Organizar campanhas
- Frequência das campanhas
- Após cada mudança na divisão em trechos, no modelo de embedding ou no modelo de geração. Não é necessária uma campanha diária em um sistema estável.
- Tamanho do corpus de teste
- O conjunto de perguntas continua pequeno; já o corpus documental avaliado deve ser uma cópia realista — ou a totalidade — do corpus de produção.
- Custo real de uma campanha
- Cada métrica chama o juiz várias vezes (para a fidelidade: extração das afirmações, depois verificação de cada uma). O custo aumenta, portanto, com o número de perguntas multiplicado pelo número de métricas: cronometre cinco perguntas antes de executar as cinquenta, depois planeje a campanha de acordo.
#Limitações do método
Avaliar com um modelo significa pedir a uma inteligência artificial para julgar outra inteligência artificial: o método é útil, econômico e imperfeito. Ele detecta regressões e classifica variantes; não substitui a revisão humana em uma área em que há muito em jogo, na qual um erro factual implica responsabilidade. Por fim, cada campanha consome tempo de processamento: em uma máquina que também atende os usuários, ela deve ser executada quando a carga estiver baixa, à noite ou em um fim de semana, em vez de em pleno horário de uso.
O viés de verbosidade merece um comentário adicional, porque é contraintuitivo. Um artigo da OneUptime explica que um juiz tem mais oportunidades, em uma resposta longa, de citar as palavras-chave da rubrica de avaliação, de parecer exaustivo e de apresentar uma justificativa convincente. Um prompt que incentiva o modelo avaliado a ser mais verboso pode, portanto, aumentar uma pontuação sem melhorar a resposta do usuário. Para a fidelidade, a documentação do Ragas menciona também uma variante baseada no HHEM-2.1-Open, um pequeno classificador gratuito de detecção de alucinações da Vectara: ele substitui a etapa de verificação por um modelo especializado, que vale a pena testar se o seu juiz local for instável.
A solução mais simples é metodológica: nunca comparar um score de fidelidade obtido com um juiz a um score obtido com outro, nem a um score publicado por terceiros. O número tem sentido apenas dentro de uma mesma configuração de medição — mesmo juiz, mesmo prompt de avaliação, mesma versão das métricas. É uma ferramenta de comparação interna, não um ranking universal.
- Fonte: repositório oficial Ragas no GitHub
- Fonte: viés de verbosidade dos juízes automáticos
- Fonte: documentação oficial da métrica de fidelidade
- Fonte: quickstart Ragas, variante Ollama
- Fonte: comprimento de contexto padrão do Ollama
- Fonte: avaliar um RAG com um juiz local que produz JSON inválido
- Fonte: artigo de referência sobre juízes LLM
#FAQ
O Ragas funciona sem modelo na nuvem?+
Quantas perguntas são necessárias em um conjunto de testes?+
Qual medida deve ser analisada primeiro?+
É possível comparar dois modelos com o Ragas?+
Um modelo avaliador local é confiável?+
Ragas consegue gerar automaticamente um conjunto de testes?+
Um comentário, um erro ou uma observação? Avise-nos; isso ajuda a melhorar o guia para todos.