小学网站asp,seo站点,北京封闭小区名单最新,百度网址大全在哪里找一、前言
继上篇文章#xff1a;AI科研助手开发总结#xff1a;向量与数据权限的应用#xff08;一#xff09;
本章根据向量库内存储数据及权限#xff0c;向量库统一维护和管理数据权限方案讨论。
二、方案分析-基于向量Fields
2.1 思路
结合橙语AI科研助手的业务场…一、前言
继上篇文章AI科研助手开发总结向量与数据权限的应用一
本章根据向量库内存储数据及权限向量库统一维护和管理数据权限方案讨论。
二、方案分析-基于向量Fields
2.1 思路
结合橙语AI科研助手的业务场景提出基于向量Fields解决数据权限。
2.2 分析
根据向量数据库的特性和存储结构存储时主要包括向量数据和属性属性是KeyValue结构可根据业务需求自定义设置。
在存储数据向量时将权限抽象为标签以标签形式设置到属性字段中后续检索时可根据权限属性进行过滤达到数据权限效果。
2.3 设计
数据类型公开数据、非公开数据部分人可见、部分组可见、部分部门可见 通过Fields属性设置固定标签属性以区别是否为公开数据通过动态标签属性区别数据对哪些人、部门或组可见。 1固定标签 公开数据标签isPublic值为1. 非公开数据标签isPublic值为0. 此时需设置动态标签 2动态标签 将可见标签作为动态属性值设置为1。当向量数据的可见性发生变化时更新动态属性。 个人标签格式AT-USERID-值 例如AT-USERID-989121值为1 部门标签格式AT-DEPID-值 例如AT-DEPID-908234值为1 组标签格式AT-GROUPID-值 例如AT-GROUPID-432122值为1
3标签属性条件过滤 isPublic1 or AT-GROUPID-98901 or AT-DEPID-98991 三、方案实现
3.1 基础数据类型
调研了阿里DashVector、百度VectorDB、Chroma支持的基础数据类型int、str、boolean。本文以DashVector为例。
3.2 公开数据检索
1. 业务数据 { id: 1, query: 应届生实习, title: 实习生招聘-应届生求职网, fileId: 7146C7155D1DD6C76671BB4F7B871BFB, isPublic: 1 } 2. 向量化数据
ret collection.insert( [ (1, generate_embeddings(实习生招聘-应届生求职网),{title:实习生招聘-应届生求职网, fileId:7146C7155D1DD6C76671BB4F7B871BFB,isPublic: 1}), (2, generate_embeddings(快快乐乐出门咒-豆丁网), {title:快快乐乐出门咒-豆丁网, fileId:9BD1E4747D1A56E26BE4B356D6439454, isPublic: 0, allowTags: USERID-989121 USERID-989122 USERID-989123 GROUPID-9890 DEPID-9899 ,denyTags:USERID-989141 USERID-989142 DEPID-9891 DEPID-9892 }), (3, generate_embeddings(起点中文网阅文集团旗下网站), {title:起点中文网阅文集团旗下网站, fileId:01E01C1F5947DE63C12DA8EF19E41DF4, isPublic: 0, allowTags: USERID-989121 USERID-989124 GROUPID-9890 ,denyTags:USERID-989142 DEPID-9891 }), (4, generate_embeddings(中方回应布林肯言论),{title:中方回应布林肯言论, fileId:7146C7155D1DD6C76671BB4F7B871BFB,isPublic: 1}), (5, generate_embeddings(布林肯在上海对所谓), {title:布林肯在上海对所谓, fileId:9BD1E4747D1A56E26BE4B356D6439454, isPublic: 0, AT-USERID-989121:1,AT-USERID-989122:1,AT-USERID-989123:1,AT-GROUPID-9890:1,AT-DEID-9899:1,DT-USERID-989141:2,DT-USERID-989142:2,DT-DEPID-9891:2,DT-DEPID-9892:2}), (6, generate_embeddings(全面履行世贸组织规则), {title:全面履行世贸组织规则, fileId:01E01C1F5947DE63C12DA8EF19E41DF4, isPublic: 0, AT-USERID-989121:1,AT-USERID-989124:1,AT-GROUPID-9890:1,DT-USERID-989142:2,DT-DEPID-9891:2}) ]
) 3. 向量检索
ret collection.query( vectorgenerate_embeddings(text), topk10, filterisPublic1, # 条件过滤查询公开数据 output_fields[title, fileId], include_vectorTrue
) 3.3 非公开数据检索
1. 业务数据 { id: 2, query: 布林肯, title: 布林肯在上海对所谓, fileId: 9BD1E4747D1A56E26BE4B356D6439454, isPublic: 0, AT-USERID-989121: 1, AT-USERID-989122: 1, AT-USERID-989123: 1, AT-GROUPID-9890: 1, AT-DEPID-9899: 1 } { id: 3, query: 世贸组织, title: 全面履行世贸组织规则, fileId: 01E01C1F5947DE63C12DA8EF19E41DF4, isPublic: 0, AT-USERID-989121: 1, AT-USERID-989124: 1, AT-GROUPID-9890: 1, AT-USERID-989142: 1, AT-DEPID-9891: 1 } 2. 向量化数据
ret collection.insert( [ (1, generate_embeddings(实习生招聘-应届生求职网),{title:实习生招聘-应届生求职网, fileId:7146C7155D1DD6C76671BB4F7B871BFB,isPublic: 1}), (2, generate_embeddings(快快乐乐出门咒-豆丁网), {title:快快乐乐出门咒-豆丁网, fileId:9BD1E4747D1A56E26BE4B356D6439454, isPublic: 0, allowTags: USERID-989121 USERID-989122 USERID-989123 GROUPID-9890 DEPID-9899 ,denyTags:USERID-989141 USERID-989142 DEPID-9891 DEPID-9892 }), (3, generate_embeddings(起点中文网阅文集团旗下网站), {title:起点中文网阅文集团旗下网站, fileId:01E01C1F5947DE63C12DA8EF19E41DF4, isPublic: 0, allowTags: USERID-989121 USERID-989124 GROUPID-9890 ,denyTags:USERID-989142 DEPID-9891 }), (4, generate_embeddings(中方回应布林肯言论),{title:中方回应布林肯言论, fileId:7146C7155D1DD6C76671BB4F7B871BFB,isPublic: 1}), (5, generate_embeddings(布林肯在上海对所谓), {title:布林肯在上海对所谓, fileId:9BD1E4747D1A56E26BE4B356D6439454, isPublic: 0, AT-USERID-989121:1,AT-USERID-989122:1,AT-USERID-989123:1,AT-GROUPID-9890:1,AT-DEID-9899:1,DT-USERID-989141:2,DT-USERID-989142:2,DT-DEPID-9891:2,DT-DEPID-9892:2}), (6, generate_embeddings(全面履行世贸组织规则), {title:全面履行世贸组织规则, fileId:01E01C1F5947DE63C12DA8EF19E41DF4, isPublic: 0, AT-USERID-989121:1,AT-USERID-989124:1,AT-GROUPID-9890:1,DT-USERID-989142:2,DT-DEPID-9891:2}) ]
) 3. 向量检索
ret collection.query( vectorgenerate_embeddings(text), topk10, filterisPublic0 and (AT-GROUPID-98901 or AT-DEPID-98991) , # 条件过滤查询USERID 为989121或DEPID为9899可见的数据 output_fields[title, fileId], include_vectorTrue
) 3.4 联合数据检索 基于2.2、2.3节的数据联合检索 1. 向量检索
ret collection.query( vectorgenerate_embeddings(text), topk10, filterisPublic1 or AT-GROUPID-98901 or AT-DEPID-98991, # 条件过滤公开数据或USERID为989121和DEPID为9899可见的数据 output_fields[title, fileId], include_vectorTrue
) 四、总结 采用动态Field可解决数据可见性问题总结如下 4.1 优点 Field为KeyValue结构设置和扩展灵活可支持上百个。 通过Key过滤效率较高对业务无侵入 兼容性好 4.2 缺点 可见标签为动态Field相对于预定义的Field会占用较多内存和磁盘检索速度也有所影响 目前不支持黑名单业务场景