Elasticsearch:RBAC 和 RAG - 最好的朋友

作者:来自 Elastic Jeff Vestal

检索增强生成 (RAG) 通过提供额外的上下文或信息来增强大型语言模型 (LLM) 的知识,从而提高响应质量。 尽管 LLMs 拥有令人印象深刻的能力,但也有其局限性,例如无法在培训后保留新信息以及对不熟悉的主题产生错误答案的倾向。 为了克服这些限制,专有的、相关的和更新的数据可以与提示相结合,从而为 LLM 奠定基础,并导致更准确和用户友好的响应。

有关 RAG 的详细信息,请查看我们关于 RAG 的搜索实验室博客。

RBAC - Role-Based Access Control,基于角色的访问控制。

数据保护

保护私人信息应该是任何公司的首要任务。 泄露敏感信息造成的损害可能会带来经济处罚、声誉受损、竞争优势丧失,甚至在个人信息泄露时对个人造成伤害。 由于这些和许多其他原因,有必要考虑你要向 LLM 发送哪些数据。

如今,用户在将 LLM 集成到应用程序中时有多种选择。 最简单的方法是使用公共 LLM 提供商。 虽然这通过简单地连接到 API 消除了所有管理问题,但用户必须注意如何使用他们发送给这些提供商之一的数据。 LLM 不会立即保留信息,但这并不意味着发送到该服务的所有提示都不能被记录并用于未来的培训交互。 通过这些公共服务,用户应该只发送他们不在意的可用于未来训练迭代的信息,从而使这些知识可供任何其他用户使用。

一些服务提供商业计划,其中可能附带法律合同,禁止 LLM 提供商保留和训练发送到其服务的数据。 超大规模企业提供了将这些生成式 LLM 之一部署到客户租户的选项,并承诺隔离客户数据。 这些选项为数据隐私提供了比公共服务更全面的保护。 尽管如此,用户和公司必须相信 LLM 提供商将遵守他们的承诺。

如今,与 LLM 集成的最安全的方式是公司自行运营 LLM。 这应该确保不会保留任何提示信息,并且不会在他们不知情的情况下向外部发送数据。 这种额外的保护伴随着更高的复杂性和管理责任。 公司必须知道如何部署和扩展 LLM。 他们必须能够监控它是否在要求的响应时间内继续响应。 自己运行模型并不意味着它会更具成本效益,但它确实将控制权移回到操作员手中。

无论部署类型如何,通过增强 LLM 的知识来奠定模型仍然同样重要。

内部 vs. 公开数据

如前所述,每家公司都有不公开的信息。 如果最终应用程序供内部员工使用,则非公开数据应保持非公开状态。 如果最终用户是外部的,则在决定内部信息是否可以与外部共享时必须小心。 公共数据已经公开,因此将其发送给 LLM 不会带来额外的风险。

个人身份信息 - PII

个人身份数据 (personal identifiable data - PII) 是当公司失去控制权时就会成为新闻的数据类型。 这通常是个人独有的信息。 虽然所有 PII 都应受到保护,但有些 PII 比其他 PII 更为重要。 使用名字通常不是问题。 但是,将名字、姓氏和社会安全号码发送给公共 LLM 并不是一个好主意。

客户特定数据

与 PII 类似,它对于客户来说是唯一的,但这些数据通常不太敏感。 示例包括过去的订单信息、旅行类型偏好和应用程序设置。

保护这些和其他数据类型是基于角色的访问控制的用武之地。

没有 RBAC 的 RAG

让我们首先看看只有一个用户访问级别的 RAG 应用程序如何工作。 如果你要创建一个将在公共网站上运行并回答文档问题的聊天机器人,它可能只会连接到一个数据集:你的文档。 在此设置中让每个用户处于相同的访问级别就可以了。 每个人都可以访问文档,任何人都可以看到答案。

但是,如果你正在创建一个可以访问人力资源数据的内部聊天机器人,让员工可以提问,该怎么办? 一些人力资源数据应该向所有人开放,但有些数据仍仅限于特定角色,例如经理或人力资源员工。

下面,一位用户问道:“What is our work from home policy? - 我们在家工作的政策是什么?”

