亚马逊云科技:向量数据存储在生成式人工智能应用程序中的作用

生成式人工智能深受大众喜爱,并且由于具备回答问题、写故事、创作艺术品甚至生成代码的功能,推动了行业的转变,那么如何才能在自己的企业中充分地利用生成式人工智能等应运而生问题。许多客户已经积累了大量特定领域的数据(财务记录、健康记录、基因组数据、供应链等),这为他们提供了独特而有价值的视角,有助于他们深入探究自身的业务及更广泛的行业。对于生成式人工智能策略而言,这些专有数据可以带来优势,成为差异化因素。

 同时,许多客户还注意到,在生成式人工智能应用程序中,向量数据存储或向量数据库的使用越来越普遍。他们想知道,这些解决方案如何适应他们围绕着生成式人工智能的整体数据战略。在这篇文章中,介绍了向量数据库在生成式人工智能应用程序中的作用,以及亚马逊云科技解决方案如何帮助您充分利用生成式人工智能的强大功能。

 生成式人工智能应用程序

 所有生成式人工智能应用程序的核心都是大型语言模型(LLM)。LLM是一种机器学习(ML)模型,利用大量的内容(例如可通过互联网访问的所有内容)进行训练。在利用海量可公开访问的数据训练之后,LLM被视为基础模型(FM)。这些模型可以针对各种使用场景进行调整和优化。Amazon SageMaker JumpStart提供各种预先训练的专有开源基础模型,可以在此基础上进行构建。这样的模型包括Stability AI的Text2Image(用于根据文本提示生成逼真的图像),以及Hugging Face的Text2Text Flan T-5(用于文本生成)。Amazon Bedrock是使用FM构建和扩展生成式人工智能应用程序的最简单方法。借助该服务,可以通过API访问AI21 Labs、Anthropic、Stability AI和Amazon Titan的模型。

 尽管生成式人工智能应用程序单纯依赖FM就可以获得广泛的现实世界知识,但是,要想针对特定领域的主题或者专业化主题获得准确的结果,就需要对其进行定制。此外,互动内容越专业,出现幻觉(结果缺乏准确性,但看起来似乎非常正确)的频率就越高。那么,如何自定义生成式人工智能应用程序以实现领域专业化呢?

 使用向量数据存储带来领域专业化

 提示工程(也称为情境内学习)可能是最简单的一种方法,用于将生成式人工智能应用程序植根到特定领域的环境中并提高准确性。尽管这种技术无法完全消除幻觉,但是可以将语义含义范围缩小到您的特定领域。

 就其内核而言,FM根据一组输入词元来推断出下一个词元。在这种情况下,词元是指任何具有语义含义的元素,例如文本生成中的单词或短语。提供的情境相关性越高,推断出的下一个词元与情境相关的可能性也就越大。查询FM时使用的提示应包含输入词元,以及尽可能多的情境相关数据。

 情境数据通常来自内部数据库或数据湖,这是托管特定领域数据的系统。只需通过附加这些数据存储中的其他特定领域数据就可以扩充提示,但是向量数据存储可帮助您使用语义相关的输入来设计提示。此方法称为检索式增强生成(RAG,Retrieval Augmented Generation)。在实际应用中,可能会设计一个提示,使用与情境相关的个性化数据(例如用户个人资料信息)和具有相似语义的数据。

 对于生成式人工智能的使用,特定领域数据必须编码为一组元素,每个元素在内部表示为向量。该向量包含跨一组维度(数字数组)的一组数值。下图演示的示例中,首先将情境数据转换为语义元素,然后再转换为向量。

 这些数值用于在多维向量空间中,映射元素彼此之间的关系。当向量元素具有语义(它们表达了一种含义)时,邻近度就会成为情境关系的指标。以这种方式使用时,此类向量被称为嵌入。例如,在表示杂货或烹饪数据领域情境的多维空间中,“Cheese”的语义元素可以放在“Dairy”的语义元素附近。根据特定领域情境,语义元素可以是单词、短语、句子、段落、整个文档、图像或其他完全不同的东西。将特定领域的数据集拆分为有意义的元素,这些元素可以相互关联。例如,下图说明了在烹饪情境中简化的向量空间。

 

 因此,要为提示生成相关的情境,需要查询数据库,并在向量空间中查找与输入密切相关的元素。借助向量数据存储系统,可以大规模存储和查询向量,并使用高效的最近邻查询算法以及合适的索引来改善数据检索。任何具有这些向量相关功能的数据库管理系统都可以是向量数据存储。许多常用的数据库系统都提供了这些向量功能以及其他功能。在具备向量功能的数据库中存储特定领域数据集,这种做法可以带来的一个好处是,向量将位于源数据附近。您可以使用其他元数据来扩充向量数据,而无需查询外部数据库,还可以简化数据处理管道。

 为了快速开始使用向量数据存储,亚马逊云科技公布了Amazon OpenSearch无服务器的向量引擎。在正式发布后,该引擎会提供一个简单API,用于存储和查询数十亿个嵌入。此外,还有以下选项可用于满足更高级的向量数据存储需求:

  • Amazon Aurora PostgreSQL兼容版关系数据库,带有pgvector开源向量相似度搜索扩展插件

  • 带有k-NN(k-最近邻)插件的Amazon OpenSearch Service(一种分布式搜索和分析服务),以及Amazon OpenSearch无服务器的向量引擎

  • Amazon Relational Database Service(Amazon RDS)for PostgreSQL关系数据库,带有pgvector扩展插件

 嵌入应存储在靠近源数据的位置。因此,决定哪种选项适合您的因素包括:目前存储数据的位置以及对这些数据库技术的熟悉程度、向量维度的扩展、嵌入数量、性能需求。

 为RAG使用向量数据存储

 可以使用嵌入(向量)来提高生成式人工智能应用程序的准确性。下图展示了此数据流。

 获取特定领域的数据集(上图的右侧,用蓝色表示),将其拆分为语义元素,然后使用FM计算这些语义元素的向量。然后,将这些向量存储在向量数据存储中,这样就能够执行相似度搜索。

 在生成式人工智能应用程序(上图的左侧,用橙色表示)中,获取最终用户提出的问题,使用与数据集相同的算法将其拆分为语义元素(词元化),然后在向量数据存储中,查询输入元素在向量空间中的最近邻。借助存储,可以获得具有情境相似性的语义元素,然后将其添加到设计的提示中。此过程进一步使得LLM建立在特定领域情境之上,这样LLM更有可能输出准确且与情境相关的内容。

 在向量数据存储中,在最终用户的关键路径上,使用并发读取查询执行相似度搜索。使用嵌入来填充向量数据存储以及保持更新数据更改的批处理过程,主要是对向量数据存储的数据写入。这种使用模式的各个方面以及前面提到的注意事项(例如熟悉度和规模)决定了哪种服务适合您:是Aurora PostgreSQL兼容数据库、OpenSearch Service、OpenSearch无服务器的向量引擎还是Amazon RDS for PostgreSQL。

 向量数据存储注意事项

 对于向量数据存储,本次介绍的使用模式还带来了一些独特而重要的注意事项。

 使用的特定领域的数据量,以及用于将这些数据拆分为语义元素的过程,决定了向量数据存储需要支持的嵌入数量。特定领域的数据随着时间的推移不断增长和变化,向量数据存储也必须适应这种增长。在大规模使用时,这会影响索引效率和性能。特定领域的数据集产生数亿甚至数十亿个嵌入的情况并不少见。可以使用分词器来拆分数据,自然语言工具包(NLTK,Natural Language Toolkit)提供了多个可供使用的通用分词器。不过也可以使用其他工具。归根结底,合适的分词器取决于特定领域数据集中包含何种语义元素,如前所述,这可能是单词、短语、文本段落、整个文档或具有独立含义的任何数据细分。

 另一个需要考虑的重要因素是嵌入向量的维数。不同的FM生成具有不同维数的向量。例如,all-MiniLM-L6-v2模型生成的向量有384个维度,而Falcon-40B向量有8192个维度。向量的维度越大,它所能表示的情境就越丰富,直至达到某个临界点。最终会看到收益递减和查询延迟增加。这最终会导致维数灾难(对象似乎稀疏分布且不相似)。要执行语义相似度搜索,通常需要具有密集维数的向量,但您可能需要减小嵌入维度,以便数据库能够高效地处理此类搜索。

 另一个考虑因素是否需要精确相似的搜索结果。向量数据存储中的索引功能可显著加快相似度搜索的速度,但它们也会使用近似最近邻(ANN,Approximate Nearest Neighbor)算法来生成结果。ANN算法以性能和内存效率换取准确性。这些算法无法保证每次都返回最近邻。

 最后要考虑的是数据治理。特定领域数据集可能包含高度敏感的数据,例如个人数据或知识产权。在向量数据存储接近现有特定领域数据集的情况下,可以将访问权限、质量和安全控制扩展到向量数据存储,从而简化操作。在许多情况下,无法在不影响数据的语义含义的情况下剥离此类敏感数据,这随之会降低准确性。因此,对于创建、存储和查询嵌入的系统,了解和控制流经其中的数据流非常重要。

 使用Aurora PostgreSQL或Amazon RDS for PostgreSQL及pgvector

 Pgvector是一款开源的PostgreSQL扩展插件,由社区提供支持,可用于Aurora PostgreSQL和Amazon RDS for PostgreSQL。该扩展插件对PostgreSQL进行扩展,提供了名为vector的向量数据类型,三个用于相似度搜索的查询运算符(Euclidian、负内积和余弦距离),以及ivfflat(倒向文件和存储向量)索引机制,使向量可以更快地执行近似距离搜索。尽管可以存储最多1.6万个维度的向量,但只能对2000个维度进行索引以提高相似度搜索性能。实际上,客户倾向于使用具有较少维度的嵌入。使用Amazon SageMaker和pgvector在PostgreSQL中构建人工智能驱动的搜索一文深入研究了这个扩展插件,是一个不错的资源。

 如果已经在关系数据库(尤其是PostgreSQL)上进行了大量投入,并且在该领域拥有丰富的专业知识,那么应该考虑为向量数据存储使用Aurora PostgreSQL与pgvector扩展插件。此外,高度结构化的特定领域数据集本质上也更适合使用关系数据库。如果需要使用特定社区版本的PostgreSQL,Amazon RDS for PostgreSQL也是一个不错的选择。相似度搜索查询(读取)同样可以水平扩展,但需要遵循单个数据库集群中Aurora支持的最大只读副本数(15),以及复制链中Amazon RDS支持的最大只读副本数(15)。

 Aurora PostgreSQL还支持Amazon Aurora Serverless v2,这是一种按需自动扩展配置,可以根据负载自动调整数据库实例的计算和内存容量。此配置简化了操作,因为在大多数使用场景中,不再需要针对峰值进行预置或执行复杂的容量规划。

 借助Amazon Aurora机器学习(Aurora ML)功能,可以通过SQL函数调用托管在Amazon SageMaker中的机器学习模型。可以使用该功能来调用FM,直接从数据库生成嵌入。可以将这些调用打包到存储过程中,也可以将它们与其他PostgreSQL功能集成,这样向量化过程就可以完全从应用程序中抽象出来。借助Aurora ML内置的批处理功能,甚至可能无需从Aurora导出初始数据集,即可对其进行转换来创建初始向量集。

 将OpenSearch Service与k-NN插件和OpenSearch无服务器

 的向量引擎结合使用

 k-NN插件使用自定义knn_vector数据类型,扩展OpenSearch这一开源的分布式搜索和分析套件,使您能够将嵌入存储在OpenSearch索引中。该插件还提供了三种执行k最近邻相似度搜索的方法:近似k-NN、Script Score k-NN(准确)和无痛扩展(准确)。OpenSearch包括非度量空间库(NMSLIB,Non-Metric Space Library)和Facebook AI Research的FAISS库。您可以使用不同的距离搜索算法来找到最适合需求的算法。这个插件也可以在OpenSearch Service中使用。Amazon OpenSearch Service的向量数据库功能说明一文是很好的资源,可使用其来深入了解这些功能。

 由于OpenSearch的分布式特性,对于具有大量嵌入的向量数据存储库来说,这是一个很好的选择。索引可以水平扩展,这样就可以处理更多的吞吐量,用于存储嵌入和执行相似度搜索。对于想要更深入地控制执行搜索所用的方法和算法的客户而言,这也是一个很好的选择。搜索引擎专为低延迟、高吞吐量的查询而设计,为此在事务行为上进行了权衡。

 OpenSearch无服务器是一种按需的无服务器配置,消除了预置、配置和调整OpenSearch域的操作复杂性。只需先创建索引集合,然后就可以开始填充索引数据。新公布的OpenSearch无服务器的向量引擎作为一种新的向量集合类型提供,同时还包括了搜索和时间序列集合。该引擎提供了一种简便的方法,可以着手使用向量相似度搜索。这为Amazon Bedrock提供了易于操作的配对方法,无需机器学习或向量技术方面的高级专业知识,即可将提示工程集成到生成式人工智能应用程序中。借助向量引擎,可以在单个API调用中轻松查询向量嵌入、元数据和描述性文本,从而获得更准确的搜索结果,同时降低应用程序堆栈的复杂性。

 在带有k-NN插件的OpenSearch中,向量在使用nmslib和faiss引擎时最多支持1.6万个维度,在使用Lucene引擎时最多支持1024个维度。Lucene提供OpenSearch的核心搜索和分析功能,以及向量搜索。OpenSearch使用自定义的REST API执行大多数操作,包括相似度搜索。它在与OpenSearch索引交互时实现了更好的灵活性,同时可以重复利用现有的构建分布式Web应用程序的技能。

 如果需要将语义相似度搜索与关键字搜索使用场景相结合,OpenSearch也是一个很好的选择。生成式人工智能应用程序的提示工程涉及情境数据的检索和RAG。例如,客户支持座席应用程序可以提供以前具有相同关键字的支持案例,以及具有相似语义的支持案例,以此来构建提示,这样推荐的解决方案就会基于合适的情境。

 通过Neural Search插件(实验版本),可以将机器学习语言模型直接集成到OpenSearch工作流中。使用此插件,OpenSearch会自动为在摄取和搜索期间提供的文本创建向量。然后,它会无缝地将向量用于搜索查询。这可以简化RAG中使用的相似度搜索任务。

 此外,如果偏好特定领域数据上的完全托管式的语义搜索体验,则应考虑使用Amazon Kendra。该服务提供了开箱即用的语义搜索功能,具备先进的文档和段落排名功能,消除了管理文本提取、段落拆分、获取嵌入和管理向量数据存储的开销。可以使用Amazon Kendra来满足语义搜索需求,并将结果打包到设计的提示中,从而以最少的操作开销最大限度地发挥RAG的优势。使用Amazon Kendra、LangChain和大型语言模型,在企业数据上快速构建高精度的生成式人工智能应用程序一文更深入地探讨了这个使用场景。

 最后,LangChain支持带有pgvector的Aurora PostgreSQL和Amazon RDS for PostgreSQL、OpenSearch无服务器的向量引擎以及带有k-NN的OpenSearch Service。LangChain是一个流行的Python框架,可基于LLM开发具备数据感知能力的代理式应用程序。

 小结

 嵌入应在靠近特定领域数据集的位置存储和管理。这样一来,就可以将嵌入数据与其他元数据组合,而无需使用额外的外部数据来源。同样,数据不是静态的,而是会随着时间的推移发生变化,将嵌入存储在靠近源数据的位置可以简化数据管道,从而使嵌入保持最新状态。

 带有pgvector的Aurora PostgreSQL和Amazon RDS for PostgreSQL,OpenSearch无服务器的向量引擎以及带有k-NN插件的OpenSearch Service,是满足向量数据存储需求的理想选择,但哪种解决方案最为适合最终将取决于使用场景和优先事项。如果选择的数据库没有向量功能,这篇文章中讨论的选项涵盖了熟悉的SQL和NoSQL范围,而且很容易上手,没有太多的操作开销。无论选择哪个选项,向量数据存储解决方案都需要维持由应用程序调度的并发吞吐量。使用完整的嵌入集合大规模验证解决方案,以确保相似度搜索响应延迟符合预期要求。

 同时,可以将提示工程与SageMaker JumpStart和Amazon Bedrock提供的基础模型结合使用,以便能够构建创新的生成式人工智能解决方案,且无需投资于大量的机器学习技能即可让客户满意。

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

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

