标准回答
多知识库场景的核心矛盾是:库越多,盲目全检索越慢、噪声越大,但漏检又会降低准确性。整体思路是「先路由、再并行检索、后融合校验」。
第一步:查询路由(Routing)
不要对每个 query 都扫描所有库。先做一次轻量路由判断它该去哪些库:
- 元数据 / 规则路由:按租户、语言、文档类型、时间等结构化字段直接过滤候选库,成本最低。
- 分类器路由:训练一个小分类模型,把 query 映射到库标签,延迟低、可控。
- LLM 路由:让 LLM 在给定各库「用途描述」后选择目标库,灵活但更慢、更贵。
路由把检索范围从「全库」收敛到 1~2 个库,这是效率提升的关键。
第二步:并行检索与融合
对命中的多个库并行发起检索,各库可设不同的相似度阈值与召回权重(高质量库权重更高)。再把多路结果做融合,常用 Reciprocal Rank Fusion(RRF)按排名加权合并,得到统一候选集。
第三步:精排与准确性保障
- 用 rerank(cross-encoder 重排序模型)对融合后的候选做精排,把最相关片段顶到前面。
- 拼 prompt 时保留来源标识,要求模型逐条引用 chunk 并标注出处。
- 显式约束:只能基于检索到的内容回答,无依据时明确拒答,不要自行编造。
第四步:减少幻觉
- 强制「答案必须可被引用片段支撑」,对关键结论做引用核对(answer 与 source 一致性校验)。
- 对高风险问题做多库交叉验证:不同库结论一致才输出,冲突则提示不确定或转人工。
权衡:路由错误会漏掉正确的库导致答非所问,因此要加兜底——路由置信度低时退化为更宽的多库检索,用一点效率换召回安全。
常见误区
⚠️ 常见踩坑
误以为「把所有库都检索一遍再让模型挑」最稳。全库扫不仅慢、贵,还会引入大量跨库噪声稀释相关片段,反而更容易触发幻觉。正确做法是先路由收敛范围,再用 rerank 与拒答机制守住准确性。
追问
追问 1:路由判断错了、把 query 发到了错误的库怎么办?
给路由加置信度与兜底:当路由置信度低于阈值时,退化为对 Top-N 个候选库做并行检索,用效率换召回安全;同时对最终答案做「是否有检索片段支撑」校验,没有支撑就触发拒答或重路由,避免错误库导致答非所问。
追问 2:不同知识库的相似度分数不可比,融合时如何统一?
🔗 相似问题
同一考点的不同问法,面试官可能换着问,一起刷更稳
没找到想看的面试题?把你想看的告诉我们 →
延伸学习
按主题分类的相关资源,便于系统复习