这是任何员工都应该有权访问的一般问题,因此只要他们有权访问该应用程序,他们就可以提出问题并获得答案。 请注意,我们可以通过要求用户登录来实现 RBAC,但为了简单起见,我们假设他们只能在工作网络内访问此聊天机器人。

现在,我们假设只有经理才有权访问有关员工薪酬的信息。 当非经理或工程师询问有关未实施 RBAC 的薪酬问题时会发生什么?

聊天机器人返回了看起来有用的答案; 但是,请记住,只有经理才能访问此详细信息!

Elastic RBAC 特性

在我们研究启用 RBAC 的补偿问题的答案之前,我们先简要讨论一下 Elasticsearch 的 RBAC 功能。

  • 集群级别 - cluster level
    • 最通用的访问级别是集群级别。 用户或帐户可以登录集群吗?
  • 索引级别 - index level
    • 一旦可以登录,该帐户是否可以读取访问中的数据,是否可以写入、修改和删除索引?
  • 文档级别 - document level
    • 当用户可以查询索引时,他们可以检索索引中的所有文档,还是只能读取与一组特定元数据匹配的文档?
    • 在我们的博客中详细信息 - Elasticsearch 中基于文档级属性的访问控制
  • 字段级
    • 当文档作为查询的一部分返回时,帐户可以查看所有字段还是仅选择字段?
  • 属性
    • 使用属性来限制对搜索查询和聚合中文档的访问。
Elasticsearch 中 RBAC 级别的通用表示

有关演示 RBAC 如何影响允许不同组的用户查询的索引和文档的简单示例,请查看此处搜索实验室存储库中的示例 Jypyter notebook。

Elasticsearch 可以与 Active Directory、LDAP、SAML 等更多外部身份验证系统集成。 与这些提供商集成时,外部组将映射到内部 Elasticsearch 角色。 与在应用程序级别管理数据访问相比,这具有多个优势。 首先,外部角色和内部角色之间的映射只需要配置一次。 仅当创建新索引模式或需要修改组访问类型时才需要更新。 其次,通过在 Elasticsearch 中管理组级别的访问,只有用户加入或离开组时才需要更新其成员资格。 他们的访问权限会自动调整以反映他们当前的组从属关系。

第二点尤其重要。 当访问角色发生变化时,权限需要实时传播到所有系统。 RBAC 确保此更改生效,而不必更改多个程序中的访问权限。

要详细了解 RBAC 如何融入 Excellent 搜索中心,请查看此处的 Excellent 博客。

我们的文档更详细地介绍了每个访问级别。

RAG 与 RBAC

现在我们了解了 Elasticsearch 可以采用的各种访问级别,让我们回到 RAG 示例。 在最后一个示例中,我们的 Slackbot 向我们的工程师提出了一个有用的薪酬问题。 但是,由于此信息应仅限于经理,因此不应提供该详细信息!

我们可以通过多种方式配置对此数据的限制,但我们将保持 RBAC 示例简单,为 HR 数据集设置两个访问级别,并将数据拆分为两个索引。 一种索引是 hrdata-general,一种是 hrdata-restricted。 每个员工都可以访问 hrdata-general,只有经理才能访问 hrdata-restricted。 用户可以根据公司的 LDAP 设置和 Elasticsearch 用户/角色之间的角色映射查询一个或两个索引。

当工程师再次询问补偿时,这一次实施了适当的 RBAC,它不会提供受限信息。

当经理登录此聊天机器人并询问相同的问题时,该用户的 RBAC 设置允许他们访问受限的 HR 数据集。

此答案正确地限制为经理角色,而如果没有 RBAC 限制,所有员工都可以查询受限数据集并获取响应。

此示例显示索引级访问如何帮助确保哪些索引组可以访问。 然而,如上所述,Elasticsearch 提供了许多附加且更精细的方法来保护你的数据。 请留意本博客的后续内容,我们将在其中讨论并提供一些高级 RBAC 配置的代码示例。

结束语