相关文章

Kubernetes(k8s)集群部署----->超详细

Kubernetes(k8s)集群部署----->超详细 一、资源准备二、安装准备2.1 主机环境设置2.1.1 关闭操作系统防火墙、selinux2.1.2 关闭swap交换分区2.1.3 允许iptables检测桥接流量(可选) 2.2 安装Docker环境2.3 安装Kubeadm…

『npm』一条命令快速配置npm淘宝国内镜像

📣读完这篇文章里你能收获到 一条命令快速切换至淘宝镜像恢复官方镜像 文章目录 一、设置淘宝镜像源二、恢复官方镜像源三、查看当前使用的镜像 一、设置淘宝镜像源 npm config set registry https://registry.npm.taobao.org服务器建议全局设置 sudo npm config…

Error: Cannot find module ‘E:\Workspace_zwf\mall\build\webpack.dev.conf.js‘

执行:npm run dev E:\Workspace_zwf\zengwenfeng-master>npm run dev> mall-app-web1.0.0 dev E:\Workspace_zwf\zengwenfeng-master > webpack-dev-server --inline --progress --config build/webpack.dev.conf.jsinternal/modules/cjs/loader.js:983thr…

9:00面试,9:06就出来了,问的问题有点变态。。。

从小厂出来,没想到在另一家公司又寄了。 到这家公司开始上班,加班是每天必不可少的,看在钱给的比较多的份上,就不太计较了。没想到12月一纸通知,所有人不准加班,加班费不仅没有了,薪资还要降40…

