>_ AI 应用训练营
lang ~ ai-course/10-knowledge-retrieval-node 3 min read

10 · 搭建知识检索节点

三条分支各自的检索配置

10.1 导购分支的检索节点

  1. 添加「知识检索」节点
  2. 知识库选择「商品知识库.xlsx」
  3. **查询内容变量选{{#Query改写.text#}},不要用默认的{{#开始.query#}}**——原因见第7章,检索环节必须拿改写后的完整问题去查,才能正确处理"有货吗"这类省略句

10.2 知识分支的检索节点

  1. 添加「知识检索」节点
  2. 知识库选择「生活知识库.xlsx」
  3. 查询内容变量同样选{{#Query改写.text#}}

10.3 默认(模糊)分支的检索节点

  1. 添加「知识检索」节点
  2. 同时勾选两个知识库:商品知识库.xlsx + 生活知识库.xlsx
  3. 查询内容变量同样选{{#Query改写.text#}}

重要:这个节点有独立的"召回设置",跟单个知识库自己的设置是分开的(真实踩坑重点)

点击这个检索节点的「召回设置」按钮,会弹出一个独立的配置窗口,里面有两个标签页:

「权重设置」  → 用语义相似度和关键词匹配的比例来排序,
              不需要调用额外的Rerank模型
「Rerank模型」→ 用一个专门的模型对结果重新排序

这两个选项到底是什么关系、为什么会二选一,第6章已经讲过原理,这里是它在真实界面上的样子——而且这一步是目前为止最容易踩坑的地方。

真实踩坑案例(整个调试过程中最隐蔽的一个坑): 曾经这里默认选中了"Rerank模型"标签,用的是网易有道的reranker模型,结果调用时报403 Forbidden错误(权限不足),请求路径是/v1/rerank,导致这个分支的检索一直返回空结果,AI因为没有任何参考内容,开始编造不存在的信息(比如把榴莲问题答成了牛油果——这正是第2章开头那个翻车案例的真实根因)。

排查过程为什么容易走弯路: 报错信息显示的是"知识库层面"的Rerank报错,第一反应是去检查两个知识库各自的Rerank开关——但检查后发现都显示已关闭,报错依然存在。真正的根因是:当一个检索节点同时挂载多个知识库时,Dify会启用独立的"召回设置"(多路召回),这套设置和单个知识库自身的Rerank设置是完全分开的两套配置,互不影响也互不同步,这才是问题真正出在的地方。

解决方法:把这里切换到「权重设置」标签,滑块设置为"语义1.0"(语义1.0/关键词0),完全绕开有问题的Rerank模型,改用纯向量相似度排序。


配置完成后,三条分支的检索节点结构:

导购分支 → 商品知识库.xlsx(单库检索,用自己的默认召回设置)
知识分支 → 生活知识库.xlsx(单库检索,用自己的默认召回设置)
默认分支 → 商品库 + 生活库(多库检索,用独立的"召回设置",
                          务必切到权重设置模式)