在 Elasticsearch 中集成检索增强生成 (RAG) 与基于角色的访问控制 (RBAC),为内部和外部应用程序提供了强大且安全的解决方案。 RAG 增强了大型语言模型的功能,而 RBAC 确保对敏感数据的访问受到严格控制,从而维护公司信息的完整性和机密性。 这种组合在数据保护至关重要的生产环境中尤其重要。 正如我们所演示的,在 Elasticsearch 中实施 RBAC 既实用又简单,使其成为任何希望利用 AI 的力量同时确保数据隐私的公司的理想选择。

我们鼓励您进一步探索此功能,并考虑如何将其应用于你独特的业务需求。 请记住,搜索人工智能不仅仅是生成智能响应,还在于保护你宝贵的数据资产。

准备好将 RAG 构建到您的应用程序中了吗? 想要尝试使用向量数据库的不同 LLMs?
在 Github 上查看我们的 LangChain、Cohere 等示例 notebook,并参加即将开始的 Elasticsearch 工程师培训!

原文:RBAC and RAG - Best Friends — Elastic Search Labs

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/9560.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

3、TS中的类型断言

TS中的类型断言 声明类型的时候 如果没有标识类型 他是什么类型? //没有赋值的变量默认都是undefined 类型是any let a: any undefined//const是一个常量 不能被修改 他的类型是字面量类型 const声明变量必须赋值 //let 声明变量 可以修改 所以类型范围推倒的结…

全球化战略中的技术支柱:出海企业的网络技术解决方案

随着全球市场的一体化,中国的电商与游戏行业越来越倾向于扩展国际市场,这一过程被称为“出海”。成功的出海战略不仅需要强大的市场洞察和文化适应能力,还需依赖高效的网络技术,包括SOCKS5代理、代理IP、以及全面的网络安全策略。…

Android RadioButton,定制按钮样式

1.定义选中和非选中的样式选择器&#xff1b;res/drawable/custom_radio_button.xml <?xml version"1.0" encoding"utf-8"?> <selector xmlns:android"http://schemas.android.com/apk/res/android"><item android:drawable&q…

OceanBase 中的ROWID与Oracle的差异与如何迁移

1. ROWID 1.1 OB和Oracle中rowid的区别 正如大家所知道的&#xff0c;OceanBase兼容Oracle的rowid特性&#xff0c;但在其生成规则上却存在不同&#xff0c;具体表现如下&#xff1a; OceanBase ● 定义&#xff1a;OceanBase&#xff08;简称 OB&#xff09;的rowid是通过…

2.mysql--备份恢复

完全备份&#xff1a;备份所有数据 增量备份&#xff1a;备份上次备份后&#xff0c;所有新产生的数据 差异备份&#xff1a;备份上次完全备份后&#xff0c;所有新产生的数据 1、物理备份恢复 [roothost1 ~]# cp -r /var/lib/mysql /root/mysql_all.bak [roothost1 ~]# scp …

idea使用git不提示账号密码登录,而是输入token问题解决

idea 或者 webstream 等全家桶软件 使用git 推送代码时&#xff0c;不提示账号密码登录&#xff0c;而是输入token问题解决 你的代码仓库是gitlab 然后打开修改代码后推送时&#xff0c;会默认使用gitlab插件&#xff0c;所以提示数据token 解决方式就是把gitlab插件取消使用这…

ETL如何执行Java脚本

ETLCloud提供了执行 Java 脚本的方式&#xff0c;让用户能够灵活地处理数据并实现各种复杂的数据处理任务。 ETLCloud在数据处理领域的应用优势主要体现在以下几个方面&#xff1a; 灵活性&#xff1a;通过执行Java脚本&#xff0c;用户能够灵活定制数据处理逻辑&#xff0c;满…

使用 backtrace 调测 SIGSEGV 信号 ---- 打印寄存器值

#define _GNU_SOURCE #include <stdio.h> #include <signal.h> #include <unistd.h> #include <stdlib.h> #include <execinfo.h> #include <ucontext.h> /* * backtrace和bacetrace_symbols打印出回溯信息 */ #if 0 #include <e…

监控异地组网怎么组网?

