RAGAS : le standard pour l'évaluation RAG
RAGAS (Retrieval Augmented Generation Assessment) est un framework open source pour évaluer les pipelines RAG de manière automatisée. Il mesure la qualité du retrieval et de la génération sans nécessiter de labels humains.
Métriques principales
Faithfulness (Fidélité)
Mesure si la réponse générée est fidèle au contexte récupéré (pas d'hallucinations).
- Score 0-1 : proportion des affirmations vérifiables dans le contexte
- Détecte les hallucinations et inventions du LLM
Answer Relevancy (Pertinence de la réponse)
Mesure si la réponse est pertinente par rapport à la question posée.
- Génère des questions à partir de la réponse et compare avec la question originale
- Pénalise les réponses hors sujet ou incomplètes
Context Precision
Mesure si les documents récupérés pertinents sont bien classés en haut.
- Évalue la qualité du ranking du retriever
- Un bon retriever met les documents pertinents en premier
Context Recall
Mesure si tous les éléments nécessaires pour répondre sont présents dans le contexte.
- Nécessite une ground truth (réponse de référence)
- Identifie les manques dans le retrieval
Installation et utilisation
pip install ragasfrom ragas import evaluate
from ragas.metrics import (
faithfulness,
answer_relevancy,
context_precision,
context_recall
)
from datasets import Dataset
# Préparer les données
data = {
"question": ["Qu'est-ce que le RAG ?"],
"answer": ["Le RAG est une technique qui..."],
"contexts": [["Le Retrieval Augmented Generation..."]],
"ground_truth": ["Le RAG combine retrieval et génération..."]
}
dataset = Dataset.from_dict(data)
# Évaluer
result = evaluate(
dataset,
metrics=[faithfulness, answer_relevancy, context_precision, context_recall]
)
print(result)
# {'faithfulness': 0.92, 'answer_relevancy': 0.88, ...}Évaluation en batch
# Évaluer sur un dataset complet
from ragas.testset.generator import TestsetGenerator
generator = TestsetGenerator.from_langchain(llm, embeddings)
testset = generator.generate_with_langchain_docs(
documents, test_size=50
)
result = evaluate(testset, metrics=[faithfulness, answer_relevancy])Interprétation des scores
- Faithfulness < 0.8 : Problème d'hallucination, revoir le prompt ou le contexte
- Answer Relevancy < 0.7 : La réponse ne traite pas la question, revoir le prompt
- Context Precision < 0.7 : Le retriever ramène trop de bruit, ajouter un reranker
- Context Recall < 0.7 : Le retriever manque des documents, revoir le chunking
Intégration CI/CD
Exécutez RAGAS dans votre pipeline CI pour détecter les régressions après chaque changement de prompt, modèle ou stratégie de chunking.