RAGAS – Comment mesurer la qualité de votre RAG

Vous avez déployé un pipeline RAG pour permettre à vos équipes d’interroger vos documents internes. Mais comment savoir si ce système répond vraiment bien ? Est-il fiable, précis, pertinent ? C’est exactement la problématique que résout RAGAS – un framework open source spécialement conçu pour évaluer la qualité des pipelines RAG de manière objective et automatisée.

Qu’est-ce que RAGAS ?

RAGAS (RAG Assessment) est un framework d’évaluation open source créé pour mesurer automatiquement la qualité des systèmes RAG. Là où l’évaluation manuelle est coûteuse et subjective, RAGAS propose des métriques calculables de manière programmatique, en s’appuyant sur un LLM juge pour noter les réponses selon plusieurs dimensions.

Le principe : on soumet à RAGAS un ensemble de questions, les réponses générées par votre RAG, les documents récupérés (contexte), et optionnellement les réponses de référence. RAGAS calcule alors des scores entre 0 et 1 pour chaque métrique.

Les 4 métriques fondamentales de RAGAS

1. Faithfulness (fidélité)

La faithfulness mesure si la réponse générée est factuellement cohérente avec les documents récupérés. Autrement dit : est-ce que le LLM invente des informations, ou se base-t-il uniquement sur ce qui est dans le contexte ?

Un score bas indique que votre LLM «hallucinne» – il génère des informations non présentes dans vos documents. C’est souvent le problème le plus critique pour les entreprises qui utilisent le RAG pour des usages réglementés (juridique, finance, médical).

  • Score idéal : > 0.85
  • Signal d’alarme : < 0.7 – votre LLM fabrique des réponses

2. Answer Relevancy (pertinence de la réponse)

Cette métrique évalue si la réponse répond bien à la question posée. Une réponse fidèle aux documents mais hors sujet obtiendrait un score de faithfulness élevé mais un answer relevancy bas.

  • Score idéal : > 0.80
  • Cas typique de score bas : réponses trop génériques qui «noient le poisson»

3. Context Precision (précision du contexte)

La context precision mesure si les documents récupérés par votre retriever sont bien ceux qui contiennent la réponse. Elle évalue la qualité de votre moteur de recherche vectorielle.

  • Score idéal : > 0.75
  • Actions correctives : revoir la taille des chunks, changer de modèle d’embedding

4. Context Recall (rappel du contexte)

Le context recall mesure si tous les éléments nécessaires à la réponse sont bien présents dans les documents récupérés. Cette métrique nécessite une réponse de référence (ground truth).

  • Score idéal : > 0.80
  • Diagnostic : score bas = problème d’indexation ou de couverture documentaire

Comment installer et utiliser RAGAS

RAGAS s’installe en une ligne via pip et s’intègre facilement dans vos pipelines Python existants :

pip install ragas

Exemple d’utilisation :

from ragas import evaluate
from ragas.metrics import faithfulness, answer_relevancy, context_precision, context_recall
from datasets import Dataset

data = {
    "question": ["Quelle est notre politique de remboursement ?"],
    "answer": ["Les remboursements sont traités sous 5 jours ouvrés."],
    "contexts": [["Notre politique prévoit un délai de 5 jours ouvrés."]],
    "ground_truth": ["Les remboursements prennent 5 jours ouvrés."]
}

dataset = Dataset.from_dict(data)
result = evaluate(dataset, metrics=[faithfulness, answer_relevancy, context_precision, context_recall])
print(result)

Intégration avec RAGFlow

RAGFlow est une plateforme open source de gestion de pipelines RAG qui simplifie le déploiement et la gestion de systèmes documentaires. L’intégration de RAGAS avec RAGFlow permet d’automatiser l’évaluation continue de vos pipelines.

