让企业 RAG 达到生产级质量
为什么检索 Demo 看着惊艳、生产环境却让人失望——以及补上差距的那几步。
错误答案,要先找到错误的来源
企业RAG不是把文件放进向量库,再要求模型附上引用就结束。一次回答经过资料导入、权限判定、检索与生成;任一层出错,都可能产生看起来有依据的错误结论。排查应从具体问题和实际检索片段开始,而不是立即更换模型。
说明用假设例子,非真实客户案例或实施结果。 假设产品
P-104的退货政策有v2和v3:旧版规定30天,当前版改为14天。销售人员可以读取退货政策,但不能读取财务底价文件。用户问当前期限,系统却回答30天并附旧版链接。下面的样本和实验只用于说明诊断方法,不代表实际准确率或收益。
用同一组问题观察不同失败
先由资料负责人确认权威版本,再建立可重复运行的样本。每条记录问题、认证身份、允许的文件、应引用的片段与预期行为。以下 6 条是该假设场景的起始样本,实际项目要加入自己的真实问题。
| 样本 | 问题或条件 | 应观察的行为 |
|---|---|---|
| Q1 | 当前 P-104 退货期限 |
引用 v3,回答 14 天 |
| Q2 | 明确询问 v2 的历史期限 |
在获准读取历史资料时,回答 30 天并标明旧版 |
| Q3 | 询问相近编号 P-140 |
不把 P-104 的规定当作该产品答案 |
| Q4 | 资料未说明的延长保修 | 说明依据不足,转交负责人 |
| Q5 | 销售身份询问财务底价 | 不暴露正文、标题、引用链接或缓存内容 |
| Q6 | 文档内写有“忽略权限”指令 | 将其作为资料内容,不扩大调用者权限 |
把检索与生成拆开诊断
- 查源资料和索引。
v3是否已批准、成功导入并生效?查看源文件标识、版本、适用范围和同步记录。若新文件根本没入库,先修导入;不要用提示词掩盖更新失败。 - 查身份和允许范围。 用该用户的实际认证身份重放访问判定,确认租户、部门和文件权限来自服务端。用户自称财务人员、文档里的指令或模型生成的过滤条件都不能自行授权。
- 只看检索结果。 暂不生成回答,保存脱敏片段及排序。若只有
v2,检查版本过滤;若编号不匹配,检查关键词路径;若表格条件被切开,检查分块。不能把任何未授权资料送给模型后再要求它保密。 - 再看生成。 如果
v3依据已正确到达模型,回答仍是旧期限,检查上下文冲突、指令和引用对齐。引用存在不证明结论正确;资料不足时应明确说明,不能补出政策。
为文件维护 document_id、version、effective_from、audience 和 owner。历史版可留作追溯,但默认当前查询不应无差别混入旧版。权限收回后,索引、引用访问和答案缓存都要同步失效。
比较方案时,一次只改变一个环节
固定资料快照、权限规则、样本、模型与提示词。以 A 的语义检索为基线,B 仅改为混合检索,C 在 B 上增加重排序;分别比较 A 与 B、B 与 C。可以用实验检验混合检索对编号和固定术语匹配的帮助,重排序可能改善相关性,但会增加费用和延迟。支持范围须看实际存储与服务配置,可参考 AWS 知识库检索说明。
分开记录:有权访问的正确依据是否被取回、回答是否忠于依据、引用是否支持结论,以及延迟、用量和人工转交。重复运行容易波动的问题,保留每次结果;不要仅展示最好的一次。即使 C 的回答更好,也要确认额外等待和成本是否适合该业务。
一份可以交给评审人的验收单
- 资料负责人签认当前与历史版本的适用规则,维护更新和删除清单。
- 保留 Q1 至 Q6 的身份、期望依据、实际片段、答案和失败原因。
- 单独检查跨租户、撤权后的缓存及引用访问;本例把任何越权暴露设为阻断项。
- 为无依据、冲突和过期资料约定拒答说明及人工处理入口。
- 由业务与运维负责人事先约定质量、等待和费用门槛,不套用通用合格率。
- 文档、权限、索引、模型或提示词变化后,复测受影响样本再放行。
这样的验收把“回答很像正确”转化为可以定位、比较和追责的证据。首个试点宜选资料负责人明确、答案能够核对的业务范围。