RAG 怎么做评估:先查证据,再查答案
RAG 的答案依赖两步:检索先找到证据,模型再根据上下文组织回答。漏检时,改提示词未必有用;证据齐全仍答错时,继续增加召回数量也可能只增加噪声和耗时。因此要分别检查检索、答案和拒答,相似度分数不能当作答案正确率。固定文档和配置后,用人工核对的问题与参考证据回放,才能比较改动的收益与代价。
1. 建立可复查的题集
从 知识库项目架构 的离线入库与在线问答两条链路出发,先用 30—50 题做本地基线;这是练习规模。覆盖单段事实、多段归纳、无答案、过期版本和不同权限。同一问题可以配置不同身份,检查权限变化。
每题记录问题、测试身份、文档版本、参考片段、答案要点和预期行为。参考证据由人核对,不让模型自行生成后直接充当标准答案。将近似问法放在同一组,再按组划分调试集与保留集,减少同题改写泄漏。参考证据同时标注文档版本和原文位置;切分方式变化后,chunk ID 可能变化,应按原文证据映射判定命中,不能直接比较两次运行的 ID。
2. 定义指标和分母
下面是本地项目的建议口径。LangChain 官方教程区分答案正确性、回答相关性、证据支撑和检索相关性,可以据此拆开定位。官方评估教程
| 检查项 | 具体计算或核对方式 | 用途 |
|---|---|---|
| Hit@5 | 有答案且有权限的问题中,前 5 个片段至少命中一个参考片段的题数 / 该类题数 | 发现漏检;多段问题另查证据是否齐全 |
| 答案正确性 | 人工按答案要点逐题判定通过与否,保留原因 | 发现答错、遗漏或版本混淆 |
| 证据支撑 | 核对回答中的事实陈述是否能定位到本次召回片段 | 发现无依据补充及错引 |
| 拒答与误拒 | 应拒答题单独统计通过数;可回答题另统计被拒答数 | 避免靠全部拒答获得好分数 |
| 权限 | 检查召回、模型上下文、响应和日志是否含越权内容 | 发现信息越界 |
| 耗时与失败 | 成功请求统计端到端 P50/P95,注明样本数;失败数 / 总请求数另列 | 避免只报告快速成功样本 |
下面用一个假设的双证据问题说明 Hit@5 的边界,表中不是运行结果。问题需要同时依据“适用版本”和“限制条件”才能回答;增加 k 可能补齐证据,也会引入额外噪声,因此还要看实际送入模型的上下文。
| 观察 | Hit@5 是否通过 | 优先排查的原因 |
|---|---|---|
| 前 5 条只有适用版本,缺少限制条件 | 通过 | 单片段命中掩盖了多段证据缺失,检查证据覆盖与排序 |
| 两段均被召回,但限制条件未进入最终上下文 | 通过 | 检索后裁剪或上下文组装丢失证据 |
| 两段均进入上下文,回答却忽略限制条件 | 通过 | 生成或指令遵循问题,核对答案要点 |
这是对上文指标的故障定位示例;LangSmith 官方教程 同样将检索相关性、答案正确性和证据支撑分开评价。
3. 保存能回放的结果
固定模型标识、提示词版本、文档快照、切分参数、检索数量和重排配置,同时记录 Spring AI、向量库实现、嵌入模型版本及生成参数。模型或依赖变化后,即使问题相同,也不能直接把差异归因于本次调参。逐题保存如下字段;这里是记录结构,未填写的结果不能当实验成绩。
{
"caseId": "待填写",
"configVersion": "待填写",
"retrievedChunkIds": [],
"answer": null,
"citations": [],
"elapsedMs": null,
"errorType": null
}这份最小记录还需关联测试身份、最终授权过滤条件、最终送入模型的片段及其版本,以及逐题判定理由。仅有 retrievedChunkIds 无法分辨“已召回但被裁剪”和“证据进入上下文后仍答错”;保存这些关联信息时也要遵守原文档的访问权限。
Spring AI 的 QuestionAnswerAdvisor 会把检索文档加入生成上下文,也支持过滤表达式。检查服务端授权条件是否真正进入检索,不能只在输出后遮盖文本。Spring AI RAG 文档 当前页面标识为 2.0.2(2026-11-06 查阅);过滤机制的说明以该版本为依据,项目使用其他版本时应核对对应版本 API。这里核对了官方说明,未运行项目验证授权行为。
4. 一次验证一个改动
先按解析错误、漏检、排序、证据不足、生成错误分类。调试集上一次只改一个变量,定稿后回放保留集;一旦拿保留集调参,应补充新的独立样本。模型裁判可辅助筛查,但抽样人工复核并保存判定理由。
验收时建议将越权作为阻断项:本题集发现一例就先修复。其他指标按使用场景预先确定要求,附失败样本和版本差异,不预填提升比例。
适用边界
小型离线题集用于发现回归,无法证明线上整体质量。命中一个片段不代表多段证据充分;有证据支撑也可能引用过期事实。扫描件、实时数据和长对话需要另外设计题集。
参考资料
上文链接的 LangChain 评估教程 和 Spring AI RAG 参考 分别用于核对评估维度和检索接入行为。
站内下一步
Java 转 AI 应用路线 第四周可衔接这里的离线回放;项目简历指南 说明如何表述实际验证过的结果。需要集中查找材料时,进入 资料入口。
