RAG & Connaissances Par

Évaluer un RAG : Ragas, Langfuse ou notation binaire ?

Pour évaluer un RAG, trois choses sont souvent mises sur le même plan alors qu'elles ne répondent pas à la même question. Ragas calcule des métriques (faithfulness, context precision, answer relevancy) à l'aide d'un LLM juge. Langfuse fournit l'infrastructure : traces, datasets, scores, annotation humaine. La notation binaire (juste ou pas juste, sur des questions réelles) donne le chiffre qui permet de décider d'une mise en production.

La méthode que j'applique sur nos projets combine les trois, dans cet ordre : un jeu de questions réelles, une notation binaire, le retrieval et la génération mesurés séparément, un LLM as a judge calibré sur des notes humaines, et un rejeu complet avant chaque mise en production. Les outils automatisent la méthode. Ils ne la remplacent pas.

Cet article s'adresse aux CTO, lead devs et équipes data qui ont un RAG en production ou en recette. Pour le panorama de l'architecture, voir notre guide du RAG en entreprise. Les fonctions des outils citées ici viennent de la documentation de Ragas et de Langfuse, relue le 5 novembre 2026.

Points clés à retenir

  • Les métriques Ragas rendent des scores continus calculés par un LLM juge : utiles pour localiser un problème, difficiles à transformer en décision
  • Langfuse n'est pas une métrique : c'est l'endroit où l'on trace, range les jeux de test, stocke les scores et compare les versions
  • La mesure qui sert à décider : pourcentage de réponses justes, complètes et fausses, en notation binaire, sur des questions réelles
  • Mesurer le retrieval à part (le bon document a-t-il été récupéré ?) suffit à classer la plupart des erreurs, et les bugs trouvés en audit sont presque toujours de ce côté
  • Un LLM as a judge ne vaut que s'il est calibré sur des notes humaines, et le jeu complet se rejoue avant chaque mise en production

Que mesurent les métriques Ragas ?

