核心要点

  • 查询路由先行:用分类器 / LLM / 元数据判断 query 该查哪个库,避免全库盲扫

  • 命中多库时并行检索再融合,并为不同库设置差异化阈值与权重

  • 准确性靠 rerank + 强制来源引用 + 让模型「无依据就拒答」

  • 幻觉靠基于检索内容回答、引用核对,必要时多库交叉验证

标准回答

多知识库场景的核心矛盾是:库越多,盲目全检索越慢、噪声越大,但漏检又会降低准确性。整体思路是「先路由、再并行检索、后融合校验」。

第一步:查询路由(Routing)
不要对每个 query 都扫描所有库。先做一次轻量路由判断它该去哪些库:

  • 元数据 / 规则路由:按租户、语言、文档类型、时间等结构化字段直接过滤候选库,成本最低。
  • 分类器路由:训练一个小分类模型,把 query 映射到库标签,延迟低、可控。
  • LLM 路由:让 LLM 在给定各库「用途描述」后选择目标库,灵活但更慢、更贵。
    路由把检索范围从「全库」收敛到 1~2 个库,这是效率提升的关键。

第二步:并行检索与融合
对命中的多个库并行发起检索,各库可设不同的相似度阈值与召回权重(高质量库权重更高)。再把多路结果做融合,常用 Reciprocal Rank Fusion(RRF)按排名加权合并,得到统一候选集。

第三步:精排与准确性保障

  • rerank(cross-encoder 重排序模型)对融合后的候选做精排,把最相关片段顶到前面。
  • prompt保留来源标识,要求模型逐条引用 chunk 并标注出处。
  • 显式约束:只能基于检索到的内容回答,无依据时明确拒答,不要自行编造。

第四步:减少幻觉

  • 强制「答案必须可被引用片段支撑」,对关键结论做引用核对(answer 与 source 一致性校验)。
  • 对高风险问题做多库交叉验证:不同库结论一致才输出,冲突则提示不确定或转人工。

权衡:路由错误会漏掉正确的库导致答非所问,因此要加兜底——路由置信度低时退化为更宽的多库检索,用一点效率换召回安全。

常见误区

⚠️ 常见踩坑

误以为「把所有库都检索一遍再让模型挑」最稳。全库扫不仅慢、贵,还会引入大量跨库噪声稀释相关片段,反而更容易触发幻觉。正确做法是先路由收敛范围,再用 rerank 与拒答机制守住准确性。

追问

追问 1路由判断错了、把 query 发到了错误的库怎么办?

给路由加置信度与兜底:当路由置信度低于阈值时,退化为对 Top-N 个候选库做并行检索,用效率换召回安全;同时对最终答案做「是否有检索片段支撑」校验,没有支撑就触发拒答或重路由,避免错误库导致答非所问。

追问 2不同知识库的相似度分数不可比,融合时如何统一?

不要直接比较各库的原始相似度分数(不同库的 embedding 分布与量纲不同)。推荐用基于排名的 RRF 融合,只看每路结果内的相对排名而非绝对分数;或先对每路分数做归一化再加权。最后统一用一个 rerank 模型重排,得到真正可比的全局序。

追问 3如何量化评估这套多库 RAG 是否真的减少了幻觉?

在固定验证集上分层评估:检索层看 Context Recall / Precision 和路由命中率;生成层看 Faithfulness(答案是否被引用片段支撑)与拒答正确率(无依据问题是否如实拒答)。对比上线前后这些指标的变化,并抽样人工核对引用与结论一致性。

🔗 相似问题

同一考点的不同问法,面试官可能换着问,一起刷更稳

没找到想看的面试题?把你想看的告诉我们 →

延伸学习

按主题分类的相关资源,便于系统复习