尽管检索增强生成(RAG)模型在很多场景下表现不错,但回答不准依然是个头疼的问题。怎么诊断到底是检索没找对文档,还是生成模型在编造?亚马逊最近开源了一个工具 RAGChecker,专门用来把 RAG 系统的表现拆开来检查,帮 CTO 和开发者快速定位问题。
目前市面上已经有不少 RAG 评估框架,比如 TruLens、RAGAS、ARES 等,它们大多围绕'答案相关性''忠实度'这类端到端指标。但要么依赖人工评估,成本高又难扩展,要么只在简单短答案上靠谱,碰上需要生成长回答的复杂场景就抓瞎了。下面这张表总结了一些代表性工作:
| 评估方向 | 框架 | 描述 |
|---|---|---|
| 生成器基本能力 | RGB | 手动构造测试集,评估噪声鲁棒性、负拒绝、信息整合等 |
| 生成器基本能力 | RECALL | 引入反事实上下文,测试 LLMs 的反事实鲁棒性 |
| 生成器基本能力 | NoMIRACL | 用人工标注判断 LLM 对检索错误的鲁棒性 |
| 生成器基本能力 | 2024.10198 | 量化 LLMs 的忠实度与内部先验的平衡 |
| 生成器基本能力 | FAAF | 细粒度事实验证,评估真实性 |
| 端到端评估 | TruLens | 提出 RAG 三元组(上下文相关性、基础性、答案相关性) |
| 端到端评估 | RAGAS / ARES | 沿用三元组概念,在不同数据集上优化分数预测 |
| 端到端评估 | CRUD-RAG | 针对 CRUD 操作设计的特定数据集和评估标准 |
| 其他端到端 | EMNLP 2023 | 人类评估流畅性、感知效用、可验证性 |
| 其他端到端 | MEDRAG | 医学 RAG 基准,用 QA 准确性评估 |
| 其他端到端 | MultiHop-RAG | 多跳查询,评估 QA 准确性 |
| 其他端到端 | CDQA | 动态生成问题,要求最新信息 |

RAGChecker 的做法不太一样:它在声明(Claim)级别做细粒度比对。具体来说,先把模型回答和标准答案拆成一条条原子化的声明,再逐条检查这些声明是否被检索到的上下文支持。这样就能算出检索器和生成器各自的毛病。

它输出一套诊断指标:
- 整体看:精度(回答里正确的声明比例)、召回率(标准答案里被正确覆盖的声明比例)、F1。
- 针对检索器:声明召回率(标准答案中的声明在检索块里出现的比例)和上下文精度(检索块里含有标准答案声明的比例)。
- 针生成器:忠实度(生成声明与上下文一致的比例)、(在相关块里生成错误声明的比例)、(在无关块里犯错的比例)、(完全不在任何检索块里的声明)、(靠模型自己知识答对的比例)、(生成器实际用到的标准答案声明占检索块中所有相关声明的比例)。