阿里云国际版无法远程连接Windows服务器的排查方法

如果您遇到紧急情况,需要尽快登录Windows实例,请参见以下操作步骤,先检查ECS实例的状态,然后通过云助手向Windows实例发送命令或通过VNC登录实例,具体步骤如下: 步骤一:检查ECS实例状态 无论何…

【ARM Trace32(劳特巴赫) 使用介绍 13 -- Trace32 断点 Break 命令篇】

文章目录 1. Break.Set1.1 TRACE32 Break1.1.1 Break命令控制CPU的暂停1.2 Break.Set 设置断点1.2.1 Trace32 程序断点1.2.2 读写断点1.2.2.1 变量被改写为特定值触发halt1.2.2.2 设定非值触发halt1.2.2.4 变量被特定函数改写触发halt1.2.3 使用C/C++语法设置断点条件1.2.4 使用…

[NAND Flash 2.1] NAND Flash 闪存改变了现代生活

依公知及经验整理,原创保护,禁止转载。 专栏 《深入理解NAND Flash》 <<<< 返回总目录 <<<< ​ 1989年NAND闪存面世了,它曾经且正在改变了我们的日常生活。 NAND 闪存发明之所以伟大,是因为,有了这项颠覆性的发明,才有了我们现如今用的智能手机…

