先拆开两层
RAG 回答错误,可能是知识库里没有正确答案(数据问题),可能是检索没召回(检索问题),也可能是模型没用好召回内容(生成问题)。
评测必须分别看:检索层评测回答「有没有找到」,生成层评测回答「用得好不好」。
检索层指标
用真实问题集标注标准答案所在文档,再统计 Top-K 召回率:问题对应内容出现在前几个结果里的比例。召回率低,先优化切分、元数据和检索方式。
只看「回答准确率」无法告诉你该改哪里。
- Top-1/Top-5 命中率:标准答案是否被召回
- 排序质量:正确答案是否排在无关内容前面
- 覆盖率:知识库能否覆盖 90% 以上真实问题
生成层指标
生成层检查:是否忠于召回内容、是否完整回答、是否补充了合理推断、格式是否正确。重点标记「模型自己编造但资料里没有」的幻觉样本。
幻觉样本要单独归因:是资料冲突、切分缺失,还是提示词没有约束。
让评测持续跑
评测集随真实使用增长,每次知识库更新、模型升级、提示词修改都重跑。分数下降立即回滚。
RAG 的信任,是评测集一点一点建立起来的。
评测分数怎么解读
召回率低,先查知识库覆盖和切分;召回率合格但忠实度低,重点看提示词约束;忠实度合格但不完整,检查多轮对话是否丢了上下文。
把分数变化和改动对应起来记录,团队才能从「分数掉了」直接跳到「改了什么导致的」。
线上监控与离线评测
离线评测回答「这版比上版好吗」,线上监控回答「真实用户在用什么」。两者缺一不可:离线分数高但线上没人用,说明产品定位有问题;线上活跃但离线分数低,说明质量问题迟早爆发。
建议每周同时看两组数字,并建立一个简单规则:任何一次模型或知识库变更,都必须先过离线评测,再灰度上线。
把离线与线上连成闭环,RAG 才能从「能跑」进化到「可信」。
评测集的分层
评测集可以分三层:核心层是 30-50 条高频问题,每次变更必跑;扩展层是 100-200 条长尾问题,每周跑一次;探索层是从线上新增的样本,每月评审后决定是否升级到扩展层。
分层的好处是成本可控:核心层保证底线,扩展层保证覆盖,探索层保证成长。
评测集的规模不是越大越好,而是每层都有明确用途。