微信扫码
添加专属顾问
我要投稿
Dify知识库文档分级分类的两种实用方案,业务方最终选择了更直观易懂的方案A。 核心内容: 1. 文档元数据在Dify中的基础应用 2. 基于string类型元数据的方案A实现细节 3. 基于number类型元数据的方案B对比分析
在知识库的使用场景中有这样一类需求,就是希望在同一个知识库里面,不同的人可以查看不同的文档内容。最常见的就是不同级别的人能够查看的文档范围是不一样的。在这里,我们结合Dfy的元数据给出了一种解决思路,并进行了两种方案设计,最终业务方的选择放到了文章结尾的位置。
首先简单介绍一下什么是文档的元数据。在dify的每个知识库里面,可以单独设置元数据字段,例如“发布时间”,然后我们就可以针对知识库里面每一个文档设置元数据对应的值,比如“一月、二月、三月”等。这样我们在知识检索的时候就以根据元数据过滤查询不同月份的文档了。
那么如何将这个元数据应用到文档的分级分类管理上呢?
方案A,采用string类型元数据
1、首选定义用户等级为一级,二级,三级,四级;
2、在知识库中增加string类型元数据role_level,并对文档进行标注,例如:
(1)当前文档允许一级,二级角色访问,则role_level赋值为:“一级、二级”
(2)当前文档允许一、二、三、四级角色访问,则role_level赋值:“一级、二级、三级、四级”。如下图所示:
3、在知识库工作流程中,首先获取用户访问等级(通过数据库或者其他手段);
4、在知识检索节点设置元数据过滤,并使用包含条件,如下图所示
即查询元数据值中包含当前用户级别的文档。
5、例如,当前用户角色为“二级”,过滤查询包含当前用户角色等级的文档,此时包含“二级”的文档如:“一级、二级”;“一级、二级、三级”;“一级、二级、三级、四级”均可查询,但是仅配置元数值据为“一级”的文档则当前用户无法访问;
6、又例如:当前用户角色为“四级”,则仅允许访问标注为“一级、二级、三级、四级”的文档,其他文档均不能访问。从而做到了细粒度的文档访问权限控制。
方案B,使用number类型元数据控制
1、定义用户等级为数字1、2、3、4;
2、在知识库中设置number类型元数据role_level,并对文档进行标注,标注当前文档访问等级,1 /2 /3 /4,如下图所示
3、在知识库工作流程中,同样先获取用户访问等级,
4、在知识检索节点增加元数据过滤,并使用≤条件过滤
即,仅允许用户访问元数据等级比自己级别低的文档;
5、例如,当前用户等级为2,则过滤查询等级为“1/2”的文档;当前用户等级为4时,则过滤查询保密等级为“1/2/3/4”的文档,从而做到细粒度的文档访问权限控制。
三、写在最后
最后将这两种方案提供给业务方时,业务方毫不犹豫地选择了方案A。虽然方案A需要配置更多的文字,但是使用起来更加直观易懂。用户分四个等级,文档想让哪个看就配上哪个角色,方案B还需要算一下大于小于的,麻烦的很。
业务方还进一步扩展思路,除了按照等级之外,还可以按照部门、团队等灵活配置,非常灵活。这确实是我没有想到的,我还是陷入了工程化的思维里面了。行吧,回见~
53AI,企业落地大模型首选服务商
产品:场景落地咨询+大模型应用平台+行业解决方案
承诺:免费POC验证,效果达标后再合作。零风险落地应用大模型,已交付160+中大型企业
2025-10-30
开源可信MCP,AICC机密计算新升级!
2025-10-30
OpenAI 开源了推理安全模型-gpt-oss-safeguard-120b 和 gpt-oss-safeguard-20b
2025-10-29
刚刚,OpenAI 再次开源!安全分类模型 gpt-oss-safeguard 准确率超越 GPT-5
2025-10-29
AI本地知识库+智能体系列:手把手教你本地部署 n8n,一键实现自动采集+智能处理!
2025-10-29
n8n如何调用最近爆火的deepseek OCR?
2025-10-29
OpenAI终于快要上市了,也直面了这23个灵魂拷问。
2025-10-29
保姆级教程:我用Coze干掉了最烦的周报
2025-10-29
维基百科,终结了!马斯克开源版上线,用AI重写「真相」
2025-08-20
2025-09-07
2025-08-05
2025-08-20
2025-08-26
2025-08-22
2025-09-06
2025-08-06
2025-10-20
2025-08-22
2025-10-29
2025-10-28
2025-10-13
2025-09-29
2025-09-17
2025-09-09
2025-09-08
2025-09-07