(第68天)DBCA 克隆 PDB

介绍 在前面课程我们讲过使用 DBCA 创建数据库以及搭建 DataGuard 等功能,在多租户这章节,要讲下如何使用 DBCA 克隆 PDB。 18C 开始支持使用 DBCA 在本地 CDB 中克隆 PDB19C 升级支持使用 DBCA 克隆 PDB 到远端 CDB 中19C 升级支持使用 DBCA 重定向迁移 PDB 到远端 CDB 中本…

Kotlin+Apache HttpClient+代理服务器=高效的eBay图片爬虫

引入 你是否想过用Kotlin来编写爬虫程序&#xff1f;你是否想过用Apache HttpClient来处理HTTP请求和响应&#xff1f;你是否想过用代理服务器来绕过反爬措施&#xff1f;如果你的答案是肯定的&#xff0c;那么本文将为你介绍一种高效的eBay图片爬虫的实现方式&#xff0c;让你…

ISP去噪(2)_np 噪声模型

#灵感# ISP 中的去噪&#xff0c;都需要依赖一个噪声模型。很多平台上使用采集的raw进行calibration&#xff0c;可以输出这个模型&#xff0c;通常称为 noise profile。 名词解释&#xff1a; Noise profile 似乎可以翻译成“噪声档案”&#xff0c;其含义是某个噪声源&…

