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.