使用指标进行评估
运行 ragas 指标以评估 RAG
在本教程中,我们将使用一个示例 测试数据集,选择 Ragas 提供的部分 可用指标,并评估一个简单的 RAG 管道。
处理数据
这里使用的数据集来自 Amnesty QA RAG,其中包含了本教程所需的必要数据点。这里我将其从 huggingface 中心加载,但您可以使用来自任何来源的文件。
from datasets import load_dataset
dataset = load_dataset("explodinggradients/amnesty_qa","english_v3")
将数据转换为 ragas 的 评估数据集
from ragas import EvaluationDataset, SingleTurnSample
samples = []
for row in dataset['eval']:
sample = SingleTurnSample(
user_input=row['user_input'],
reference=row['reference'],
response=row['response'],
retrieved_contexts=row['retrieved_contexts']
)
samples.append(sample)
eval_dataset = EvaluationDataset(samples=samples)
选择所需指标
Ragas 提供了 多种指标,用户可以选择这些指标来评估 LLM 应用。您还可以在 ragas 的基础上构建自己的指标。在本教程中,我们将选择一些常用于评估单轮 RAG 系统的指标。
from ragas.metrics import LLMContextRecall, Faithfulness, FactualCorrectness, SemanticSimilarity
from ragas import evaluate
由于我们选择的指标都是基于 LLM 的指标,因此我们需要选择用于评估的 LLM。
选择评估器 LLM
本指南利用OpenAI运行一些指标,因此请确保您已准备好OpenAI密钥,并在您的环境中可用。
将LLMs封装在LangchainLLMWrapper
中
首先,您需要设置您的AWS凭证和配置
config = {
"credentials_profile_name": "your-profile-name", # 例如 "default"
"region_name": "your-region-name", # 例如 "us-east-1"
"model_id": "your-model-id", # 例如 "anthropic.claude-v2"
"model_kwargs": {"temperature": 0.4},
}
from langchain_aws.chat_models import BedrockChat
from ragas.llms import LangchainLLMWrapper
evaluator_llm = LangchainLLMWrapper(BedrockChat(
credentials_profile_name=config["credentials_profile_name"],
region_name=config["region_name"],
endpoint_url=f"https://bedrock-runtime.{config['region_name']}.amazonaws.com",
model_id=config["model_id"],
model_kwargs=config["model_kwargs"],
))
运行评估
metrics = [LLMContextRecall(), FactualCorrectness(), Faithfulness()]
results = evaluate(dataset=eval_dataset, metrics=metrics, llm=evaluator_llm,)