Appearance
数据隔离
数据隔离
为保障用户知识资产安全,构建一个支持数据隔离的知识库与 RAG(检索增强生成)系统,满足不同层级用户的访问权限需求,实现数据的安全共享和隔离。权限层级划分(个人,部门,所有人)
权限模型设计
| 权限级别 | 权限说明 | 权限范围 |
|---|---|---|
| 个人(PERSONAL) | 仅本人可见 | 当前用户本人 |
| 部门(DEPARTMENT) | 本部门成员可见 | 当前用户所属部门所有成员 |
| 所有人(ALL) | 全体用户可见 | 系统内所有用户 |
数据库模型设计
1.知识库文档结构
1.1 关于数据隔离的核心字段
| 字段 | 说明 |
|---|---|
| documentId | 文档唯一标识 |
| ownerUserId | 文档创建者/归属用户 ID |
| ownerDepartmentId | 文档所属部门 ID |
| accessLevel | 访问级别(PERSONAL/DEPARTMENT/ALL) |
| content | 文档原文内容| URL(本地 Minio) |
1.2 向量数据库元数据设计
索引文档内容生成的向量,存储于向量数据库(如 Chroma)。每条向量附带元数据:
n userId
n departmentId
n accessLevel
2 数据隔离与访问控制
2.1 文档访问控制
n 个人级别:仅当 ownerUserId 与当前用户 ID 匹配时, 当前用户可访问。
n 部门级别:当 ownerDepartmentId 与当前用户所属部门匹配,并且文档的访问级别允许部门访问时,用户可访问。
n 所有人级别:访问级别为“所有人”的文档对所有用户开放。
2.2 向量检索访问控制
向量数据库查询支持元数据过滤,检索时根据当前用户的身份构造元数据过滤条件,如:
{"accessLevel": "ALL"},
{"accessLevel": "DEPARTMENT", "departmentId": "当前用户所属部门ID"},
{"accessLevel": "PERSONAL", "userId": "当前用户ID"}