Architecture recommandée pour une PME

  • RAGFlow : gestion des documents, chunking, indexation, API de requêtes
  • RAGAS : évaluation automatique via un golden dataset
  • Grafana + Prometheus : visualisation des scores dans le temps
  • CI/CD : déclenchement automatique des évaluations à chaque mise à jour documentaire

Créer un golden dataset

La première étape consiste à créer un golden dataset – un ensemble de questions-réponses de référence. RAGAS propose un outil de génération synthétique :

from ragas.testset.generator import TestsetGenerator
from ragas.testset.evolutions import simple, reasoning, multi_context

generator = TestsetGenerator.with_openai()
testset = generator.generate_with_langchain_docs(
    documents, test_size=50,
    distributions={simple: 0.5, reasoning: 0.25, multi_context: 0.25}
)

Interpréter vos scores RAGAS

Scénario 1 : Faithfulness haute, Answer Relevancy basse

Votre LLM est fidèle aux documents mais ne répond pas bien aux questions. Cause probable : prompt système trop restrictif ou documents insuffisants. Solution : enrichir votre base documentaire et affiner votre prompt.

Scénario 2 : Context Precision basse

Votre retriever ramène des documents peu pertinents. Solutions : tester différents modèles d’embedding (text-embedding-3-small, multilingual-e5-large) et réduire la taille des chunks.

Scénario 3 : Tous les scores sont bons mais les utilisateurs se plaignent

Les métriques RAGAS ne capturent pas tout. Complétez avec des évaluations humaines sur des critères qualitatifs : clarté, ton, format de la réponse.

Mettre en place un monitoring continu

  • Fréquence : évaluation hebdomadaire automatique sur votre golden dataset
  • Alertes : notification Slack si un score chute de plus de 10 points
  • Versioning : tracer chaque changement de modèle, prompt ou base documentaire
  • Dashboard : tableau de bord Grafana avec l’historique des scores par métrique

Coût et dimensionnement

RAGAS utilise un LLM pour calculer ses métriques, ce qui génère un coût. Pour un golden dataset de 100 questions évalué avec GPT-4o, comptez environ 0,50€ à 2€ par évaluation complète. Pour réduire les coûts, utilisez GPT-4o-mini comme juge ou réduisez votre golden dataset aux 50 questions les plus représentatives.

Conclusion

RAGAS est aujourd’hui l’outil de référence pour évaluer objectivement la qualité de vos pipelines RAG. En quelques heures de mise en place, vous obtenez des métriques précises sur la fidélité, la pertinence et la qualité de votre retrieval – et prenez des décisions éclairées pour améliorer votre système.

Vous souhaitez mettre en place un pipeline RAG évalué avec RAGAS pour votre entreprise ? Contactez l’équipe Digitalizor – nous accompagnons les PME françaises dans le déploiement et l’optimisation de leurs systèmes IA documentaires.

🔁 Architecture Pipeline RAG + Évaluation RAGAS

Flux complet d’une requête : de la question utilisateur à l’évaluation automatique par RAGAS

👤

Question
User query

🔍

Retriever
Vector search

📄

Contexte
Top-K chunks

🤖

LLM
Génération

💬

Réponse
Output final

⚖️

RAGAS Judge

Faithfulness
Answer Rel.
Ctx Precision
Ctx Recall
Correctness

📊 Les 5 métriques RAGAS : tableau comparatif complet

Métrique Description Formule / Calcul Seuil cible
Faithfulness La réponse est-elle factuellement fondée sur le contexte récupéré ? Détecte les hallucinations. Statements vérifiés ÷ Total statements ≥ 0.85
Answer Relevancy La réponse répond-elle directement à la question ? Pénalise les hors-sujets et imprécisions. CosSim(réponse, questions régénérées) ≥ 0.80
Context Precision Les chunks récupérés sont-ils pertinents ? Mesure le rapport signal/bruit du retriever. Chunks pertinents bien classés ÷ Total chunks ≥ 0.75
Context Recall Toutes les infos nécessaires ont-elles été récupérées ? Évalue la couverture du retriever. Statements couverts par contexte ÷ Total ground truth ≥ 0.80
Answer Correctness La réponse est-elle exacte par rapport à une vérité de terrain (ground truth) ? F1(facts) × 0.75 + Sim Sém × 0.25 ≥ 0.70

