首页 > 其他分享 >AI科研助手开发总结:向量与数据权限的应用(二)

AI科研助手开发总结:向量与数据权限的应用(二)

时间:2024-12-28 11:28:39浏览次数:6  
标签:embeddings title AI isPublic USERID DEPID 权限 向量 fileId

一、前言

继上篇文章:AI科研助手开发总结:向量与数据权限的应用(一)

本章根据'向量库内存储数据及权限,向量库统一维护和管理数据权限'方案讨论。

二、方案分析-基于向量Fields

2.1 思路

结合橙语AI科研助手和PaperGPT的业务场景,提出基于向量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)标签属性条件过滤

isPublic=1 or AT-GROUPID-9890=1 or AT-DEPID-9899=1

三、方案实现

3.1 基础数据类型

调研了阿里DashVector、百度VectorDB、Chroma,支持的基础数据类型:int、str、boolean。本文以橙语PaperGPT 2.0版本结合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( 
    vector=generate_embeddings(text), 
    topk=10, 
    filter='isPublic=1', # 条件过滤,查询公开数据 
    output_fields=['title', 'fileId'], include_vector=True 
)

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( 
    vector=generate_embeddings(text), 
    topk=10, 
    filter='isPublic=0 and (AT-GROUPID-9890=1 or AT-DEPID-9899=1) ', # 条件过滤,查询USERID    为989121或DEPID为9899可见的数据 
    output_fields=['title', 'fileId'], 
    include_vector=True 
)

3.4 联合数据检索

基于2.2、2.3节的数据,联合检索

1. 向量检索

ret = collection.query( 
    vector=generate_embeddings(text), 
    topk=10, 
    filter='isPublic=1 or AT-GROUPID-9890=1 or AT-DEPID-9899=1', # 条件过滤,公开数据或USERID为989121和DEPID为9899可见的数据 
    output_fields=['title', 'fileId'], 
    include_vector=True 
)

四、总结

  采用动态Field,可解决数据可见性问题,总结如下:

  4.1 优点

  1. Field为KeyValue结构,设置和扩展灵活,可支持上百个。

  2. 通过Key过滤,效率较高,对业务无侵入

  3. 兼容性好

 4.2 缺点

  1. 可见标签为动态Field,相对于预定义的Field会占用较多内存和磁盘,检索速度也有所影响。随着业务复杂的上升,橙语AI科研助手和PaperGPT的动态Field高达100个,业务高峰时段,出现资源异常,体验受到影响。

  2. 目前不支持黑名单业务场景

标签:embeddings,title,AI,isPublic,USERID,DEPID,权限,向量,fileId
From: https://blog.csdn.net/jionghan3855/article/details/144713444

相关文章

  • 2024 AI Agents,2025将是Agentic系统之年
    2025年将是Agentic系统之年。一切正在就位:ComputerUse、MCP(模型上下文协议)、改进的工具使用。是时候开始考虑构建这些系统了。Anthropic总结了2024年一些最佳实践,并分享了“如何构建有效的智能体(Buildingeffectiveagents)”:在过去的一年中,Anthropic与数十个跨行业的团队......
  • o3曝智商高达157,比肩爱因斯坦碾压99%人类!陶哲轩水平AI或出现
    来源|新智元o3智商竟有157,堪比爱因斯坦?今天,一张OpenAI模型智商图,在全网传遍了。基于编程竞赛Codeforces排名评分图中清晰可见,能够达到o3智商水平的人类大约占比仅有0.0075%。13333人当中,也仅有1人IQ是o3级别的。对于GPT-4o,6人当中就有1人能够达到IQ115的水平。从G......
  • 2024,AI大模型的那些高光时刻~
    英伟达具身智能负责人JimFan大佬发起2024年TopAIMoments征集,说说你心目中的高光时刻~有网友分享了自己的心中AI高光时刻:第一篇论文被@IJCAIconf接受(AutoAgents:arXiv:2309.17288)Karpathy的“让我们复现GPT-2(124M)”-训练了我的第一个GPT级别的模型。karpathy......
  • stm32边缘AI
    STM32边缘AI是指基于STM32微控制器(MCU)或微处理器(MPU)实现的边缘人工智能解决方案。以下是对STM32边缘AI的详细解析:一、概念与定义边缘人工智能,又称为“边缘计算”,是指在边缘侧使用人工智能算法和模型处理和分析数据,而不是将数据传输到中央服务器进行处理。STM32边缘AI则是利用......
  • AI应用开发先了解这些概念:智能体、LLM、RAG、提示词工程
    什么是智能体(Agent)前排提示,文末有大模型AGI-CSDN独家资料包哦!一种基于LLM(LargeLanguageModel)的能够感知环境、做出决策并执行行动以实现特定目标的自主系统。与传统人工智能不同,AlAgent模仿人类行为模式解决问题,通过独立思考和调用工具逐步完成给定目标,实现自主操作......
  • 最新AI智能体开发案例:辅助写作神器!教你用Coze平台搭建「文匠智创 1.0」智能体!
     各位小伙伴们,大家好呀!我是疯狂老包。我精心打造的《疯狂AI智能体开发:100个实战案例,从入门到精通》正在开发中!要是你对AI应用搭建满怀热忱,渴望深入学习其中的奥秘与技巧,那就赶紧动动手指,关注我们的公众号吧,获取免费教程。 老包用扣子捏了一个辅助写作的智能体名字是:......
  • 我用壁纸样机神器+即梦ai爆单了!这个AI壁纸项目,零成本项目(附保姆级教程)
    重点:项目零成本,不需要你花一分钱!准备工作1、小红书账号(免费注册+免费开店)2、即梦ai(每天60点免费额度,可白嫖60张图)3、壁纸样机神器(免费生成壁纸展示图)第一步:账号搭建是制作和销售壁纸的第一步。以下是详细的步骤和建议:账号搭建:账号名称:选择一个有吸引力的账号名称,如@XX......
  • 我的AI工具箱Tauri版-ZoomImageSUPIR图像超细节缩放
    本教程基于自研的AI工具箱Tauri版进行ZoomImageSUPIR图像超细节缩放。ZoomImageSUPIR图像超细节缩放是一款专为图像处理优化的工具,支持图像的高精度放大与缩小操作,满足多场景需求。通过集成SUPIR(Super-resolutionImageProcessingwithIntelligentRefinement)技术,能够......
  • 我的AI工具箱Tauri版-ZoomImage8K图像8K放大
    本教程基于自研的AI工具箱Tauri版进行ZoomImage8K图像8K放大。ZoomImage8K图像8K放大是基于自研AI工具箱Tauri版开发的高性能图像放大工具,支持将低分辨率图像智能处理为8K超高清图像,适用于多种场景需求。通过精细化像素重建和深度学习算法,保证图像放大后细节清晰、......
  • 我的AI工具箱Tauri版-RemoveChangeBG抠图换背景
    本教程基于自研的AI工具箱Tauri版进行RemoveChangeBG人物抠图换背景。RemoveChangeBG人物抠图换背景是基于自研的AI工具箱Tauri版开发的一款强大图像处理工具。支持单张图片及批量处理模式,满足不同用户的多样化需求。通过大模型智能算法,精准识别并抠取人物或物品主体轮廓,......