Verilog基础:寄存器输出的两种风格

相关文章 Verilog基础https://blog.csdn.net/weixin_45791458/category_12263729.html?spm1001.2014.3001.5482 Verilog中的寄存器操作一般指的是那些对时钟沿敏感而且使用非阻塞赋值的操作。例如状态机中的状态转移&#xff0c;实际上就是一种寄存器操作&#xff0c;因为这相…

vue 集成行政区域选择插件region和数据回显

故事&#xff1a;最近&#xff0c;项目需要进行行政区域围栏的绘制&#xff0c;由于老旧项目是利用js保存全国行政区域地址和编码&#xff0c;在选择器select进行匹配显示&#xff0c;但此方法复杂&#xff0c;因此选择集成区域插件region 步骤一&#xff1a;用命令安装region…

Idea maven打包时 报错 illegalArgumentException: Malformed \uxxxx encoding 解决方法

1 改变打包命令重新打包 在maven打包命令上加入 -e -X 2 找到报错类和方法 可以看到是 java.util.Properties#loadConvert类方法中有个throw new IllegalArgumentException( "Malformed \\uxxxx encoding.")&#xff0c;在此打断点 3 以Debug方式重新运行maven…

DNSLog漏洞探测(三)之XSS漏洞实战

DNSLog漏洞探测(三)之XSS漏洞实战 通过前面的学习&#xff0c;我们已经明白了什么是DNSLog平台&#xff0c;那么DNSLog平台到底能为我们做些什么呢&#xff1f; DNSLog的平台实际使用很长见的一种情况就是针对漏洞无回显的情况&#xff0c;我们通过让受害者的服务器主动发起对…

