Aller au contenu principal

Chapitre 2 : Cadre RAGAS

Qu'est-ce que RAGAS ?​

RAGAS (Retrieval Augmented Generation Assessment) est un cadre pour évaluer automatiquement les pipelines RAG en utilisant des LLMs.

Installation​

pip install ragas

Utilisation de base​

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

# Préparer les données d'évaluation
data = {
"question": ["Qu'est-ce que RAG ?"],
"answer": ["RAG combine la récupération avec la génération..."],
"contexts": [["RAG est une technique qui...", "Il récupère..."]],
"ground_truth": ["RAG est la génération augmentée par récupération..."]
}

dataset = Dataset.from_dict(data)

# Évaluer
results = evaluate(
dataset,
metrics=[
faithfulness,
answer_relevancy,
context_precision,
context_recall
]
)

print(results)

Métriques RAGAS​

MetricDescriptionRange
faithfulnessRéponse ancrée dans le contexte0-1
answer_relevancyLa réponse répond à la question0-1
context_precisionLes documents récupérés sont pertinents0-1
context_recallToutes les informations nécessaires sont récupérées0-1

Création d'un jeu de données de test​

def create_eval_dataset(qa_pairs, rag_system):
"""Générer un jeu de données d'évaluation à partir de paires Q&R"""
data = {"question": [], "answer": [], "contexts": [], "ground_truth": []}

for qa in qa_pairs:
question = qa["question"]
ground_truth = qa["expected_answer"]

# Obtenir la réponse RAG
response = rag_system.query(question)

data["question"].append(question)
data["answer"].append(response["answer"])
data["contexts"].append(response["contexts"])
data["ground_truth"].append(ground_truth)

return Dataset.from_dict(data)

Interprétation des résultats​

ScoreInterprétation
>0.9Excellent
0.7-0.9Bon, amélioration possible
0.5-0.7Nécessite du travail
<0.5Problèmes significatifs

Évaluation continue​

# Pipeline d'évaluation hebdomadaire
def weekly_eval(rag_system, test_questions):
dataset = create_eval_dataset(test_questions, rag_system)
results = evaluate(dataset, metrics=[...])

# Stocker les résultats
save_metrics_to_db(results, timestamp=datetime.now())

# Alerter en cas de dégradation
if results["faithfulness"] < 0.8:
send_alert("La fidélité est tombée en dessous du seuil !")