监控异地组网是指在不同地域的网络环境下&#xff0c;实现对监控设备的远程访问和管理。在传统的网络环境下&#xff0c;由于网络限制和设备配置等问题&#xff0c;监控设备的远程访问往往受到一定的限制和困扰。为了解决这个问题&#xff0c;引入了天联组网技术&#xff0c;实…

.Net WinFrom中DataGridView控件的熟练学习

是一个熟练掌握DataGridView的Demo 1、里边讲述了如果使用DataGridView数据导出到Excel中&#xff0c;以及Excel数据导入到数据中 2、实现了DataGridView复选框批量删除&#xff0c;按钮进入详细信息&#xff0c;按钮删除等功能 3、实现了根据数据的条件不同行显示的颜色不同以…

黑马点评项目笔记

短信登录 基于session的短信登录 发送验证码&#xff0c;session保存验证码。验证验证码&#xff0c;session保存用户信息。校验登录状态&#xff0c;判断session里是否保存用户信息。 使用ThreadLocal保存用户信息&#xff0c;是方便后面业务获取当前用户&#xff0c;避免传…

安卓开发--按键背景图片,按键其他属性,按键按键按下变色

前面已经介绍了一个空白按键工程的建立以及响应方式&#xff0c;可以参考这里&#xff1a;安卓开发–新建工程&#xff0c;新建虚拟手机&#xff0c;按键事件响应。 安卓开发是页面跳转是基础&#xff01;&#xff01;&#xff01;所以本篇博客介绍利用按键实现页面跳转&#…

添加对象方法

添加对象方法的方法如下&#xff0c;这是一个通用模式 注意灵活运用。

数据库调优-SQL语句优化

2. SQL语句优化 sql 复制代码 # 请问这两条SQL语句有什么区别呢&#xff1f;你来猜一猜那条SQL语句执行查询效果更好&#xff01; select id from sys_goods where goods_name华为 HUAWEI 麦芒7 魅海蓝 6G64G 全网通; ​ select id from sys_goods where goods_id14967325985…

Redis学习1——redis简介、基础

介绍 redis简介 Redis(Remote Dictonary Server) 是由Salvatore Sanfilippo开发的key-value缓存数据库&#xff0c;基于C语言开发。目前市面上&#xff0c;Redis和MongoDB是当前使用最广泛的NoSQL&#xff0c;而就Redis技术而言&#xff0c;它的性能十分优越&#xff0c;可以…

仿真相关知识积累

融合模型是什么 集成学习 融合模型&#xff0c;也称为集成学习&#xff0c;是一种将多个基模型组合在一起以提升整体模型性能的方法。这种思想通过不同的策略将多个相对较弱的模型&#xff08;学习器&#xff09;结合起来&#xff0c;从而达到较强的模型性能。

rngd: Error writing /dev/tpm0

检查数据库时发现messages中一直有rngd报错&#xff0c;rngd一直未配置&#xff0c;直接关闭了 /var/log/messages-20240414:Apr 11 04:59:49 hydb2 rngd: Error writing /dev/tpm0 /var/log/messages-20240414:Apr 12 07:31:39 hydb2 rngd: Error writing /dev/tpm0 /var/log…

shell-for循环语句练习题

1.计算从1到100所有整数的和 [rootlocalhost ~]# vim 1.sh #!/bin/bash sum0 #定义变量sum初始值为0 for i in {1..100} #for循环 i取值从1到100 do sum$[ isum ] #在每次循环中&#xff0c;变量i的值会依次取1到100的整数值。 #sum是一个累加器&#xff0c;初始值…

echarts自定义图例显示名称、数值、占比

先上代码 legend: {orient: vertical,left: 10,top:20,data: data,textStyle: {color: #9FB7D5 // 设置图例文字颜色为白色},// type: plain, // 设置图例类型为普通类型itemWidth: 10, // 设置图例项的宽度itemHeight: 10, // 设置图例项的高度formatter: function(name) {let…

Python专题:十、字典(2)

字典定义x{} get()函数 get&#xff08;参数一&#xff0c;参数二&#xff09; 参数一&#xff1a; 需要查找的关键词 参数二&#xff1a; 如果关键词不存在get返回的默认值 字典的更新 update&#xff08;&#xff09;函数&#xff0c;字典y的元素&#xff0c;去更新字…