💻 Code Python complet : Installation et évaluation RAGAS

# ============================================================
# RAGAS - Evaluation complete d'un pipeline RAG
# ============================================================

# 1. Installation
# pip install ragas langchain-openai datasets pandas

# 2. Imports
from ragas import evaluate
from ragas.metrics import (
    faithfulness,
    answer_relevancy,
    context_precision,
    context_recall,
    answer_correctness,
)
from datasets import Dataset
from langchain_openai import ChatOpenAI, OpenAIEmbeddings
from ragas.llms import LangchainLLMWrapper
from ragas.embeddings import LangchainEmbeddingsWrapper
import pandas as pd
import os

os.environ["OPENAI_API_KEY"] = "sk-..."  # Remplacez par votre cle API

# 3. Dataset d'evaluation (questions, reponses RAG, contextes, ground truth)
data = {
    "question": [
        "Quels sont les avantages de RAGAS ?",
        "Comment fonctionne la metrique Faithfulness ?",
        "RAGAS necessite-t-il des annotations manuelles ?",
    ],
    "answer": [
        "RAGAS permet d'evaluer automatiquement la qualite d'un pipeline RAG.",
        "Faithfulness mesure si chaque statement de la reponse est inferable depuis le contexte.",
        "Non, RAGAS fonctionne sans ground truth pour Faithfulness et Answer Relevancy.",
    ],
    "contexts": [
        ["RAGAS est un framework open source pour evaluer les pipelines RAG automatiquement."],
        ["Faithfulness decompose la reponse en statements atomiques verifies vs le contexte."],
        ["RAGAS supporte deux modes : avec et sans ground truth."],
    ],
    "ground_truth": [
        "RAGAS automatise l'evaluation RAG avec des metriques objectives.",
        "Faithfulness = statements verifies / total statements.",
        "Certaines metriques RAGAS ne necessitent pas de ground truth.",
    ],
}

dataset = Dataset.from_dict(data)

# 4. Configuration du LLM juge
llm = LangchainLLMWrapper(ChatOpenAI(model="gpt-4o-mini", temperature=0))
embeddings = LangchainEmbeddingsWrapper(OpenAIEmbeddings())

# 5. Evaluation complete
result = evaluate(
    dataset=dataset,
    metrics=[
        faithfulness,
        answer_relevancy,
        context_precision,
        context_recall,
        answer_correctness,
    ],
    llm=llm,
    embeddings=embeddings,
)

# 6. Resultats detailles
df = result.to_pandas()
metrics_cols = ["faithfulness", "answer_relevancy",
                "context_precision", "context_recall", "answer_correctness"]

print("Resultats par question :")
print(df[["question"] + metrics_cols].to_string())

print("\nScores moyens :")
for m in metrics_cols:
    score = df[m].mean()
    status = "OK" if score >= 0.75 else "A ameliorer"
    print(f"  {m:25}: {score:.3f}  [{status}]")

# 7. Export CSV pour suivi
df.to_csv("ragas_results.csv", index=False)
print("\nResultats exportes dans ragas_results.csv")

🚦 Seuils de qualité RAGAS — Guide visuel

🟢
Score ≥ 0.80

Production-ready

Pipeline de qualité excellente. Déployable en confiance. Monitoring trimestriel suffisant.

🟡
Score 0.60–0.79

À optimiser

Acceptable pour usage interne. Optimiser le chunking, l’embedding ou le prompt système.

🔴
Score < 0.60

Critique

Ne pas déployer. Revoir l’architecture : qualité des documents, taille des chunks, modèle LLM.