如果你正在折腾企业级 RAG(检索增强生成)系统,你迟早会撞上一面让人沮丧的“叹息之墙”:无论你怎么砸钱换更好的 Embedding 模型,怎么精雕细琢 Chunk 切块策略,那个该死的召回准确率到了 80% 左右的临界点之后,就像是焊死了一样,再也上不去了。
在过去一年的研发实战中,我吃过太多次这种亏。
当用户问出一个极其明确的单点知识(比如“API 报错 401 意味着什么?”)时,传统的 RAG 表现得像个天才。但当用户问出一个需要跨越三份文档、结合多步逻辑推演的复杂业务流时,传统的“一次性查库 -> 把切片塞进 Prompt -> 让模型总结”的单线模式,简直就是一场灾难。
模型看着几块互不关联的代码切片,就像拿着三片拼图去猜《清明上河图》,出来的结果除了“幻觉”就是“一本正经地胡说八道”。
这种现状驱使我对 Knowledge Hub (KH) 进行了彻底的架构重塑:剥夺 RAG 模块作为“核心大脑”的权力,将系统全面升级为 Agent-first(智能体优先)架构。
一、权力的切割:让算法只管搜索,让模型去管推理
在传统的视角里,RAG 是主角,大模型只是一个文字总结器(Summarizer)。但这违背了系统设计的底层逻辑:检索系统擅长的是“寻找”,它不应该被赋予理解的重担;大模型擅长的是“推理”,它不应该被强迫在信息缺失的情况下瞎编。
在 KH 的重构中,我把整个系统的主导权交给了由 pkg/mcp 驱动的 Agent。而 RAG 模块(即底层那个庞大的向量检索和召回库)被冷酷地降级为:一个只能提供精准事实的“取证武器库”。
我不允许 RAG 自己去做任何逻辑合并。我只要求它干好一件事:当 Agent 问“关于鉴权接口的报错原因有哪些?”时,RAG 必须在毫秒级内,带着严密的 VFS 路径,把高度相关的原文片段原封不动地交出来。这种对工具边界的冷酷切割,是系统走向工业级稳健性的第一步。
二、两段式取证协议:Scout(侦察)与 Deep Read(精读)
把 RAG 降级后,接下来的挑战是如何指挥 Agent 去高效地使用这个武器库。如果任由大模型乱查,Token 的消耗会瞬间爆炸,且回答质量依然不可控。
在 internal/agent/service.go 中,我通过一套严厉的指令协议设计了 Scout(侦察)与 Deep Read(精读)两段式打法。
2.1 阶段一:Scout(广泛侦察)
这是“探路”。当历史记忆里没有答案时,Agent 会调用 search_knowledge_base 工具。
我给 AI 下了死命令:“搜索返回的只是局部片段,绝不是完整事实。如果片段信息不足,你绝对不准给我脑补!”
并且,如果在第一轮搜索中没找到理想的切片,Agent 必须强制通过改写关键词、增加上下文限制等方式,至少重试 2 次。这种“不拿到证据不撤退”的纪律,强行堵住了大模型想要“偷懒”的后路。
2.2 阶段二:Deep Read(定向精读)
这是解决 RAG“上下文断裂”的绝杀技。
在侦察阶段,Agent 拿到了一堆切片。它会通过自身的逻辑判断,挑出最有价值的一个。然后,它必须从切片头部提取出 doc_id,并主动挂载 read_document 工具。
这个工具会绕过向量库,直接根据 ProjectNode 的真实路径去拉取该文档的完整上下文(或者是包含那个切片的巨大内容块)。
这就是人类专家的思考方式:先通过目录和摘要找到大概位置,然后翻开那页仔细精读。
通过这套两段式协议,我们彻底让 AI 告别了“断章取义”的毛病。大模型不再是在几百个字的碎片里拼凑答案,而是在阅读完整的业务文档后进行专业级推理。
三、Strict Grounding:那个戴着镣铐的“严谨者”
企业级知识库里,最怕的不是 AI 说“我不知道”,而是它因为“过度热心”而编造了一个不存在的凭证。哪怕它有 99% 的时间是准的,只要有 1% 的概率出现这种幻觉,系统在严肃场景下就会被一票否决。
我在指令集里注入了一段被命名为 strictGroundingPrompt 的硬约束:
“你当前处于客户模式,回答必须严格基于知识库内容。没有检索到可支撑结论的证据时,必须明确回复‘知识库中未找到相关信息’。严禁使用外部常识,严禁编造任何未出现在检索结果中的逻辑。”
这段 Prompt 配合着 Agent 的工具调用轨迹(Trace),在系统底层织起了一张密不透风的铁网。
用户在前台看到的,是一个经过深思熟虑、引用清晰的完美回答;而在后台的 Trace 日志里,你看到的是系统发起了一次历史扫描、三次向量侦察、一次全文精读,最后才落笔成文的严谨跋涉。
四、基于 MCP 的标准化:让能力可插拔
为了支撑这套 Agent-first 架构,我并没有采用那些臃肿的框架,而是直接拥抱了 MCP (Model Context Protocol) 这一行业标准。
在 pkg/mcp 的定义下,KH 的所有核心能力(如 search_knowledge_base、read_document)都被抽象为了标准化的 Tool。
这种做法的工程收益在于:
- 一致的交互界面:大模型不需要学习不同接口的调用方式,它只需要通过 MCP 协议进行统一调度。
- 能力的横向扩展:如果明天我想加一个“查询实时日志”的功能,我只需要封装一个新的 MCP Tool,Agent 就能在现有的 Scout/Deep Read 逻辑中无缝使用它。
结语:重新定义智能的边界
Agent-first 以后,RAG 没有死,它只是被安放到了它最擅长的位置上。
通过把“检索”和“推理”彻底解耦,把“侦察”和“阅读”物理分离,我们在 Knowledge Hub 中构建起了一个极具工业美感的智能取证网络。
在这个网络里,大模型终于不再是一个被动等待指令并强行编造答案的“搜索引擎包装壳”,而进化成了一个拿着放大镜、在知识迷宫中步步为营的“探案专家”。
作为一个负责人,我不负责写出完美的答案,我只负责设计规则、建立约束、分配权力。这,才是通往企业级 AI 系统的正确姿势。