Navicat 技术指引 | 适用于 GaussDB 分布式的数据迁移工具

Navicat Premium&#xff08;16.3.3 Windows 版或以上&#xff09;正式支持 GaussDB 分布式数据库。GaussDB 分布式模式更适合对系统可用性和数据处理能力要求较高的场景。Navicat 工具不仅提供可视化数据查看和编辑功能&#xff0c;还提供强大的高阶功能&#xff08;如模型、结…

【性能测试】Jmeter 配置元件(一):计数器

Jmeter 配置元件&#xff08;一&#xff09;&#xff1a;计数器 在 Jmeter 中&#xff0c;通过函数 ${__counter(,)} 可以实现每次加 1 1 1 的计数效果。但如果步长不为 1 1 1&#xff0c;则要利用到我们的计数器。 函数作用${__counter(,)}计数器&#xff0c;每次加 1${__d…

【自定义Source、Sink】Flink自定义Source、Sink对redis进行读写操作

使用ParameterTool读取配置文件 Flink读取参数的对象 Commons-cli&#xff1a; Apache提供的&#xff0c;需要引入依赖ParameterTool&#xff1a;Flink内置 ParameterTool 比 Commons-cli 使用上简便&#xff1b; ParameterTool能避免Jar包的依赖冲突 建议使用第二种 使用Par…

概率论之 证明 正态分布的上a 分位点的对称的性质

公式(Z(a) -Z(1-a)) 表示正态分布的上(a)分位点与下(1-a)分位点在分布曲线上关于均值的对称性。 左侧 (Z(a))&#xff1a; 这是分布曲线上累积概率为(a)的那个点。也就是说&#xff0c;这是一个使得这个点及其左侧的面积占据整个曲线下方(a)的位置。 右侧 (Z(1-a))&#xff1…

宇视科技视频监控 main-cgi 文件信息泄露漏洞

宇视科技视频监控 main-cgi 文件信息泄露漏洞 一、产品简介二、漏概述三、复现环境四、漏洞检测手工抓包自动化检测 免责声明&#xff1a;请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失&#…

12月12日作业

设计一个闹钟 头文件 #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QTimerEvent> #include <QTime> #include <QTime> #include <QTextToSpeech>QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACEclass …