RAG 系统评测:从检索质量到生成质量
检索增强生成(RAG)把”检索”与”生成”两段拼成一条链路,这也让它的评测天然分成两半:检索模块决定了答案的上限,生成模块决定了把证据说清楚的下限。只盯着最终答案打分,往往看不出问题出在哪一环。本文按”离线还是在线""检索还是生成”两条轴,梳理 RAG 的核心评测维度、常用指标与工具,并给出标注与自动评测结合的务实做法。
离线评测与在线评测
评测按数据来源与触发时机可分为两类:
- 离线评测:在固定测试集上反复跑流水线,得到可复现的指标。适合版本对比、回归测试与上线前的质量门禁。优点是快、可归因;缺点是与真实分布有差距。
- 在线评测:在生产流量中对真实用户问题采集结果,结合点击、点赞、采纳率或用户反馈打分。优点是贴近真实分布;缺点是噪声大、归因难、成本随流量走。
实践中通常是离线做粗筛与回归,在线做最终验收,两者互为补充而非替代。
检索质量指标
检索关注的是”该召回的块有没有被召回、排得够不够靠前”。设查询的相关文档集合为 R,返回的前 K 个结果为 S:
Recall@K = |R ∩ S| / |R|
MRR = 1 / rank(rank 为第一个相关结果出现的位置,对所有查询取平均)
- Recall@K(召回率):衡量前 K 个结果是否覆盖了全部相关块,反映”有没有漏”。
- MRR(平均倒数排名):只关心第一个相关结果排第几,适合”用户通常只看最相关一条”的场景。
- NDCG@K(归一化折损累计增益):对结果排序位置做对数折损加权,相关系数高的应排在前面,适合分级相关性(而非仅相关/不相关)。
NDCG@K = DCG@K / IDCG@K
DCG@K = Σ_{i=1}^{K} (2^{rel_i} - 1) / log2(i + 1)
其中 rel_i 为第 i 个结果的相关系数,IDCG 为理想排序下的 DCG。
这些指标需要”相关文档真值”,通常由人工标注或基于已有问答对反查得到。
生成质量指标
生成关注的是”答案是否忠于证据、是否切题”。这一类指标大多由 LLM-as-Judge 或专门的评分模型估计:
- Faithfulness(忠实度):答案是否完全由检索到的上下文支撑,越低说明幻觉越多。这是 RAG 相对纯生成最核心的增益点。
- Answer Relevancy(答案相关性):答案是否回应了用户问题,而非答非所问或过度啰嗦。
- Context Precision / Recall(上下文精度/召回):从生成视角回头看检索——相关块是否排在前、是否都被召回。这两项和上面的检索指标互为镜像。
经验上,若忠实度与答案相关性低,问题多在提示组装或模型本身;若上下文精度/召回低,则应回头调切分、Embedding 或重排。
评测工具:Ragas、DeepEval、TruLens
- Ragas:一套”无需人工真值”的参考无关(reference-free)自动评测框架,由 Shahul Es 等人于 2023 年提出(arXiv:2309.15217,已核验)。它内置忠实度、答案相关性、上下文精度、上下文召回等指标,适合做回归测试与版本对比。
- DeepEval:开源(Apache 2.0,已核验)的 LLM 评测框架,类 Pytest 地对 RAG 流水线做单元测试,底层结合 LLM-as-Judge 与本地 NLP 模型,可端到端黑盒评测,并原生集成 LlamaIndex 等框架。其 RAG 指标与 Ragas 高度对齐。
- TruLens:面向 RAG 与智能体的可观测与反馈评估工具,通过”反馈函数”(feedback functions)对检索、上下文与生成分别打分,并保留每次调用的追踪记录便于归因(维护方与版本细节待核实,建议以官方仓库为准)。
三者的共同思路是:把”检索质量”和”生成质量”拆成可独立计算的指标,并用模型裁判替代昂贵的人工打分。
标注与自动评测结合
纯自动评测便宜、可规模化,但有两类硬伤:裁判模型自身存在位置偏差、冗长偏差等;对事实准确性与来源合理性的判断未必可靠。因此建议:
- 用自动指标做日常回归与版本对比,建立基线后只看相对变化。
- 对核心场景、高风险领域维护少量高质量人工标注集,定期校准自动指标,确认其分数与人的判断一致。
- 把检索结果、最终提示与答案一并落库,问题出现时先人肉核查检索段,再判生成段。
标注不必求大,几十到上百条覆盖典型失败模式的样本,往往比上万条噪声标注更有诊断价值。
小结
RAG 评测要同时看”检索”与”生成”两段:检索侧用 Recall@K、MRR、NDCG 衡量是否召回且排得靠前;生成侧用忠实度、答案相关性与上下文精度/召回衡量是否忠于证据且切题。离线评测做回归与对比,在线评测做真实验收,二者互补。Ragas、DeepEval、TruLens 等工具的共同思路是把这些维度拆成可自动计算的指标,但自动分数不能替代人工校准——以小批量高质量标注定期校验,才能让评测既便宜又可信。
参考与延伸阅读
- Ragas 论文(arXiv:2309.15217,已核验):https://arxiv.org/abs/2309.15217
- Ragas 官方文档:https://docs.ragas.io/
- DeepEval 官方仓库(已核验,Apache 2.0):https://github.com/confident-ai/deepeval
- TruLens 官方仓库(版本与维护方待核实):https://github.com/truera/trulens
- LangChain 评估文档:https://python.langchain.com/docs/guides/evaluation/
- LlamaIndex 评测文档:https://docs.llamaindex.ai/en/stable/optimizing/production_rag/