展开本页目录
开始前准备什么
- 准备本篇使用的 Dify 知识库元数据过滤 环境;当前入口与版本参照文末官方来源。
- 将本页下载包解压到独立练习目录,先读原始输入与 README。
- 只运行对应步骤所需依赖;离线检查与目标产品运行分别记录。
- 准备两版手册和另一产品对照
- 在知识库创建两个字符串字段
- 分别给文档标注版本
- 在检索节点设置手动过滤
- 先看检索结果再生成答案
- 将回答与 D2 原文核对
1. 准备两版手册和另一产品对照
下载三份原创文档。D1 与 D2 的开机方式故意不同,D3 是另一产品。先明确用户选择 v2,版本资料不能仅靠文件名或模型猜测。
2. 在知识库创建两个字符串字段
打开 Metadata 面板,新建 product 与 version,类型选 String。字段名使用小写字母;字段创建后还必须填写每份文档的值。
3. 分别给文档标注版本
D1 为 lamp/v1,D2 为 lamp/v2,D3 为 fan/v2。用详情页或文档多选编辑保存,再逐份回读;误用 Apply to All Documents 可能把不同产品一起覆盖。
config.json · 字段教材,不可作为工作流导入
{
"metadata_fields": {
"product": "String",
"version": "String"
},
"document_values": "逐份填写,不能只创建字段",
"retrieval": "Knowledge Retrieval → Metadata Filtering → Manual",
"conditions": {
"product": "lamp",
"version": "v2"
},
"join": "AND"
}4. 在检索节点设置手动过滤
选择 Knowledge Retrieval 的 Metadata Filtering,用 AND 组合 product 等于 lamp 和 version 等于 v2。把实际条件与检索查询分开,型号过滤不由回答提示词代替。
5. 先看检索结果再生成答案
执行“v2 台灯如何开机”,检查 result 中文档元数据与标题,只允许 D2。若没有命中,先核对字段值与索引,不降低过滤直到旧版也进入结果。
6. 将回答与 D2 原文核对
回答必须来自 v2 顶部按钮,不能混入 v1 长按旋钮。元数据过滤是检索范围条件,不是用户权限控制;数据访问仍依赖工作区与应用权限。
7. 下载教材并运行离线核对
先下载完整教材包并解压,在材料目录运行 python3 check-fixture.py。脚本只读取原创输入、人工预期与配置,对照本页固定验收条件;通过说明材料内部关系一致,实际产品、模型与业务写入另需按前六步验证。
bash
unzip lesson.zip -d dify-product-version-metadata-filter
cd dify-product-version-metadata-filter
python3 check-fixture.py怎样确认已经完成
- 文档字段真实有值,只有创建字段不合格。
- AND 条件排除 D1 与 D3。
- 回答只使用当前版本来源,不把过滤当权限。
常见问题
文件名写 v2 就够了吗?
不够。检索过滤使用文档元数据;创建 product、version 后还需为每份文档标注正确值,并回读条件和结果。
这能阻止用户读取其他版本吗?
不能作为权限保证。此页限制一次检索的文档范围,用户与知识库访问权限需另行配置。


