RAGAS RAG 评估框架
五层读懂一个词。这次拆的是:RAGAS--RAG 系统评估的事实标准。把 RAG 评估拆成三维:检索质量(Context Precision/Recall——搜对了吗)、生成忠实度(Faithfulness——回答有编造吗)、回答相关性(Answer Relevance——回答切题吗)。每维用 LLM 自动打分,不需要人工标注。是 RAG 管道优化的「导航系统」。
L1 · 一句话点破
RAGAS = RAG 质量自动化评估框架。用 LLM 自动评分替代人工评估 RAG 系统的三个核心维度:检索(搜到的内容对不对、全不全)、忠实度(回答是不是基于检索内容编造的)、相关性(回答和问题相关吗)。6 个核心指标,从端到端评估 RAG 管道的每个环节健康状况。不是替代人工,是让人工只审可疑的 case。
L2 · 通俗类比
评估 RAG 系统像检查一份研究报告:
1. 资料检索质量(Context Metrics):
问题: "GPT-4 什么时候发布的?"
检索结果: [OpenAI 博客文章, GPT-4 技术报告, 一篇关于 GPT-3 的文章]
检查:
- Precision: 两篇相关(前两个),一篇无关(第三个)→ 2/3 相关
- Recall: 应该还要有 "OpenAI 发布会新闻",但没搜到 → 不完整2. 回答忠实度(Faithfulness):
回答: "GPT-4 于 2023 年 3 月 14 日发布,推理能力比 GPT-3.5 提升了 40%"
检查: 回答的每一句话在检索资料里能找到依据吗?
- "2023年3月14日发布" → ✅ 技术报告第 1 页有
- "推理能力提升 40%" → ❌ 检索资料里没有,模型编造的!
→ Faithfulness = 50%(两句对了一句)3. 回答相关性(Answer Relevance):
问题: "GPT-4 什么时候发布的?"
回答: "GPT-4 是 OpenAI 的大语言模型,于 2023 年发布..."
检查: 回答是否切题、有帮助?
- 直接回答了发布日期 → ✅ 相关
- 如果是: "OpenAI 是一家成立于 2015 年的公司..." → ❌ 不相关RAGAS 的 6 个核心指标:
| 指标 | 衡量什么 | 类似检查 |
|---|---|---|
| Context Precision | 检索结果中有多少是相关的 | 搜对了吗 |
| Context Recall | 参考答案需要的信息都在检索结果里吗 | 搜全了吗 |
| Faithfulness | 回答有没有编造 | 说谎了吗 |
| Answer Relevance | 回答切题吗 | 答对了吗 |
| Context Relevance | 检索结果精简吗(不冗余) | 搜多了吗 |
| Answer Correctness | 回答事实正确吗 | 答对了吗 |
为什么需要自动化:
- 500 个 QA pair,人工一个一个看 → 2 天
- RAGAS 自动评估 → 5 分钟 + $2 API 费
- 人工只复核 RAGAS 标记的「可疑」case → 30 分钟
代价:
- 依赖 LLM-as-Judge(同样有偏置和误差)
- 需要参考答案(Answer Correctness / Context Recall)
- 指标之间可能矛盾(高 Precision 但低 Recall)
适用:
- RAG 管道的迭代优化(每次调整看指标变化)
- RAG 部署前的质量把关
- 不同 RAG 策略(分块大小、检索方式、重排序)的 A/B 测试
- 生产 RAG 的持续监控
L3 · 正经定义
RAGAS(Retrieval Augmented Generation Assessment):由 Shahul et al. 2023 提出的 RAG 系统自动化评估框架。用 LLM 自动计算 6 个核心指标:
检索层指标:
- Context Precision:检索到的文档中有多少比例与参考答案相关
- Context Recall:参考答案所需的信息有多少在检索结果中
- Context Relevance(可选):检索内容是否冗余
生成层指标:
- Faithfulness:生成回答中的每个主张(claim)是否都能在检索内容中找到依据
- Answer Relevance:生成回答与用户问题的语义相关性
- Answer Correctness(可选):与参考答案的事实一致性(需要参考答案)
评估方式:所有指标用 LLM 自动计算(默认用 GPT-3.5/GPT-4),不需要人工标注。
参考资料:
- 📄 Shahul et al., RAGAS: Automated Evaluation of Retrieval Augmented Generation, 2023
- 🔧 GitHub:https://github.com/explodinggradients/ragas
- 📝 RAGAS 文档:https://docs.ragas.io/
- 📝 RAGAS 论文:https://arxiv.org/abs/2309.15217
L4 · 原理深挖
4.1 Faithfulness 的详细计算
核心思想:如果回答完全基于检索内容(没有编造),就是 faithful。
计算流程:
Step 1: 把回答拆成一系列 "claims"(原子主张)
回答: "GPT-4 于 2023 年 3 月发布,推理能力提升 40%"
LLM 拆解:
Claim 1: GPT-4 于 2023 年 3 月发布
Claim 2: GPT-4 推理能力提升 40%
Step 2: 对每个 claim,检查检索内容里有没有依据
对 Claim 1:
LLM prompt: "以下检索内容是否支持 'GPT-4 于 2023 年 3 月发布'?"
LLM 回答: Yes → ✓
对 Claim 2:
LLM prompt: "以下检索内容是否支持 'GPT-4 推理能力提升 40%'?"
LLM 回答: No → ✗
Step 3: 计算比例
Faithfulness = 1/2 = 0.5代码示例:
from ragas import evaluate
from ragas.metrics import faithfulness
from datasets import Dataset
data = Dataset.from_dict({
"question": ["GPT-4 什么时候发布的?"],
"answer": ["GPT-4 于 2023 年 3 月 14 日发布"],
"contexts": [["GPT-4 was released on March 14, 2023 by OpenAI"]],
})
result = evaluate(data, metrics=[faithfulness])
print(result["faithfulness"]) # 1.04.2 Context Precision 的计算
核心思想:检索结果按相关性排序时,相关的文档是否排在前面。
检索结果(按得分排序):
Doc 1: "GPT-4 技术报告" → 相关
Doc 2: "GPT-3 论文" → 不相关
Doc 3: "OpenAI 博客" → 相关
Doc 4: "AI 的历史" → 不相关
Precision@1 = 1/1 = 1.0
Precision@2 = 1/2 = 0.5
Precision@3 = 2/3 = 0.67
Precision@4 = 2/4 = 0.50
Context Precision = 加权平均 (相关doc的precision)
= (1.0 + 0.67) / 2 = 0.835如果 Doc 2 和 Doc 1 交换(相关文档靠前),Context Precision 更高。
4.3 Context Recall 的计算
核心思想:参考答案中的重要信息,有多少能在检索结果中找到。
参考答案: "GPT-4 于 2023 年 3 月 14 日发布,支持多模态输入"
LLM 拆解关键信息:
1. "2023 年 3 月 14 日"
2. "支持多模态输入"
检索结果中:
1. ✓ 提到了 "March 14, 2023"
2. ✓ 提到了 "multimodal capabilities"
Context Recall = 2/2 = 1.04.4 Answer Relevance 的计算
核心思想:生成内容的每个句子,和用户问题语义相关吗。
问题: "GPT-4 什么时候发布的?"
回答: "GPT-4 是 OpenAI 的大语言模型,于 2023 年 3 月发布"
LLM 从回答反向生成问题:
"GPT 系列最新模型是什么?" → 语义距离: 0.5
"GPT-4 的发布时间?" → 语义距离: 0.9
Answer Relevance = mean(0.5, 0.9) = 0.74.5 RAGAS 评估流程
完整评估:
from ragas import evaluate
from ragas.metrics import (
faithfulness, answer_relevancy,
context_precision, context_recall,
context_relevancy, answer_correctness
)
from datasets import Dataset
# 准备数据
eval_dataset = Dataset.from_dict({
"question": ["Q1", "Q2", ...],
"answer": ["A1", "A2", ...],
"contexts": [["C1_1", "C1_2"], ["C2_1"], ...],
"ground_truth": ["GT1", "GT2", ...], # 可选
})
# 评估
result = evaluate(
eval_dataset,
metrics=[
faithfulness,
answer_relevancy,
context_precision,
context_recall,
context_relevancy,
answer_correctness,
],
)
# 结果: {metric_name: [score_per_row]}
print(result)
# {'faithfulness': [1.0, 0.75, ...], 'context_precision': [0.8, 0.6, ...]}4.6 指标的解释
| 分数范围 | 含义 |
|---|---|
| 0.9-1.0 | 优秀 |
| 0.7-0.9 | 良好 |
| 0.5-0.7 | 需改进 |
| < 0.5 | 差 |
典型问题诊断:
| 指标组合 | 诊断 |
|---|---|
| High Faithfulness, Low Context Precision | 检索噪声多但模型擅长挑相关信息 |
| Low Faithfulness, High Context Precision | 检索准但模型爱编造 |
| Low Context Recall | 检索没找全信息,增加 top_k 或改检索策略 |
| Low Answer Relevance | 回答跑题了,检查 system prompt |
4.7 RAGAS 的进阶用法
A/B 测试:
# 两个 RAG 策略
strategy_a = {"chunk_size": 256, "top_k": 5}
strategy_b = {"chunk_size": 1024, "top_k": 3}
# 评估
result_a = evaluate(dataset_a, metrics)
result_b = evaluate(dataset_b, metrics)
print(f"Faithfulness: A={result_a['faithfulness']:.2f} vs B={result_b['faithfulness']:.2f}")生产监控:
# 从生产日志采样
production_samples = get_production_logs(n=100)
# 周期评估
eval_result = evaluate(production_samples, metrics)
# 指标告警
if eval_result["faithfulness"] < 0.7:
alert("Faithfulness degradation!")与 Langfuse/LangSmith 集成:
- 真实验证 RAG 追踪链路
- 在 dashboard 中查看指标趋势
- 自动标记低分 case 供人工复核
4.8 RAGAS 的局限
局限 1: 依赖 LLM 判断质量。Faithfulness 的准确率 ~85%,不是 100%。复杂 case 仍需人工。
局限 2: 对中文评估不够成熟。LLM 拆解 claims 和判断时,中文效果不如英文。
局限 3: Answer Correctness 需要参考答案。很多场景没有标准答案,只能用 Faithfulness + Relevance。
局限 4: 不评估延迟/成本。RAGAS 测质量不测性能。
局限 5: Context Recall 也需要参考答案。没有参考时无法评估检索完整性。
局限 6: 长文本场景。Claim 拆解对大段长文本(如法律文书)不够精准。
局限 7: 多模态 RAG。目前主要评估文本 RAG,多模态(图+文)支持有限。
局限 8: 批量评估的 LLM 调用成本。1000 条数据 × 6 指标 = 6000 次+ LLM 调用。
L5 · 沿革与坑
5.1 沿革
- 2023-09:RAGAS 论文初版(Shahul et al.)
- 2023-12:RAGAS v0.1.0 发布(核心 4 指标)
- 2024-03:Answer Correctness + Context Relevance 加入
- 2024 中:LangSmith/Langfuse 集成,生产监控能力
- 2024-2025:RAGAS 成为 RAG 评估的事实标准,被 LangChain/LlamaIndex 推荐
5.2 常见坑
坑 1: 只看 Faithfulness 不看所有指标。Faithfulness 高但 Context Recall 低 → 你只看了部分事实。要综合看。
坑 2: Answer Correctness 需要参考答案但不提供。没有 ground_truth 就别用它。用 Faithfulness + Relevance 足够。
坑 3: 单次评估做决策。RAGAS 有随机性(LLM 判断的波动)。至少跑 3 次取平均。
坑 4: 评估数据集代表性问题。用 10 条问题评估 → 不代表真实分布。要 > 100 条覆盖各类问题。
坑 5: 忽略 Claim 拆解的质量。LLM 拆 claims 可能偏粗或偏细,影响 Faithfulness。要抽样人工检查。
坑 6: Context Precision 和 Context Recall 不对齐。高 Precision 低 Recall → 搜得准但搜不全;反过来 → 搜得全但噪声多。要两者平衡。
坑 7: 评估时 contexts 顺序不对。Context Precision 对顺序敏感。要按实际检索顺序(score 排序)。
坑 8: 开箱即用不做自定义。RAGAS 默认 prompt 不是对所有领域最优。要定制 prompt(如医学/法律)。
坑 9: 和其他 RAG 评估框架混用。TruLens / DeepEval / LangChain Evaluation 各有指标。选一个为主。
坑 10: 生产监控设阈值太严。Faithfulness < 0.7 就告警比 < 0.5 更合理。太严导致 alert fatigue。
坑 11: 评估环境不隔离。A/B 测试时没有切换向量库/模型,测的是混合结果。要隔离环境。
坑 12: 只评估不改进。RAGAS 是诊断工具,发现问题后要调整 RAG 管道(改分块/检索/重排序/提示)。
5.3 面试怎么考
- RAGAS 测什么? 答:测 RAG 三维度:检索(搜对了吗、搜全了吗)、生成忠实度(有没有编造)、回答相关性(是否切题)。6 个核心指标自动化评估。
- Faithfulness 怎么算的? 答:把回答拆成 atomic claims → 每个 claim 用 LLM 判断是否在检索内容中有依据 → Faithfulness = 有依据的 claims / 总 claims。
- Context Precision 和 Context Recall 的区别? 答:Precision = 检索结果有多少是相关的(搜对了吗),Recall = 参考答案需要的信息有多少被检索到(搜全了吗)。Precision 测噪声,Recall 测遗漏。
- RAGAS 的局限? 答:LLM 判断不是 100% 准(~85%)、中文效果不如英文、Answer Correctness + Context Recall 需要参考答案、不评估延迟/成本、多模态支持有限。
- RAGAS 怎么用在生产中? 答:开发期做 A/B 测试(对比不同 RAG 策略),上线前做质量把关(达标才能上线),上线后做持续监控(周期采样+指标趋势+异常告警)。
速记卡
6 个核心指标:
| 指标 | 需要参考? | 测什么 |
|---|---|---|
| Context Precision | ❌ | 检索结果相关性排序 |
| Context Recall | ✅ | 检索覆盖了多少必要信息 |
| Context Relevance | ❌ | 检索内容是否冗余 |
| Faithfulness | ❌ | 回答有编造吗(基于检索内容) |
| Answer Relevance | ❌ | 回答切题吗 |
| Answer Correctness | ✅ | 回答事实正确吗(vs 参考答案) |
Faithfulness 计算:
回答拆 claims → 每个 claim 在 contexts 中有依据? → 比例典型诊断:
| 症状 | 诊断 |
|---|---|
| Low Faithfulness | 模型爱编造 → 强化 system prompt / 换模型 |
| Low Context Recall | 检索不全 → 增加 top_k / 改进检索策略 |
| Low Answer Relevance | 回答跑题 → 改进 prompt 模板 |
| Low Context Precision | 检索噪声多 → 加重排序 / 提高检索阈值 |
生产用法:
开发: A/B 测试不同 RAG 策略
上线: 质量把关(达标才能上线)
运维: 持续监控(周期采样 + 指标告警)一句话记忆:RAGAS = RAG 自动化评估框架。6 个指标覆盖检索(Precision/Recall/Relevance)和生成(Faithfulness/Answer Relevance/Correctness)两端。Faithfulness 把回答拆成 claims,LLM 逐条检查是否在检索内容中有依据——没有就是编造。是 RAG 管道优化的导航系统:开发期 A/B 测试、上线前质量把关、上线后持续监控。局限:LLM 判断 ~85% 准确、中文弱、部分指标需要参考答案、不测延迟/成本。
上一篇:MT-Bench & LLM-as-Judge -- LLM-as-Judge 用于评估 LLM,RAGAS 把类似思路用在 RAG 评估上。下一篇:可观测性与 LLM 追踪 -- RAGAS 测质量,可观测性测链路和延迟,从「能跑」到「可控」。