深度RAG笔记11:RAGAS实战指南,20分钟给你的RAG系统做个准确体检[深度RAG笔记11]
翊行代码:深度RAG笔记第11篇:用RAGAS框架快速评估RAG系统性能,从安装到出报告,一篇文章搞定
说实话,做RAG系统最让人头疼的问题是什么?就是不知道系统到底好不好用。
传统的BLEU、ROUGE那套指标用在RAG上根本不够,你想想,用户问一个技术问题,RAG给的答案语法完美但事实全错,这种情况传统指标是发现不了的。
今天我们就用RAGAS这个专门为RAG系统设计的评估框架,手把手教你给自己的RAG系统做个准确的体检。
为什么选择RAGAS?
做过RAG系统的都知道,评估这事儿有几个难点:
检索质量怎么评? 找到的文档是否真的相关?有没有遗漏重要信息?
生成质量怎么衡量? 答案是否忠实于检索到的内容?有没有胡编乱造?
端到端效果如何? 整个系统给用户的体验到底怎么样?
RAGAS的优势就在这里:
- 专门为RAG设计 - 不是改造的通用指标,而是原生的RAG评估框架
- 无需人工标注 - 利用LLM自动评估,省时省力
- 多维度覆盖 - 从检索到生成,每个环节都有对应指标
- 结果可解释 - 不只给分数,还告诉你哪里有问题
RAGAS快速安装配置
安装很简单,三个命令搞定
# 1. 安装RAGAS
pip install ragas
# 2. 安装依赖(如果用OpenAI)
pip install openai
# 3. 设置API密钥
export OPENAI_API_KEY="your-api-key"
基础导入
from ragas import evaluate
from ragas.metrics import (
faithfulness, # 忠实度
answer_relevancy, # 答案相关性
context_relevancy, # 上下文相关性
context_precision, # 上下文精确度
)
from datasets import Dataset
就这么简单,环境就准备好了。
4个核心指标,知道就够用
RAGAS有很多指标,但日常使用这4个就够了:
1. 忠实度(Faithfulness)- 最关键
问题: 生成的答案是否忠实于检索到的上下文?
通俗理解: 就是看RAG有没有胡编乱造,答案里的信息是否都能在检索到的文档里找到。
评分: 0-1之间,越高越好,一般要求>0.8
2. 答案相关性(Answer Relevancy)
问题: 生成的答案是否真正回答了用户的问题?
通俗理解: 答案跟问题对不对得上,有没有答非所问。
评分: 0-1之间,越高越好,一般要求>0.7
3. 上下文相关性(Context Relevancy)
问题: 检索到的上下文是否与问题相关?
通俗理解: 检索这一步做得怎么样,找到的文档是否真的有用。
评分: 0-1之间,越高越好,一般要求>0.6
4. 上下文精确度(Context Precision)
问题: 相关的上下文是否排在前面?
通俗理解: 检索结果的排序质量,好的内容有没有排在前面。
评分: 0-1之间,越高越好,一般要求>0.5
动手实践:评估你的第一个RAG系统
核心代码只需要几行:
from ragas import evaluate
from ragas.metrics import faithfulness, answer_relevancy, context_relevancy, context_precision
from datasets import Dataset
# 准备测试数据 - 这是你需要准备的格式
test_data = [
{
'question': 'Python中如何创建虚拟环境?',
'answer': '在Python中创建虚拟环境可以使用venv模块...',
'contexts': ['Python虚拟环境可以使用venv模块创建...'],
'ground_truth': 'Python创建虚拟环境使用python -m venv命令...'
}
]
# 转换数据格式并执行评估
dataset = Dataset.from_dict({
'question': [item['question'] for item in test_data],
'answer': [item['answer'] for item in test_data],
'contexts': [item['contexts'] for item in test_data],
'ground_truth': [item['ground_truth'] for item in test_data]
})
# 执行RAGAS评估
result = evaluate(
dataset=dataset,
metrics=[faithfulness, answer_relevancy, context_relevancy, context_precision]
)
# 查看结果
for metric, score in result.items():
print(f"{metric}: {score:.3f}")
完整代码和高级功能:更完整的评估器代码、结果解读、优化建议等功能,请查看
code/ch11/ragas_evaluator.py和演示文件demo.py
数据准备要点
- question: 用户的问题
- answer: RAG系统生成的答案
- contexts: 检索到的上下文列表
- ground_truth: 标准答案(可选,但有的话评估更准确)
结果解读:如何看懂评估报告
运行完评估,你会看到类似这样的结果:
faithfulness: 0.856
answer_relevancy: 0.742
context_relevancy: 0.689
context_precision: 0.542
怎么判断系统好坏?
优秀系统(可以放心用):
- faithfulness > 0.8
- answer_relevancy > 0.7
- context_relevancy > 0.6
- context_precision > 0.5
需要优化(能用但要改进):
- 任何指标 < 上述阈值
系统有问题(必须修复):
- faithfulness < 0.6
- answer_relevancy < 0.5
针对不同分数的优化建议
按优先级排查问题:
- faithfulness < 0.8? → 优化prompt,减少模型幻觉
- answer_relevancy < 0.7? → 改进生成策略,优化问答匹配
- context_relevancy < 0.6? → 优化检索算法,改进embedding模型
- context_precision < 0.5? → 实施重排序,优化相关性排序
如果以上指标都达标 → 系统表现良好,可以上线
常见问题和解决方案
Q1: 我的faithfulness分数很低怎么办?
原因分析: 模型经常胡编乱造,生成的内容在检索文档中找不到。
解决方案:
# 在prompt中加强约束
prompt = """
请仅基于以下上下文信息回答问题,不要添加上下文中没有的信息:
上下文:{context}
问题:{question}
答案:
"""
Q2: context_relevancy分数低说明什么?
原因分析: 检索质量差,找到的文档跟问题不相关。
解决方案:
- 重新训练或选择更好的embedding模型
- 优化chunk分割策略
- 增加查询预处理和扩展
Q3: 评估过程很慢怎么办?
原因分析: RAGAS需要调用LLM进行评估,API调用较多。
解决方案: 先用小批量验证,确认没问题再大规模评估
Q4: 没有ground_truth怎么办?
好消息: RAGAS的大部分指标都不需要标准答案,只有answer_correctness需要。
详细解决方案:更多常见问题和解决方案,请查看
code/ch11/demo.py中的错误处理演示
进阶使用技巧
1. 快速单次评估
# 使用我们封装的便捷函数
from ragas_evaluator import quick_evaluate
result = quick_evaluate(
question="什么是机器学习?",
answer="机器学习是人工智能的一个分支...",
contexts=["机器学习是AI的重要分支..."]
)
print(f"评分: {result['overall_score']:.3f}")
2. 版本对比评估
from ragas_evaluator import RAGASEvaluator
evaluator = RAGASEvaluator()
comparison = evaluator.compare_versions(
version_a_data, version_b_data,
names=("旧版本", "新版本")
)
print("改进项:", comparison['improvements'])
更多进阶功能:自动化评估流程、自定义阈值、结果可视化等,详见
code/ch11/demo.py完整示例
总结
RAGAS让RAG系统评估变得简单又准确:
关键步骤回顾:
- 5分钟安装配置环境
- 准备测试数据(问题+答案+上下文)
- 运行evaluate函数
- 根据4个核心指标判断系统质量
实用建议:
- 开发阶段就要建立评估基线,不要等上线了才测
- 重点关注faithfulness,这是最核心的指标
- 定期用真实用户问题进行评估
- 有问题立马改,评估-优化-再评估形成闭环
用好RAGAS,你的RAG系统质量就有了科学的保障。
下期预告:我们会讲RAG系统的隐私保护问题,这个在企业环境里非常关键。
本文是深度RAG笔记系列第11篇,主讲RAGAS实战应用。关注翊行代码,获取更多RAG实战经验!完整代码已经上传至 Github,可通过阅读原文获取。
文档信息
- 本文作者:王翊仰
- 本文链接:https://www.wangyiyang.cc/2025/08/03/rag-deep-dive-11/
- 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)
![深度RAG笔记11:RAGAS实战指南,20分钟给你的RAG系统做个准确体检[深度RAG笔记11]](https://www.wangyiyang.cc/images/posts/post_rag-11-evaluation-system-ragas_001.jpg)