普通 RAG 让大模型「参考」知识库作答。听起来稳,实际常跑偏:模型顺手用自带知识补了个窟窿,答着答着就冒出资料里根本没有的细节——一条「通常来说」、一个不存在的链接、一个想当然的数字。v0.5.0 给这件事上了把锁:严格问答模式。开启后,AI 的回答只能来自检索到的知识库内容,知识库没收录就直说,从流程上把编造和幻觉摁死。
它到底锁住了什么
一句话:把「参考」升级成「只能依据」。
- 只认资料:开启后所有问答请求一律先强制检索知识库,回答只依据检索到的知识库内容生成——不调用通用大模型知识、不做外部推理、不补全常识。
- 没收录就直说:知识库里没有相关内容时,直接返回一句固定的「未收录」文案。这条路径根本不进大模型、不追问、不兜底,从源头杜绝编造。
- 关掉就完全原样:开关置回
false,立即回到原有逻辑(RAG 自动注入 + 意图门控 + 三级递进兜底 + 工具/技能路由),行为与开启前逐字一致。默认关闭,不配置即保持你熟悉的样子。
开启后一条消息的旅程
为了「只能依据」,链路做了三件事:
- 强制检索:对任何消息都做向量检索,跳过意图门控与短消息过滤,用独立的
rag_strict_min_similarity/rag_strict_max_results召回门槛。 - 命中 → 贴硬约束:把「资料 + 仅依据资料作答」的约束块贴在用户消息之前的近因位(利用近因效应压住模型「自作主张」的冲动),同时禁用技能激活、只保留
kb_search这一个工具(联网搜索 / 发消息 / 审批等一律剔除)、不注入公共记忆、跳过三级递进兜底。 - 未命中 → 直接回固定文案:不调大模型、不追问、不兜底。
谁该打开它
答案是对出处要求极高的场景:公司制度问答、产品资料问答、合规话术、内部 SOP 之类——这些场合「编得再顺」也比不上「句句有出处」。闲聊、天气、问候这类知识库本就覆盖不到的话题,开启后会收到「未收录」回复,属预期行为;要兼顾日常对话,保持关闭即可。
建议开启前先把对应资料导入知识库、抽查几次召回效果,再按需调 rag_strict_min_similarity:过高易漏召回,过低易混入弱相关片段。
一句话切换,热重载即时生效
两种方式都能开:配置文件 llm.advanced.rag_strict_mode,或 Web 控制台「设置 → 模型与参数 → RAG 严格问答模式」开关。保存即生效,无需重启服务。Web 顶栏常驻模式徽章、设置页状态条,以及模拟面板的「对比两种模式」一键并排,都能让你一眼看清当前模式、两种模式回答差在哪。
升级注意
无破坏性变更。新增配置项rag_strict_mode/rag_strict_min_similarity/rag_strict_max_results/rag_strict_no_hit_reply(未命中文案可自定义)。默认关闭,不影响原有行为。