AI RAG 约 12 分钟

深度RAG笔记11:RAGAS实战指南,20分钟给你的RAG系统做个准确体检[深度RAG笔记11]

**翊行代码:深度RAG笔记第11篇**:用RAGAS框架快速评估RAG系统性能,从安装到出报告,一篇文章搞定

RAG 检索增强生成 深度学习 AI
深度RAG笔记11:RAGAS实战指南,20分钟给你的RAG系统做个准确体检[深度RAG笔记11]

深度RAG笔记11:RAGAS实战指南,20分钟给你的RAG系统做个准确体检[深度RAG笔记11]

翊行代码:深度RAG笔记第11篇:用RAGAS框架快速评估RAG系统性能,从安装到出报告,一篇文章搞定

说实话,做RAG系统最让人头疼的问题是什么?就是不知道系统到底好不好用。

传统的BLEU、ROUGE那套指标用在RAG上根本不够,你想想,用户问一个技术问题,RAG给的答案语法完美但事实全错,这种情况传统指标是发现不了的。

今天我们就用RAGAS这个专门为RAG系统设计的评估框架,手把手教你给自己的RAG系统做个准确的体检。

为什么选择RAGAS?

做过RAG系统的都知道,评估这事儿有几个难点:

检索质量怎么评? 找到的文档是否真的相关?有没有遗漏重要信息?

生成质量怎么衡量? 答案是否忠实于检索到的内容?有没有胡编乱造?

端到端效果如何? 整个系统给用户的体验到底怎么样?

RAGAS的优势就在这里:

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

数据准备要点

  1. question: 用户的问题
  2. answer: RAG系统生成的答案
  3. contexts: 检索到的上下文列表
  4. ground_truth: 标准答案(可选,但有的话评估更准确)

结果解读:如何看懂评估报告

运行完评估,你会看到类似这样的结果:

faithfulness: 0.856
answer_relevancy: 0.742
context_relevancy: 0.689
context_precision: 0.542

怎么判断系统好坏?

优秀系统(可以放心用):

需要优化(能用但要改进):

系统有问题(必须修复):

针对不同分数的优化建议

按优先级排查问题:

  1. faithfulness < 0.8? → 优化prompt,减少模型幻觉
  2. answer_relevancy < 0.7? → 改进生成策略,优化问答匹配
  3. context_relevancy < 0.6? → 优化检索算法,改进embedding模型
  4. context_precision < 0.5? → 实施重排序,优化相关性排序

如果以上指标都达标 → 系统表现良好,可以上线

常见问题和解决方案

Q1: 我的faithfulness分数很低怎么办?

原因分析: 模型经常胡编乱造,生成的内容在检索文档中找不到。

解决方案:

# 在prompt中加强约束
prompt = """
请仅基于以下上下文信息回答问题,不要添加上下文中没有的信息:
上下文:{context}
问题:{question}
答案:
"""

Q2: context_relevancy分数低说明什么?

原因分析: 检索质量差,找到的文档跟问题不相关。

解决方案:

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系统评估变得简单又准确:

关键步骤回顾:

实用建议:

用好RAGAS,你的RAG系统质量就有了科学的保障。

下期预告:我们会讲RAG系统的隐私保护问题,这个在企业环境里非常关键。


本文是深度RAG笔记系列第11篇,主讲RAGAS实战应用。关注翊行代码,获取更多RAG实战经验!完整代码已经上传至 Github,可通过阅读原文获取。

文档信息

京ICP备2021015985号-1