Skip to content

使用指标进行评估

运行 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密钥,并在您的环境中可用。

import os
os.environ["OPENAI_API_KEY"] = "your-openai-key"
将LLMs封装在LangchainLLMWrapper
from ragas.llms import LangchainLLMWrapper
from langchain_openai import ChatOpenAI
evaluator_llm = LangchainLLMWrapper(ChatOpenAI(model="gpt-4o"))

首先,您需要设置您的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},
}
定义您的LLMs
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,)

导出和分析结果

df = result.to_pandas()
df.head()