Learn
Dify/05-knowledge-retrieval

知识库检索设置

文档切片入库只是第一步,检索怎么召回决定了模型拿到的是「干货」还是「噪音」。本章讲解把知识库接进应用时的关键检索参数。

1. 检索在 RAG 中的位置

用户提问
  → 问题向量化(同一 embedding 模型)
  → 在知识库向量中找最相近的片段
  → 取出 TopK 个片段作为上下文
  → 拼进提示词交给大模型生成答案

检索质量直接决定答案上限:召回不到 = 模型再强也答不对。

2. 核心参数

在应用的「上下文 → 知识库 → 检索设置」中可调:

参数含义建议
TopK召回的片段数量3–5 常用;问答复杂可调到 6–8
相似度阈值低于此分的片段不召回0.5–0.7 起步,按命中率调整
检索模式向量 / 全文 / 混合见下文
TopK = 4 且 阈值 = 0.6
  → 只把与问题相似度 ≥ 0.6 的前 4 段喂给模型
⚠️阈值不是越高越好

阈值设太高,容易「召回为空」,模型回答没依据;太低则混入无关片段,模型被带偏。先用中等阈值跑一批真实问题,看召回命中率再调。

3. 三种检索模式

  • 向量检索(语义):按语义相似度召回,擅长「意思相近但用词不同」的问法。
  • 全文检索(关键词):按关键词命中,适合专有名词、编号、精确匹配。
  • 混合检索(Hybrid):向量 + 全文加权融合,兼顾语义与精确,推荐作为默认。
💡混合检索是多数场景的最优解

用户既可能问「怎么退款」(语义),也可能直接搜「订单号 ORD-12345」(关键词)。混合检索能同时覆盖,召回更稳。

4. 重排(Rerank)

开启 Rerank 模型 后,系统先粗召回一批候选,再用重排模型精排,把最相关的顶到前面。

# 在模型供应商中接入 rerank 模型(如 bge-reranker)
# 启用后检索流程变为:粗召回 TopK×N → 重排 → 取 TopK

重排能明显提升「相关片段排在最前」的概率,代价是额外一次模型调用延迟。

5. 效果验证方法

连上第 4 章建的两个知识库,在「调试与预览」里问同一批问题:

问:「退货流程是怎样的?」
自动分段库召回:[片段A, 片段C, 片段B ...]
自定义分段库召回:[片段X, 片段Y ...]
对比:哪个更贴题、更完整?
🎯调参练习

固定问题集(≥10 条),分别测试「TopK=3/阈值0.5」与「TopK=5/阈值0.65/混合检索」两组设置,记录哪组答案更准,形成你的默认配置。

小结

  • 检索质量决定 RAG 答案上限
  • TopK、相似度阈值需结合实际命中率调
  • 混合检索 + Rerank 通常效果最佳
  • 用固定问题集做 A/B 验证,下一步建对话应用 →