RAGAS 评估
将 RAGAS 评估框架集成到你的 my_ai_platform 项目中,主要可以分为四个步骤。
📦 第一步:安装与准备
首先,在项目环境中安装 RAGAS。
pip install ragas
然后,在你的项目根目录下,创建一个独立的评估目录来存放所有相关文件。
mkdir -p evals/datasets evals/experiments
创建一个名为 evals.py 的 Python 文件,这是评估流程的核心。
⚙️ 第二步:准备评估数据集
评估数据集是测试的基础。你需要准备一个包含以下内容的测试集:
question:要测试的问题列表。ground_truth:对应问题的标准答案。contexts:为回答该问题而检索到的上下文文本列表。
你可以在 evals/datasets/ 目录下创建一个 test_data.csv 文件来存储这些数据。建议准备至少 15-20 个样本,以确保评估结果具有统计意义。
🧠 第三步:配置评估模型(LLM)
RAGAS 在评估时本身需要调用一个 LLM。你需要选择一个 LLM 作为“评估者”。你可以在 evals.py 中配置:
使用 OpenAI(最直接):
import os from ragas.llms import llm_factory os.environ["OPENAI_API_KEY"] = "你的OpenAI API密钥" # llm = llm_factory("gpt-4o") #使用兼容 OpenAI 接口的服务(如阿里云百炼):
from openai import OpenAI from ragas.llms import llm_factory client = OpenAI( api_key="你的API密钥", base_url="你的API基础URL" # 例如:阿里云百炼的兼容模式地址 ) llm = llm_factory("你的模型名称", provider="openai", client=client) #
📝 第四步:编写完整的评估脚本
将以下代码整合到你的 evals.py 文件中,完成一个完整的评估流程。
1. 导入必要的库
import os
import pandas as pd
from ragas import EvaluationDataset, evaluate
from ragas.metrics import faithfulness, answer_relevancy, context_precision
from ragas.llms import llm_factory
from ragas.embeddings import embedding_factory
# 导入你自己的 RAG 系统
from src.application.services.rag_service import RAGService
from src.infrastructure.llm.alibaba_llm import create_alibaba_llm
# ... 其他必要的导入 ...
2. 加载并初始化你的 RAG 系统
你需要实例化你的 RAGService,以便对测试集中的每个问题进行查询。这部分代码需要根据你的项目结构来写,但核心是获得一个可以调用的 ask 方法。
# 初始化你的 RAG 系统(示例)
# llm = create_alibaba_llm(...)
# retriever = ...
# rag_engine = RAGService(llm_client=llm, retriever=retriever)
3. 加载和准备数据集
这一步从 CSV 文件加载测试数据,并转换为 RAGAS 需要的 EvaluationDataset 格式。
def load_test_dataset():
# 从 CSV 文件加载数据
df = pd.read_csv("evals/datasets/test_data.csv")
samples = []
for _, row in df.iterrows():
# 假设 CSV 有 question, ground_truth, contexts 三列
# contexts 可以是字符串,RAGAS 会处理
samples.append({
"user_input": row["question"],
"reference": row["ground_truth"],
"retrieved_contexts": [row["contexts"]] # 注意:这里需要是列表
})
# 转换为 RAGAS 的 EvaluationDataset
return EvaluationDataset.from_list(samples)
4. 执行评估
这是评估流程的核心。它会遍历数据集,查询你的 RAG 系统,然后使用选定的指标进行计算。
# 设置评估用的 LLM 和 Embeddings(配置你的阿里云百炼或 OpenAI)
# llm = llm_factory(...)
# embeddings = embedding_factory(...)
def run_evaluation():
# 1. 加载数据集
dataset = load_test_dataset()
# 2. 初始化评估指标
metrics = [
faithfulness, # 忠实性
answer_relevancy, # 答案相关性
context_precision, # 上下文精确度
# context_recall, # 上下文召回率,需要 ground_truth
]
# 3. 运行评估
# 注意:这里需要传入你的 RAG 系统的查询函数
# 以及配置好的 llm 和 embeddings
result = evaluate(
dataset=dataset,
metrics=metrics,
# llm=llm, # 如果使用自定义 LLM
# embeddings=embeddings, # 如果使用自定义 Embeddings
)
# 4. 保存和展示结果
df_result = result.to_pandas()
df_result.to_csv("evals/experiments/latest_results.csv", index=False) #
print(df_result)
📊 第五步:如何解读评估结果
评估完成后,你会得到一组分数。以下是这些分数的含义:
faithfulness(忠实性):衡量答案是否基于提供的上下文,得分越高,幻觉越少。answer_relevancy(答案相关性):衡量答案与问题的相关程度,得分越高,回答越切题。context_precision(上下文精确度):衡量检索到的上下文中,有多少是真正相关的。context_recall(上下文召回率):衡量检索到的上下文是否覆盖了回答问题所需的全部信息。
🚀 运行与迭代优化
要运行评估,只需在终端执行:
python evals.py
通过观察这些指标的变化,你可以系统地改进你的 RAG 系统:
faithfulness低:说明答案存在幻觉,应优化 Prompt 或加强检索。answer_relevancy低:说明答案不相关,需优化 Prompt 或改进生成逻辑。context_precision/recall低:说明检索环节有问题,需优化检索器或分块策略。
通过这种方式,你就可以用数据驱动的方式,持续迭代和优化你的 RAG 机器人了。
本作品采用《CC 协议》,转载必须注明作者和本文链接
关于 LearnKu