访问控制
访问控制
ACL访问控制(Access Control List)用于按用户或角色身份,决定一次检索能够召回哪些文档或切片。ACL 仅适用于工作空间场景,可以确保不同身份的人在与 Agent 对话时,只能看到自己有权访问的知识,从而实现知识的隔离与合规。
与协作管理权限的区别
知识库有两套不同的「权限」概念,请注意区分:
| 访问控制(ACL) | 协作管理权限 | |
|---|---|---|
| 管什么 | 检索时谁能召回哪些内容 | 谁能管理这个知识库本身 |
| 作用对象 | 文档 / 切片(内容) | 知识库(容器)与其文档 |
| 典型问题 | 这个用户提问时,能查到这份文档吗? | 这个成员能编辑/删除这个知识库吗? |
| 在哪配置 | 协作权限弹窗的可检索权限 | 协作权限弹窗的Manage管理权限 |
| 详见 | 本页 | 权限 |
协作权限管「谁能管理知识库」,ACL 管「谁能查询知识库的内容」。
机制
系统在检索前,会先根据发起者的用户/角色身份,计算其允许访问的知识范围;随后在该范围内再应用 元数据过滤。最终参与召回的,是两者的交集:
loading...
graph TD
U[发起检索的用户 / 角色] --> ACL[ACL 允许访问的范围]
MD[元数据过滤条件] --> F[元数据命中范围]
ACL --> X{取交集}
F --> X
X --> R[最终可召回的文档 / 切片]
R --> RC[向量 + 图谱召回]
身份与内容的关联通过可检索权限得配置实现,仅适用于工作空间场景:
- 首先启用知识库的 ACL 功能(默认关闭),关闭状态下默认不做任何ACL过滤,任何人都能召回全部内容;启用后则需要明确授予权限。
- 当您把某个成员或角色授予某知识库(或某些文档)的可检索权限时,他们在检索时即可召回这些内容;未被授予的内容则会被自动过滤掉。
应用范围
ACL 在所有会从知识库召回内容的入口生效,包括:
- 知识库检索:召回前先按身份限定范围。
- Bot 对话:对话中触发的知识检索遵循发起者的 ACL。
- 工作流 Dataset 节点:按节点执行上下文的身份应用 ACL。
- AI Search:工作空间 AI 搜索的结果按身份过滤(含图谱召回结果的二次过滤)。
图谱召回的结果也会在返回前做一次按身份的过滤,确保不会越权返回超出可访问范围的切片。
用户可见的入口
在开发空间界面上,与 ACL 相关的可操作/可见项主要有:
- 授予可检索权限:在知识库或文档的协作权限弹窗中,切换到【Search】标签,将成员/角色添加为「可检索」,即可让其在检索时召回对应内容。

- ACL 状态指示:知识库页会显示「ACL Enabled / Disabled」状态,提示当前知识库是否启用了访问控制过滤。

与元数据过滤的关系
ACL 与元数据过滤都用于「缩小召回范围」,但出发点不同:
- ACL:从身份出发——这个人有没有权限看到。
- 元数据过滤:从内容标签出发——这次只想检索哪一类知识。
二者叠加生效(取交集):先用 ACL 限定身份可见范围,再用元数据过滤在其中筛选,最终进入向量与图谱召回。
