纯向量检索搞不定编号、型号、人名等精确词查询。生产共识架构:第一阶段混合召回(向量语义 + BM25 关键词并行、RRF 融合),粗召回 Top 30–50;第二阶段 cross-encoder reranker 精排到 Top 5–8 再喂给 LLM。效果定位要诚实:混合+重排解决的是“找得对”,延迟与组件复杂度随之上升(指南给出的量级:混合 p50 约 15–25ms,加 rerank 后约 80–150ms)。

适用场景:知识库里有大量产品型号/条款编号/专有名词;向量检索“主题对但答案不对”时

混合检索 BM25 rerank 重排 RRF 两阶段检索

操作步骤

  1. 先量化瓶颈:从问答日志里抽答错样本,先确认是召回不到(recall 问题)还是排序不对(precision 问题),再决定加哪一层
  2. 开混合检索:Dify/RAGFlow/FastGPT/MaxKB 均有混合检索开关或模式,先开向量+全文,再设权重
  3. 加 rerank:候选数设 30–50 入 rerank,输出 5–8 给 LLM;rerank 模型中文选 bge-reranker-v2-m3(可走 LIN 的 rerank 兼容接口或本地部署)
  4. 叠加元数据过滤(版本、部门、生效日期),旧版本文档先过滤再检索,避免新旧制度互相打架
  5. 用金标集复测 context precision/recall(见第 13 条),确认提升再上线,并记录延迟变化
中文提示词
(配合本条的检索侧设置,生成侧用第 12 条模板)
接入本站 API:Dify 的 OpenAI-API-compatible 插件同一套配置可分别添加 LLM / Embedding / Rerank 三类模型——把 rerank 也指向 https://tokenbuddy.cc(LIN 提供 rerank 模型时),一次配置打通全链路:同一个 Key、按 Key 统计三类调用量。LIN 未提供 rerank 时,rerank 本地跑 bge-reranker-v2-m3,其余仍走 LIN。

注意事项

  • ⚠️ 把 50 个候选一股脑塞给 LLM 而不精排:token 暴涨且触发“lost in the middle”,模型反而答不好
  • ⚠️ rerank 输出 Top N 太小(如 =1):需要 2–3 篇文档互相印证的问题直接断粮,指南建议 5–10 为稳妥区
  • ⚠️ 瓶颈没测清就堆架构:召回本身没问题时加 rerank 只增加延迟(指南原话:bottleneck 被实测确认时才加)

来源:https://aifoss.dev/blog/rag-architecture-deep-dive-2026/