RAG 端到端评测是什么
只评检索不够,还要评生成:忠实度看答案里的每个论断能不能从检索到的上下文推出,这是抗幻觉的核心指标;答案相关性看回答是否切题;上下文精确率与上下文召回率分别反映检索内容里相关的比例、以及应有信息是否都检索到了。RAGAS 一类框架用模型当裁判,把主观质量变成可回归的数字。代价是评测本身消耗 token,且裁判分数存在波动,需要固定裁判模型与版本、重要结论人工复核。
基本信息
| faithfulness | 答案中的论断能否从检索上下文推出,抗幻觉核心指标 |
|---|---|
| answer relevancy | 答案是否切题 |
| context precision | 检索内容中相关内容的比例 |
| context recall | 应有信息是否都被检索到 |
| 前提条件 | 需要裁判模型与标注集,评测本身也花 token |
| 稳定做法 | 固定裁判模型与版本,跑两次看一致性 |
典型使用场景
- 上线前验收:关键问题的忠实度必须达标
- 回归监控:每周跑一次,观察质量是否随时间漂移
- 根因定位:区分问题出在检索缺失还是生成编造
- 提示词与重排对比:同一题集下比较不同方案的端到端得分
- 供应商选择:比较不同模型在同一 RAG 流程里的表现
端到端评估示意
端到端评估示意
from datasets import Dataset
from ragas import evaluate
from ragas.metrics import faithfulness, answer_relevancy
# 每条样本包含问题、模型答案、检索到的上下文与参考答案
ds = Dataset.from_dict({
"question": ["如何计算缓存折扣?"],
"answer": ["缓存命中的输入 token 按更低折扣价计费"],
"contexts": [["缓存命中按更低单价计费,未命中按标准价"]],
"ground_truth": ["命中缓存的输入按折扣价计费。"],
})
result = evaluate(ds, metrics=[faithfulness, answer_relevancy])
print(result)
# 结论要与人工作抽样对照,不能只看总分四个指标读法
| 指标 | 在测什么 | 变差时先查 |
|---|---|---|
| faithfulness | 答案是否都有上下文依据 | 检索片段是否缺失关键支撑 |
| answer relevancy | 答案是否切题 | 提示词是否让模型跑偏或过度发挥 |
| context precision | 检索内容里相关的比例 | 重排与切分粒度 |
| context recall | 应有信息是否都被检索到 | 召回数量与分块完整性 |
裁判模型本身有波动:固定裁判模型与版本,跑两次看一致性,重要结论人工复核;裁判与生成用同一个模型时,往往评不出自家毛病。
指标要连成本一起看:为了把忠实度提高几个百分点而把召回片段加倍,可能让每次问答的输入成本翻倍,收益与代价要放在一起判断。