在Dify中构建树状知识库结构需五步:一、创建命名体现层级的独立知识库容器;二、按业务路径预组织文档;三、上传时绑定层级元数据;四、在提示词中声明检索优先级并设置知识库权重;五、验证跨层级检索连通性。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

要在Dify中实现真正可检索、可维护、能反映业务真实层级关系的知识库结构,不能依赖单个知识库内部“打标签”或手动分段,必须通过知识库容器本身与文档语义切片的协同设计来构建树状层级。
第一步:用知识库容器模拟树的主干节点
创建多个独立知识库,每个对应树的一个主干层级或核心维度。例如:KB_Product(产品层)→ KB_Product_A(子产品A)→ KB_Product_A_Variant(具体型号变体)。【每个知识库名称必须体现层级归属,且不可重名】
进入Dify控制台 → 点击「知识库」→ 「新建知识库」→ 输入名称如 KB_Product_A_Variant,描述填写“产品A下所有SKU规格参数与兼容性说明”。
这一步不上传任何文件,只建空库。目的是先锚定层级坐标,避免后期命名混乱导致检索路径断裂。
第二步:按树形路径组织原始文档
把待入库的文档按实际业务树结构提前归类存放。比如:/Product/A/Variant/X1/spec.pdf、/Product/A/Variant/X1/compatibility.xlsx、/Product/A/faq.txt。
文件夹路径本身即隐含层级语义——Dify虽不识别路径,但你在后续写提示词和配置元数据时,会直接引用该路径逻辑。
注意:同一层级下的文档不要混放。例如 KB_Product_A 下只放产品A通用文档,KB_Product_A_Variant 下只放具体型号文档。混放会导致向量混淆,检索时出现“跨型号误匹配”。
第三步:上传时绑定层级元数据
方法一:使用JSON批量导入(推荐)
构造符合Dify要求的JSON结构,显式声明每条文档所属的树路径:
{"documents": [{"id": "spec_x1", "content": "X1支持USB-C 3.2 Gen2...", "metadata": {"level": "variant", "parent": "KB_Product_A", "path": "Product>A>Variant>X1"}}]}
在知识库设置页选择「从JSON导入」,粘贴上述内容。metadata字段会被Dify原样保留,后续可在提示词中调用{{document.metadata.path}}。
方法二:单文件上传后手动补元数据
上传 spec.pdf 后,在该文档详情页点击「编辑元数据」→ 添加键值对:level = variant,parent = KB_Product_A。这一步操作慢,仅适用于少量关键文档。
第四步:在Agent提示词中激活树形检索逻辑
步骤一:在应用编排中,同时关联 KB_Product_A 和 KB_Product_A_Variant 两个知识库。
步骤二:在系统提示词中写明层级优先级:
“你是一个产品技术支持助手。当用户提问涉及具体型号(如‘X1是否兼容Type-C耳机’),必须优先检索 KB_Product_A_Variant 知识库;若未命中,再 fallback 到 KB_Product_A 中查找通用规则。”
步骤三:启用混合检索,并勾选「按知识库权重排序」。将 KB_Product_A_Variant 权重设为1.2,KB_Product_A 设为1.0——这样即使语义相似度略低,型号专属库的结果仍会排在前面。
这一步决定了树形结构能否真正生效。不写明优先级,Dify默认等权合并所有关联库结果,树就塌了。
第五步:验证树形跳转是否连通
在调试窗口输入问题:“X1的充电协议是什么?” → 查看检索日志,确认命中文档来自 KB_Product_A_Variant;
再输入:“产品A的保修期是多久?” → 检查命中是否来自 KB_Product_A,且 KB_Product_A_Variant 无返回;
最后输入模糊问题:“X1和X2能共用同一个电源适配器吗?” → 观察是否触发跨知识库联合检索,即 KB_Product_A_Variant(X1/X2规格)+ KB_Product_A(适配器通用标准)同时被激活。


















