日期:2026-07-30
这个项目的客户是一家多元化集团,在我们进场之前,他们内部已经"百花齐放"地建了五个知识库:人力的制度库、财务的政策库、法务的合规库、IT 的运维手册库,还有各业务线共用的产品资料库。每个库各自做了 RAG 问答,各有各的入口。员工的真实体验是灾难性的——问一个"出差住宿标准是多少、发票怎么开、报销走什么流程"的问题,答案横跨人力、财务两个库,员工得分别去两个入口问两遍再自己拼答案。更严重的是权限:财务库的部分文档只对经理级以上开放,但产品资料库当初图省事全员可见,有次一份含敏感定价策略的文档被检索出来,在内部通报里挂了号。
集团的诉求是:一个入口问所有库,权限严格受控,答案冲突时能说清楚出处。我们基于所采用的 AI 私有化部署底座的 RAG 知识库层做了联邦检索改造,项目周期约两个半月。
改造后员工只面对一个统一问答入口。用户提问后,联邦检索层先做两件事:意图路由——判断问题可能涉及哪些库(一个轻量分类器加关键词规则,宁可多选不可漏选);权限预过滤——按用户身份取出他在每个库的可见范围,检索请求带着权限过滤条件下发。命中的库并行检索,各自返回 top-k 片段,融合层统一重排后交给生成模型,答案里每个论点强制标注来源库与文档链接。
跨库冲突是日常:人力库说补贴标准 300 元,财务库的新版政策说 350 元。融合层不替用户做裁决,而是按文档元数据里的生效日期与权威级排序,答案正文采用权威级最高且生效日期最新的说法,同时在答案尾部明确列出"另一来源的不同说法",让用户可以点开核对。各库的知识维护职责不变,仍由原部门负责更新,联邦层只做检索与融合,不搬运数据。
第一个挑战是权限模型的归一。五个库五套权限:有的按 AD 组、有的按职级、有的自己维护了一张白名单表。在检索层做权限过滤的前提是有统一的权限表达。我们定义了一个权限断言模型——每个文档切片入库时携带 acl 标签集(部门、职级下限、专项白名单),用户请求时由统一身份服务换算出他的属性集,检索引擎在向量召回阶段就带 acl 过滤条件,而不是召回后再筛。这一点非常关键:召回后过滤会把敏感片段先捞进内存再丢弃,日志、缓存、embedding 相似度旁路都可能泄露痕迹;在索引层过滤则从根上保证越权内容不进入任何后续环节。五个库的存量权限映射到新模型花了三周,是整个项目最枯燥但最重要的工作。
第二个挑战是多库并行检索的延迟控制。五个库串行查一遍要三四秒,用户等不了。并行化之后,长尾又成了问题——最慢的库拖着整体响应。我们设了 800 毫秒的检索预算:预算内返回的库参与融合,超时的库放弃并在答案尾部提示"某某库未及时响应,答案可能不完整"。同时给意图路由做了减法:明确单库意图的问题(如"服务器重启流程")只查运维库,实测约六成问题可以路由到一到两个库,平均检索延迟直接减半。
第三个挑战是跨库融合重排。各库的向量模型和切片粒度不一致,原始相似度分数不可比。我们放弃了直接比较各库分数的方案,改用统一重排:各库返回的片段汇总后,用同一个重排模型对"问题—片段"对重新打分,再按重排分数排序。重排模型是在底座的微调工具链上用内部标注数据微调过的,跨库可比性问题就此消解。
案例片段(已脱敏):联邦检索的路由与权限过滤配置——
yaml federation: budget_ms: 800 route: classifier: intent_router_v2 # 输出各库置信度 threshold: 0.15 # 宁可多选 max_kbs: 3 acl_filter: # 索引层过滤,非召回后过滤 mode: pre_retrieval attrs: [dept, grade_min, whitelist] fusion: reranker: bge-rerank-ft-v3 top_k_per_kb: 8 final_k: 6 conflict: order_by: [authority_level desc, effective_date desc] show_alternatives: true上线前的红队测试里,我们用 200 个越权探测问题(普通员工问经理级文档内容)做验证:预过滤模式下越权召回为零;对照组"召回后过滤"模式有 7 次敏感片段进入了重排日志——这个对比直接说服了安全团队签字放行。
上线三个月后的数据(脱敏示意值):跨库问题的检索命中率从单库模式折算的约 58% 提升到 86%;越权召回在红队复测中保持零记录,权限相关安全工单归零;平均检索延迟约 620 毫秒,P95 控制在 1.1 秒内;答案冲突率(用户反馈"答案和实际政策不符")下降约 65%,其中冲突提示功能贡献显著——用户看到两个来源时会自己核对,而不是拿着错答案去办事;统一入口的周活跃用户是原五个入口总和的约 1.7 倍,转人工咨询量(HR 与 IT 服务台)下降约三成。
第一,联邦检索的第一优先级是权限归一,而且过滤必须做在索引层,召回后过滤在合规上是不及格的。第二,多库并行要设检索预算,接受局部缺失并如实告知用户,比让所有人等最慢的库更好。第三,跨库分数不可比,统一重排是最省事的解法,不要试图校准各库的原始分数。第四,冲突答案不要替用户裁决,把权威级、生效日期和替代说法摆出来,可解释性本身就是信任。第五,联邦层只做检索融合、不搬运数据,知识维护权留在原部门,这个边界决定了项目能不能推得动。