一次内部知识库试用里,有人问“差旅报销附件漏了怎么办”。系统答得很快,语气也稳,给出的步骤却引用了上一版制度。追问之后才发现,检索到的文档片段确实相关,但时间戳太旧;生成环节没有表现出任何迟疑。这个场景里,问题不在模型“不会写”,而在它写得太顺。
检索增强生成常被描述成给模型外接一个资料库:先搜,再答。听起来像把检索结果塞进提示词就结束了。真正麻烦的地方恰在中间——搜到什么、怎么切、按什么顺序放、什么时候允许说“不知道”。这些环节没有一处能靠一句“增强”自动完成。
检索不是把相似度调高就完事
企业文档往往有版本、权限和上下文依赖。一份制度可能前半段讲流程,后半段讲例外;切得太碎,召回片段看似命中,实际缺了前提。切得太整,又会把无关内容一起带进上下文。于是检索质量不只是“找得到”,还包括“找得对、找得全、找得新”。如果知识库没有更新时间、适用范围这类元数据,模型很难自己判断哪段该先看。稳妥的做法,是把检索结果当成待核验材料,而不是标准答案的替代品。
上下文变长,不等于判断变准
有些团队习惯把更多片段一并塞给模型,觉得信息越多越安全。实际效果常常相反:重复表述会稀释重点,冲突条款会制造犹豫,长上下文还会让模型忽略靠后的约束。检索增强生成需要的不只是“多给”,而是“给得有序”。比如先给问题定义,再给适用条款,最后给操作步骤;冲突内容单独标注来源和日期。模型不会因为上下文变长就自动学会取舍,它只会沿着眼前的材料继续写。
答案约束藏在输出结构里
一个常见误区,是把“必须引用资料”写成一句提示词就结束。实际的做法,是在输出结构上留出位置:结论、依据、待确认项分开写;没有足够依据时,返回可追问的问题,而不是补全一段看似合理的流程。检索增强生成的上限由资料决定,下限则由约束决定。允许模型承认缺口,能让回答保持可核验。
评估要盯住失败,而不只是满意
上线前只看几个顺滑问答,很容易高估系统。值得做的测试,是专门找旧版本、权限边界、同义表述和跨文档问题,看系统会不会把不相关内容拼成结论。也可以记录“答对了但引用错了”的情况,这类失败在演示时不明显,进入日常使用后却会持续消耗信任。检索增强生成不是一次性插件,更像一套需要持续校准的工作流:文档治理、检索策略、上下文编排和答案约束,任何一处松动,都会在回答里显形。
回到开头那个报销问题,合理的回答也许不是一串步骤,而是先说明“我找到两份制度,一份已过期,需要确认适用日期”。这听起来不够利落,却贴近企业问答真正需要的东西:不是把话说满,而是把依据摆清。