# Dify 知识库元数据过滤

原创虚构输入与人工预期输出。未运行产品实例、未调用模型、未外发或发布。config.json 为字段教材，不是可导入 n8n/Dify/Flowise/Langflow 工作流。

## 1. 准备两版手册和另一产品对照
下载三份原创文档。D1 与 D2 的开机方式故意不同，D3 是另一产品。先明确用户选择 v2，版本资料不能仅靠文件名或模型猜测。

## 2. 在知识库创建两个字符串字段
打开 Metadata 面板，新建 product 与 version，类型选 String。字段名使用小写字母；字段创建后还必须填写每份文档的值。

## 3. 分别给文档标注版本
D1 为 lamp/v1，D2 为 lamp/v2，D3 为 fan/v2。用详情页或文档多选编辑保存，再逐份回读；误用 Apply to All Documents 可能把不同产品一起覆盖。

## 4. 在检索节点设置手动过滤
选择 Knowledge Retrieval 的 Metadata Filtering，用 AND 组合 product 等于 lamp 和 version 等于 v2。把实际条件与检索查询分开，型号过滤不由回答提示词代替。

## 5. 先看检索结果再生成答案
执行“v2 台灯如何开机”，检查 result 中文档元数据与标题，只允许 D2。若没有命中，先核对字段值与索引，不降低过滤直到旧版也进入结果。

## 6. 将回答与 D2 原文核对
回答必须来自 v2 顶部按钮，不能混入 v1 长按旋钮。元数据过滤是检索范围条件，不是用户权限控制；数据访问仍依赖工作区与应用权限。

## 离线验收
运行 python3 check-fixture.py，仅检查固定输入与人工预期关系，不验证真实模型、产品节点或工作流执行。

## 官方来源
- [Dify 官方：创建并填写文档 Metadata](https://docs.dify.ai/en/cloud/use-dify/knowledge/metadata)
- [Dify 官方：Knowledge Retrieval 输入、结果与引用](https://docs.dify.ai/en/cloud/use-dify/nodes/knowledge-retrieval)