创建时间: 2026-08-01最后更新: 2026-08-04作者: yangbo(dd1575869)
1. 能返回结果,不代表检索正确
做到这里,我们已经有了一条能运行的 RAG 链:用户提问,Retriever 返回文档,模型参考文档生成答案。但真实项目很快会遇到一个反直觉的问题:向量库几乎每次都能返回内容,答案却不一定可靠。
假设知识库里同时有《员工考勤制度》《差旅报销制度》和《办公设备申领办法》。用户问:
NOTE
我明天想休一天,需要谁批准?
如果检索结果的第一名是“差旅申请由直属负责人审批”,系统并不会报错。它只是把语义上“申请、审批”比较接近的错误资料交给模型。模型再把这段话组织得很通顺,用户看到的便是一条听起来可信、事实却不对的答案。
提高 RAG 质量,第一步不是把 topK 从 4 改成 8,也不是在 Prompt 里再写一遍“请准确回答”,而是先判断错误发生在哪一层:
| 现象 | 更可能的问题 |
|---|---|
| 正确资料没有进入候选集 | 切块、查询表达、过滤条件或召回策略 |
| 正确资料在候选中但排得很后 | 排序、混合检索权重或重排 |
| 候选资料正确,答案仍然写错 | 上下文组织、生成约束或模型能力 |
| 测试时正常,线上偶尔引用别人的资料 | 租户和权限过滤 |
| 新制度已经发布,仍然回答旧版本 | 索引更新、版本过滤或缓存 |
这张表看起来朴素,却是排查 RAG 问题时最重要的分界。检索错了,继续调 Prompt 通常没有意义;检索正确而回答错了,才应该检查生成阶段。
订阅后可阅读剩余内容
AI 电子伴侣企业级项目实战
已发布239节计划发布120节目标已完成199%