Guide

Statut éditorial : En attente de relecture

Évaluer un RAG avec Ragas et DeepEval

Construire un jeu de tests et mesurer séparément retrieval, fidélité et qualité de réponse avec Ragas ou DeepEval.

Classification du contenu

Types

  • Observabilité et évaluation
Niveau
Avancé
Publié le
10 août 2026
Dernière relecture
Relecture en attente
Prochaine vérification
10 novembre 2026

Une démonstration réussie ne prouve pas qu’un RAG fonctionne. Il faut séparer deux questions : le retriever trouve-t-il les bons passages, puis le générateur répond-il fidèlement à ces passages ? Ragas et DeepEval fournissent des métriques et des expériences pour rendre cette analyse répétable.

Construire le dataset avant les scores

Collectez de vraies questions, cas limites et demandes sans réponse. Pour chaque exemple, conservez la réponse attendue ou des critères de correction et, si possible, les passages pertinents. Séparez développement et test final. Ajoutez langue, type de document et difficulté pour repérer les segments faibles.

Évaluer le retriever

Mesurez si les passages attendus apparaissent, leur ordre et la quantité de bruit. La précision contextuelle pénalise les fragments inutiles ; le rappel contextuel détecte les preuves manquantes ; la pertinence juge l’adéquation à la question. Inspectez toujours les échecs : un score global ne dit pas si le découpage, les métadonnées ou l’embedding sont responsables.

Évaluer le générateur

La fidélité vérifie que les affirmations sont soutenues par le contexte récupéré. La pertinence de réponse vérifie qu’elle répond à la question. Ajoutez des règles déterministes pour JSON, citations ou contraintes métier. Les juges LLM doivent être calibrés sur une revue humaine et leur modèle/version doit être consigné.

Ragas ou DeepEval ?

Ragas met l’accent sur l’évaluation pilotée par métriques et expériences, avec des workflows pour améliorer un RAG. DeepEval organise tests, datasets et métriques de récupération ou génération, avec intégration possible à pytest. Faites un petit essai sur le même dataset ; choisissez selon métriques, intégration CI, traces, hébergement et facilité d’analyse, pas selon un classement abstrait.

Boucle d’amélioration

Enregistrez une référence, changez un seul paramètre — chunking, top-k, embedding, reranker ou prompt — puis relancez. Conservez coût et latence avec la qualité. Transformez chaque incident de production en exemple, après nettoyage des données personnelles. Bloquez la livraison seulement sur des seuils stables et compris.

FAQ

Peut-on se passer de réponse attendue ?

Certaines métriques le permettent, mais des exemples de référence améliorent diagnostic et calibration.

Un score de fidélité élevé garantit-il la vérité ?

Non. Il signifie surtout que la réponse suit le contexte ; le document source peut être faux ou périmé.

Combien de cas faut-il ?

Commencez avec quelques dizaines représentatives, puis enrichissez à partir des erreurs réelles.

Exemple d’évaluation sur un échantillon

~~~python from ragas import EvaluationDataset, SingleTurnSample, evaluate from ragas.metrics import Faithfulness, ResponseRelevancy

dataset = EvaluationDataset(samples=[ SingleTurnSample( user_input="Quelle est la durée du jeton ?", response="Le jeton expire après 30 minutes.", reference="La durée du jeton est de 30 minutes.", retrieved_contexts=["Les jetons expirent après 30 minutes."], ) ]) result = evaluate( dataset=dataset, metrics=[Faithfulness(), ResponseRelevancy()], experiment_name="rag-v2-baseline", ) print(result) ~~~

Conservez modèle évaluateur, prompts, température et date avec le jeu versionné. Comparez à une baseline avec des seuils par cas critique, pas seulement une moyenne. Relisez manuellement un échantillon : un juge LLM peut être instable ou mal aligné avec votre domaine. DeepEval peut compléter ce travail par des tests Pytest et des assertions adaptées à la CI.

Expérience de la communauté

Ce que signalent les praticiens

Retour du terrain

Le chevauchement des chunks peut dégrader artificiellement la contextual precision

Interprétez la contextual precision avec la stratégie de découpage. Si vos chunks se chevauchent, comparez les scores avec et sans déduplication et complétez-les par la contextual recall et une évaluation de la réponse finale.

Voir la discussion sur GitHub (s’ouvre dans un nouvel onglet)

Point de vigilance

Un contexte de retrieval trop volumineux peut fausser le juge DeepEval

Avant de lancer les métriques, imposez un budget de tokens au retrieval_context et journalisez toute troncature. Un contexte exhaustif n’est pas forcément un meilleur contexte d’évaluation : au-delà de la fenêtre utile du juge, les scores peuvent devenir instables.

Voir la discussion sur GitHub (s’ouvre dans un nouvel onglet)

Sources utilisées