Ragas est une bibliothèque Python open source qui note un pipeline RAG à partir de triplets question, contexte récupéré, réponse, avec parfois une réponse de référence. Ses métriques principales séparent le retrieval (a-t-on récupéré les bons passages ?) de la génération (la réponse s'appuie-t-elle sur ces passages ?). La plupart sont calculées par un LLM juge, comme le décrit le papier d'origine de Ragas (Es et al., 2023).

Métrique Ragas Ce qu'elle mesure Comment elle est calculée Référence nécessaire
Context precision Les passages utiles sont-ils en tête du classement ? Le juge marque chaque passage utile ou non, puis on calcule une précision moyenne pondérée par le rang Selon la variante (réponse de référence, ou réponse générée)
Context recall Tout ce qu'il faut pour répondre a-t-il été récupéré ? Part des affirmations de la réponse de référence retrouvées dans les passages Oui
Faithfulness La réponse s'appuie-t-elle sur les passages, sans rien inventer ? Le juge découpe la réponse en affirmations et vérifie chacune contre le contexte : affirmations soutenues sur affirmations totales Non
Response relevancy (ex answer relevancy) La réponse traite-t-elle la question posée ? Le juge génère des questions à partir de la réponse, puis on mesure leur similarité d'embeddings avec la question d'origine Non
Noise sensitivity La réponse se laisse-t-elle tromper par des passages hors sujet ? Part des affirmations incorrectes issues de passages non pertinents Oui

Les métriques du retrieval

La context precision et le context recall regardent uniquement ce que la recherche a ramené. Un recall bas signifie que l'information n'était pas dans les passages : aucun prompt ne corrigera ça. Ragas propose plusieurs variantes de la context precision : avec juge LLM et réponse de référence, avec juge LLM sans référence, sans LLM (similarité de texte), ou par comparaison d'identifiants de documents.

Les métriques de la génération

La faithfulness et la response relevancy jugent la réponse. La première mesure la fidélité au contexte, la seconde l'adéquation à la question. Aucune des deux ne vérifie que la réponse est juste au sens du métier, point sur lequel on revient plus bas.

À quoi ressemble un appel

Dans les versions récentes, chaque métrique s'instancie avec un LLM juge et se calcule sur un échantillon, selon la documentation des métriques disponibles de Ragas :

from openai import AsyncOpenAI
from ragas.llms import llm_factory
from ragas.metrics.collections import ContextPrecision

llm = llm_factory("gpt-4o-mini", client=AsyncOpenAI())
scorer = ContextPrecision(llm=llm)

result = await scorer.ascore(
    user_input="Quel est le délai de prévenance pour un congé sans solde ?",
    reference="Deux mois avant la date de départ.",
    retrieved_contexts=[passage_1, passage_2, passage_3],
)
print(result.value)  # un nombre entre 0 et 1

La dernière ligne résume la suite : un nombre entre 0 et 1. Reste à savoir ce qu'on en fait.

Les limites des scores Ragas en production

Les scores Ragas sont continus et produits par un LLM. Les deux propriétés posent problème quand il faut décider si un assistant part en production : un 0,82 de faithfulness ne dit pas combien d'utilisateurs ont reçu une réponse fausse, et le même calcul relancé avec un autre juge ne donne pas le même chiffre.

Un score continu difficile à interpréter

Prenons une réponse de cinq affirmations, dont quatre sont soutenues par le contexte. Faithfulness : 0,8. Si l'affirmation non soutenue est le délai ou le montant que l'utilisateur cherchait, la réponse est inutilisable. Le score moyen sur un jeu de test agrège ces cas avec des réponses parfaites et produit un chiffre que personne, côté métier, ne sait lire.

D'autres cas trompent dans l'autre sens :

  • Faithfulness à 1 sur une réponse fausse. Si le retrieval ramène l'ancienne version d'une procédure, une réponse fidèle à ce passage obtient le score maximal. Elle est fidèle au contexte, et fausse.
  • Response relevancy basse sur la bonne réponse. Sur une question dont la réponse n'existe pas dans les documents, « l'information ne figure pas dans la base » est la réponse attendue. La métrique pénalise les réponses non engagées.
  • Questions synthétiques. Un jeu de test généré à partir des documents ressemble aux documents, pas aux questions des utilisateurs, qui sont imprécises, multi-documents ou hors périmètre.

Un juge LLM bruité

Chaque métrique dépend du modèle juge, de sa version et de son prompt. Deux exécutions sur le même jeu peuvent donner des scores différents, et changer de juge entre deux mesures rend la comparaison caduque. Les biais des juges LLM sont documentés : l'étude « Judging LLM-as-a-Judge » (Zheng et al., 2023) décrit le biais de position, la préférence pour les réponses longues et la tendance d'un modèle à favoriser ses propres réponses.

Ragas reste utile. Un context recall qui s'effondre après un changement de découpage, c'est un signal clair. Ragas propose aussi un AspectCritic qui rend un verdict binaire sur un critère écrit en langage naturel, plus proche de ce qu'on cherche. Mais le chiffre qui sert à décider d'une mise en production doit venir d'une notation que le métier comprend et qu'un humain peut vérifier.

Ce que Langfuse apporte, et ce qu'il n'est pas

Langfuse est une plateforme open source d'observabilité et d'évaluation pour applications LLM. Pour évaluer un RAG, elle apporte quatre briques : les traces de chaque exécution, les datasets de questions, les experiments qui comparent deux versions sur le même dataset, et les scores, saisis à la main, calculés en code ou produits par un LLM as a judge. Langfuse n'est pas une métrique : il ne dit pas ce qu'est une bonne réponse.

D'après la documentation d'évaluation de Langfuse, les fonctions utiles à un RAG sont les suivantes :

  • Scores typés. Numériques, catégoriels, booléens (1 ou 0) ou texte, attachés à une trace, à une étape (observation) ou à une session. Les score configs imposent un nom, un type et des valeurs autorisées, ce qui évite qu'un même critère soit noté de trois façons.
  • Datasets et experiments. Le jeu de questions est versionné dans l'outil, et chaque version du pipeline produit un run comparable au précédent.
  • LLM as a judge. Des évaluateurs configurables notent automatiquement des traces de production ou les runs d'un dataset.
  • Annotation queues. Un expert métier note des traces dans l'interface, sans toucher au code. Ce sont ces notes qui servent à calibrer le juge.
  • Intégration CI. Un experiment lancé dans la chaîne de déploiement peut bloquer une mise en production en cas de régression.

Le type booléen colle à la notation binaire. Un verdict se pousse en une ligne avec le SDK Python :

from langfuse import get_client

langfuse = get_client()
langfuse.create_score(
    trace_id=trace_id,
    name="reponse_juste",
    value=1 if verdict.juste else 0,
    data_type="BOOLEAN",
    comment=verdict.justification,
)

Ce que Langfuse ne fait pas : choisir les questions, écrire la réponse attendue, définir le critère de justesse, calibrer son propre juge. Son évaluateur LLM as a judge est un juge comme un autre, qui demande la même calibration. L'installation et les traces sont détaillées dans notre article Langfuse, observabilité LLM open source, et la comparaison avec DeepEval, LangSmith ou Phoenix dans le comparatif des outils d'évaluation et d'observabilité des LLM.

Approche Question à laquelle elle répond Ce qu'elle ne fait pas
Ragas Où se situe la faiblesse : retrieval ou génération ? Dire si la réponse est juste pour le métier ; donner un seuil de mise en production
Langfuse Que s'est-il passé sur cette exécution, et la version B fait-elle mieux que la A ? Définir le critère de qualité ; fournir le jeu de questions
Notation binaire et juge calibré Quel pourcentage de réponses justes, complètes, fausses, sur des questions réelles ? Se passer d'un humain au départ : il faut des notes de référence

La notation binaire : la méthode qu'on applique

La méthode tient en une phrase : un jeu de questions réelles, chacune notée juste ou pas juste, avec le retrieval mesuré à part de la génération. Elle donne un pourcentage de performance dès le début du projet, et c'est ce pourcentage qui pilote la suite.

Le jeu de questions

On démarre avec 20 à 50 questions, prêtes dès les 2 à 3 premiers jours. Le jeu s'empile ensuite : pendant les tests, toutes les questions des utilisateurs sont reprises dans l'évaluation. Chaque entrée porte trois champs : la question, la réponse attendue, et le ou les documents où elle se trouve. Ce troisième champ est celui qu'on oublie, et c'est lui qui permet de diagnostiquer.

Juste, complète, fausse

On suit trois pourcentages, chacun en binaire : réponses justes, réponses complètes, réponses fausses. Pas de note de 1 à 5, peu pertinente : deux relecteurs ne mettent pas le même 3, et un 3 ne dit pas quoi corriger. La question binaire a un autre avantage : elle se calibre entre un humain et un juge, ce qu'une échelle à cinq niveaux rend très difficile. La logique côté décideur (pourquoi mesurer, ce que montre la première mesure) est détaillée dans notre article sur la mesure de la performance d'un RAG.

Séparer retrieval et génération

Pour chaque question, on vérifie d'abord, en binaire aussi, si le document attendu figure parmi les passages récupérés. Croisé avec le verdict sur la réponse, ce contrôle classe l'erreur sans juge supplémentaire :

Document attendu récupéré ? Réponse juste ? Lecture
Oui Oui Le cas nominal
Oui Non Problème de génération : prompt, modèle, passage mal lu (tableau, schéma)
Non Non Problème de retrieval : parsing, découpage, recherche, ou bug dans la chaîne
Non Oui À relire : réponse tirée des connaissances du modèle, ou document attendu mal renseigné

En audit, cette séparation fait apparaître le cas le plus fréquent : des bugs dans la chaîne de traitement, pas le modèle. Trois exemples réels :

  • un modèle d'embeddings différent à l'indexation et à la recherche, ce qui fausse toute la recherche ;
  • un seul chunk extrait par mégarde, au lieu de plusieurs ;
  • une recherche qui ne prend en compte que le dernier message au lieu de toute la conversation.

Aucun de ces bugs ne se voit dans une faithfulness moyenne. Tous se voient dès qu'on regarde, question par question, si le bon document est remonté.

Comment calibrer un LLM as a judge sur des notes humaines ?

Un LLM as a judge se calibre comme un instrument de mesure : on le compare à une référence humaine, on corrige ses écarts, et on ne l'utilise seul qu'une fois l'accord jugé suffisant par le métier. Sans cette étape, on remplace une impression humaine par une impression automatisée.

Le prompt du juge

Le juge reçoit la question, la réponse attendue et la réponse de l'assistant. Il rend une justification courte, puis un verdict booléen, en sortie structurée. Le critère est écrit noir sur blanc, avec les cas limites tranchés :

from pydantic import BaseModel

class Verdict(BaseModel):
    justification: str
    juste: bool

def prompt_juge(question, attendue, reponse):
    return f"""Compare la réponse de l'assistant à la réponse attendue.
Question : {question}
Réponse attendue : {attendue}
Réponse de l'assistant : {reponse}

La réponse est juste si elle ne contient aucune erreur ni
contradiction avec la réponse attendue. Une réponse exacte mais
incomplète reste juste (la complétude est notée à part).
Si l'information n'existe pas, « je ne sais pas » est juste.
Écris une justification courte, puis le verdict."""

Demander la justification avant le verdict rend chaque désaccord lisible : on voit pourquoi le juge a tranché, et donc quelle phrase du critère corriger.

Mesurer l'accord avec l'humain

Un expert du métier note un échantillon de réponses (dans Langfuse, via une annotation queue). Le juge note les mêmes. On compare :

# notes_humaines, notes_juge : dict question_id -> bool
communes = notes_humaines.keys() & notes_juge.keys()
accord = sum(notes_humaines[q] == notes_juge[q] for q in communes) / len(communes)
desaccords = [q for q in communes if notes_humaines[q] != notes_juge[q]]

Chaque désaccord est relu. Soit le critère était flou et on le précise, soit l'humain s'est trompé et on corrige la référence. On recommence jusqu'à ce que l'accord convienne au métier. Le modèle juge, sa version et son prompt sont ensuite figés : en changer revient à changer d'instrument, et oblige à recalibrer.

Où garder l'humain

Les réponses fausses sur des sujets à risque (montant, délai, conformité), les nouvelles familles de questions et un échantillon régulier de verdicts du juge restent relus par un humain. Le juge prend le volume, l'humain garde la référence. Pour les métriques d'un LLM hors RAG (classification, extraction, rédaction), voir notre article sur l'évaluation d'un LLM en entreprise.

Tests de régression avant chaque mise en production

Le jeu de questions complet se rejoue avant chaque mise en production : changement de modèle, de prompt, de découpage, de source documentaire ou de fonctionnalité. Sans ce rejeu, on ne sait pas si une modification améliore l'assistant ou le dégrade, et c'est la situation la plus fréquente quand on reprend un RAG existant.

La comparaison se fait question par question, pas seulement sur le pourcentage global. Un score stable peut cacher dix questions gagnées et dix perdues, et les perdues sont souvent celles qu'un utilisateur avait signalées.

regressions = [q for q in jeu if avant[q] and not apres[q]]
gains = [q for q in jeu if apres[q] and not avant[q]]
# Toute régression est relue avant la mise en production.

Ce que montrent les chiffres

Un RAG basique répond correctement à 50 à 70 % des questions. Le résultat de la première mesure surprend régulièrement le client. Après les premières corrections, qui portent surtout sur des bugs de la chaîne de traitement, voici les trajectoires observées sur nos projets :

  • de 30 % à 70 % de réponses justes ;
  • de 50 % à 70 % ;
  • de 20 % à 50 % sur des cas d'usage complexes.

Ce que la mesure fait trancher

Sur un projet réel, l'ordre a été le suivant : évaluation et correction des petits bugs, collecte des retours des utilisateurs test, parsing, chunking, recherche hybride, puis reranking. Le reranking faisait passer la note de 89 % à 92 %. Il n'a pas été retenu : ce cas d'usage avait besoin d'un temps de réponse court, et trois points ne justifiaient pas l'attente supplémentaire. Le détail étape par étape est dans notre article sur l'ordre d'amélioration d'un RAG.

La mesure sert aussi à écarter. En expérimentation, plusieurs pistes n'ont rien apporté, dont le passage en agentic RAG. Sans jeu de test, ces pistes partent en production sur une intuition. Avec, elles se testent en quelques runs et se rejettent sur un chiffre.

Le rythme

Nos projets avancent en sprints d'un mois, avec des objectifs précis et des livrables à chaque sprint. « Je ne promets pas la lune, mais une procédure scientifique, qui a fait ses preuves, avec l'évaluation au centre. » Sur un assistant déjà en service, le même rejeu détecte la dérive décrite dans notre article sur la maintenance d'un RAG en production.

Si votre RAG tourne sans jeu de test ni score de référence, c'est le point de départ de notre audit RAG et agents IA : on construit le jeu de questions sur vos documents, on pose la mesure binaire, et on vous remet le premier score avec les causes d'erreur classées.

Questions fréquentes sur l'évaluation d'un RAG avec Ragas et Langfuse

Ragas est une bibliothèque Python open source d'évaluation des pipelines RAG. Elle calcule des métriques comme la faithfulness (fidélité de la réponse au contexte récupéré), la context precision et le context recall (qualité du retrieval) et la response relevancy (anciennement answer relevancy). La plupart de ces métriques s'appuient sur un LLM juge, ce qui les rend rapides à lancer mais sensibles au choix du modèle juge.
La métrique la plus utile pour décider est le pourcentage de réponses justes sur un jeu de questions réelles, noté en binaire, complété par le pourcentage de réponses complètes et le pourcentage de réponses fausses. Pour diagnostiquer, on mesure en plus le retrieval à part : le document attendu figure-t-il parmi les passages récupérés ? Les métriques Ragas (faithfulness, context precision, context recall) servent ensuite à localiser une baisse, pas à fixer le seuil de mise en production.
Langfuse fournit l'infrastructure de l'évaluation : traces de chaque exécution, datasets de questions, experiments pour comparer deux versions, scores numériques, catégoriels ou booléens, évaluateurs LLM as a judge et files d'annotation humaine. Il ne définit pas ce qu'est une bonne réponse et ne fournit pas le jeu de questions. Langfuse n'est pas une métrique : c'est l'endroit où l'on calcule, range et compare les scores.
Les deux ne font pas la même chose et se combinent. Ragas calcule des métriques sur des triplets question, contexte, réponse. Langfuse trace l'application, stocke les jeux de test et les scores, et permet de comparer les versions. On peut calculer un score avec Ragas ou avec son propre juge et l'envoyer dans Langfuse. Le choix structurant n'est pas l'outil, c'est le jeu de questions et le critère de notation.
Seulement après l'avoir calibré. On fait noter un échantillon de réponses par un humain du métier, on fait noter les mêmes réponses par le juge, puis on mesure l'accord et on relit chaque désaccord pour corriger le prompt du juge. Un verdict binaire avec une justification courte est plus stable qu'une note continue. Les biais des juges LLM (position, longueur des réponses, préférence pour leurs propres réponses) sont documentés dans la littérature.
Sur nos projets, 20 à 50 questions réelles suffisent pour démarrer, prêtes dès les 2 à 3 premiers jours. Le jeu grossit ensuite : pendant les tests, toutes les questions des utilisateurs sont reprises dans l'évaluation. Chaque question porte la réponse attendue et le document où elle se trouve, pour pouvoir mesurer le retrieval et la génération séparément.
Une note de 1 à 5 est peu pertinente : deux relecteurs ne mettent pas le même 3, et un 3 ne dit pas ce qu'il faut corriger. Une question binaire (la réponse est-elle juste, oui ou non) se calibre entre un humain et un LLM juge, donne un pourcentage lisible par un dirigeant et rend les régressions visibles question par question.

Votre RAG est en production sans score de référence ?

On construit le jeu de questions sur vos documents, on pose la notation binaire et on mesure retrieval et génération séparément. Vous repartez avec un premier score et les causes d'erreur classées, sur devis selon le périmètre.

Voir l'audit RAG et agents IA

Pour aller plus loin

Sources consultées le 5 novembre 2026 : documentation des métriques Ragas, documentation d'évaluation Langfuse, Es et al., 2023 et Zheng et al., 2023.

Formation

Pour que vos équipes appliquent ces usages sur leurs propres documents, voir notre formation RAG, construite sur vos cas.

Assistants IA sur vos données

Un assistant qui répond juste, à partir de vos documents ?

On construit l'assistant sur vos documents et vos outils : réponses sourcées, droits d'accès respectés, qualité mesurée sur vos vraies questions avant la mise en service.

Pas sûr que ce soit rentable chez vous ? Estimez en 5 minutes le temps récupérable sur cette tâche, résultat immédiat et sans email.

Anas Rabhi, ingénieur IA et data scientist, fondateur de Tensoria
Anas R. Ingénieur IA, fondateur de Tensoria ianas.fr

Je suis ingénieur IA et data scientist, fondateur de Tensoria. Depuis plus de 6 ans, je conçois et développe des systèmes IA pour les entreprises : assistants internes basés sur RAG, agents IA en production, automatisations sur mesure, traitement intelligent de documents. Je prends le projet en charge du cadrage à la mise en production, sur les modèles du marché (Mistral, Claude, GPT) ou sur des modèles ouverts hébergés chez le client quand la confidentialité l'exige.