Skip to content

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 个核心指标:

检索层指标

  1. Context Precision:检索到的文档中有多少比例与参考答案相关
  2. Context Recall:参考答案所需的信息有多少在检索结果中
  3. Context Relevance(可选):检索内容是否冗余

生成层指标

  1. Faithfulness:生成回答中的每个主张(claim)是否都能在检索内容中找到依据
  2. Answer Relevance:生成回答与用户问题的语义相关性
  3. Answer Correctness(可选):与参考答案的事实一致性(需要参考答案)

评估方式:所有指标用 LLM 自动计算(默认用 GPT-3.5/GPT-4),不需要人工标注。

参考资料


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

代码示例

python
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.0

4.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.0

4.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.7

4.5 RAGAS 评估流程

完整评估

python
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 测试

python
# 两个 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}")

生产监控

python
# 从生产日志采样
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 面试怎么考

  1. RAGAS 测什么? 答:测 RAG 三维度:检索(搜对了吗、搜全了吗)、生成忠实度(有没有编造)、回答相关性(是否切题)。6 个核心指标自动化评估。
  2. Faithfulness 怎么算的? 答:把回答拆成 atomic claims → 每个 claim 用 LLM 判断是否在检索内容中有依据 → Faithfulness = 有依据的 claims / 总 claims。
  3. Context Precision 和 Context Recall 的区别? 答:Precision = 检索结果有多少是相关的(搜对了吗),Recall = 参考答案需要的信息有多少被检索到(搜全了吗)。Precision 测噪声,Recall 测遗漏。
  4. RAGAS 的局限? 答:LLM 判断不是 100% 准(~85%)、中文效果不如英文、Answer Correctness + Context Recall 需要参考答案、不评估延迟/成本、多模态支持有限。
  5. 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 测质量,可观测性测链路和延迟,从「能跑」到「可控」。

内容采用 CC BY-SA 4.0,代码采用 MIT。