深入探讨使用 Amazon Bedrock 知识库的向量数据存储 机器学习博客

更新时间: 2026-01-27 14:33:20 浏览:32

深入探讨使用 Amazon Bedrock 知识库的向量数据存储

作者 Vishwa Gupta Abhishek Madan Ginni Malik Isaac Privitera Satish Sarapuri日期 2024年10月11日发布于 Amazon Aurora、Amazon Bedrock、Amazon OpenSearch 服务

关键要点

在各行业的客户正在通过生成式AI进行实验,以加速和改善业务成果。生成式AI被广泛应用于以下领域: 内容创作 个性化服务 智能助手 问答系统 摘要生成 自动化与成本效率 生产力提升 定制化 创新等

通过检索增强生成RAG架构,生成式AI解决方案能够充分利用外部知识源来提升内容质量和上下文理解。本文深入探讨了Amazon Bedrock 知识库,该工具帮助存储和检索向量数据库中的数据,以强化基于RAG的工作流,旨在提升大型语言模型LLM在推断过程中对组织数据集的响应。

向量数据存储的优势

在处理复杂数据场景时会遇到多种挑战,例如数据量、维度、模态及其他接口复杂性。例如: 数据如图像、文本和音频需要以高效的方式进行结构化表示; 理解数据点之间的语义相似性对于生成式AI任务至关重要; 随着数据量的急剧增长,扩展性成为重大挑战; 传统数据库可能难以高效处理生成式AI任务的计算需求,例如训练复杂模型或对大数据集进行推断; 生成式AI应用通常需要在数据集中搜索和检索相似项目或模式; 生成式AI解决方案常常需要集成多个组件和技术。

向量数据库在满足生成式AI解决方案的数据需求方面发挥了重要作用,使得高效表示、语义理解、扩展性、互操作性、搜索与检索、模型部署变得更为容易。向量数据库提供了以下功能:

功能说明数据表示以结构化和高效的形式表示数据,支持计算处理和操作语义相似性测量通过对数据进行向量编码来测量语义相似性,以促成比较和分析大规模数据集处理高效处理大规模数据集,支持信息的快速处理和分析互操作性提供统一接口以存储和访问数据表示,促进AI系统不同组件间的互操作性搜索与检索支持支持高效的搜索与检索操作,快速准确地探索大数据集

AWS提供了Amazon Bedrock,这是一个完全托管的服务,便于安全地大规模部署生成式AI应用。在Amazon Bedrock的无服务器体验下,您可以对适合您用例的顶尖基础模型FMs进行实验和评估,并使用微调和RAG等技术私密定制,构建能够与企业系统和数据源相互操作的智能代理。

本文深入探讨了作为Amazon Bedrock知识库一部分的向量数据库选项及其适用用例,并展示相关代码示例。Amazon Bedrock知识库通过抽象掉构建管道的重负,提供开箱即用的RAG解决方案,从而加快您的应用上市场的时间。

RAG中的知识库系统

RAG通过引用其训练数据源以外的权威知识库,在生成响应前优化LLM的回答。LLM在训练时使用大量数据和数十亿参数以生成任务所需的原始输出。RAG扩展了LLM已存在的大部分功能,使其适用于特定领域或组织的内部知识库,而无需重新训练模型。这是一种提高LLM输出有效性的方法,使其在各种上下文中依然保持相关性、准确性和实用性。

下面的图示描述了RAG过程的高层步骤,旨在获取组织内部或外部知识库的内容并传递给LLM。

飞兔加速器永久免费版

工作流程包括以下步骤:1 用户通过聊天机器人用户界面或自动化流程发出提示并请求LLM应用的响应。2 LLM驱动的代理检查是否需要从知识源获取额外信息。3 代理决定采用哪种知识源。4 代理调用从知识源检索信息的过程。5 相关信息增强上下文从知识源返回给代理。6 代理将来自知识源的增强上下文添加到提示中,并将其传递给LLM端点以获取回应。7 LLM回应被传回给代理。8 代理将LLM回应返回给聊天机器人用户界面或自动化流程。

RAG用例中的向量数据库

在RAG架构中,外部知识可以来自关系数据库、搜索和文档存储或其他数据存储。然而,简单地使用传统方法如关键词搜索或倒排索引来存储和搜索这些外部数据可能效率低下,并且可能无法捕获数据点之间的真正语义关系。推荐使用向量数据库,因为它们支持相似性搜索和密集向量表示。

以下是一些将数据加载到向量数据库中时,对于RAG用例具有优势的场景: 大型知识库:处理包含数百万或数十亿文档或段落的大型知识库时,向量数据库能够提供高效的相似性搜索能力。 非结构化或半结构化数据:向量数据库特别适合于处理非结构化或半结构化数据,如文本文档、网页或自然语言内容。通过将文本数据转换为密集向量表示,向量数据库能够有效捕获文档或段落之间的语义关系,从而实现更准确的检索。 多语言知识库:对于需要处理跨多个语言的知识库的RAG系统,向量数据库具有优势。使用多语言模型或跨语言嵌入,向量数据库可以促进跨语言的有效检索,从而实现知识转移。 语义搜索与相关性排序:向量数据库在语义搜索和相关性排序任务中表现突出。通过将文档或段落表示为密集向量,检索组件可以利用向量相似性度量来识别最语义相关的内容。 个性化和上下文感知的检索:向量数据库支持在RAG系统中的个性化和上下文感知检索。通过将用户配置文件、偏好或上下文信息纳入向量表示,检索组件可以优先考虑并呈现特定用户或上下文的相关内容。

虽然向量数据库在这些场景中提供了优势,但其实施和有效性可能取决于使用的特定向量嵌入技术、数据的质量和表示以及用于索引和检索操作的计算资源。通过Amazon Bedrock知识库,您可以为FMs和代理提供来自公司私有数据源的上下文信息,从而进行RAG,以提供更相关、准确和定制的响应。

使用RAG的Amazon Bedrock知识库

Amazon Bedrock知识库是一种完全托管的能力,帮助实现整个RAG工作流,从数据摄取到检索和提示增强,无需构建自定义集成或管理数据流。知识库在各种用例中至关重要,例如客户支持、产品文档、内部知识共享和决策系统。与知识库结合的RAG工作流主要包括两个步骤:数据预处理和运行时执行。

以下图示展示了数据预处理工作流。

在预处理过程中,来自数据源的信息结构化数据、非结构化数据或文档首先被拆分为可管理的块。这些块使用Amazon Bedrock中可用的嵌入模型转换为嵌入,最后嵌入被写入向量数据库索引,同时保持与原始文档的映射。这些嵌入用于确定查询与数据源文本之间的语义相似性。这些步骤均由Amazon Bedrock管理。

以下图示展示了运行时执行的工作流。

在LLM的推理阶段,当代理确定需要额外信息时,它会联系知识库。该过程将用户查询转换为向量嵌入,使用Amazon Bedrock嵌入模型查询向量数据库索引,查找与用户查询语义相似的块,将检索到的块转换为文本并增强用户查询,然后回应代理。

在预处理阶段需要嵌入模型以将数据存储到向量数据库中,并在运行时执行阶段生成用户查询的嵌入以搜索向量数据库索引。嵌入模型将高维和稀疏数据如文本映射为密集向量表示,以便高效地存储和处理,并编码数据的语义意义和关系到向量空间,以启用有意义的相似性搜索。这些模型支持将不同类型的数据如文本、图像、音频和视频映射到同一个向量空间,从而实现多模态查询与分析。Amazon Bedrock知识库提供行业领先的嵌入模型,以支持诸如语义搜索、RAG、分类和聚类等用例,并提供多语言支持。

Amazon Bedrock知识库的向量数据库选项

截至本文撰写之时,Amazon Bedrock知识库提供五种集成选项: Vector Engine for Amazon OpenSearch Serverless、Amazon Aurora、MongoDB Atlas、Pinecone和Redis Enterprise Cloud,未来还将有更多向量数据库选项。本节讨论了这些向量数据库的用例、特性以及设置和检索信息的步骤。Amazon Bedrock通过提供一组通用API、业界领先的嵌入模型、安全性、治理和可观察性,使得采用这些选项变得简单。

在向量数据库中索引数据时,元数据的角色

元数据在将文档加载到Amazon Bedrock的向量数据存储时发挥着至关重要的作用。它提供了关于文档的额外上下文和信息,可用于各种目的,如过滤、排序和增强搜索能力。

深入探讨使用 Amazon Bedrock 知识库的向量数据存储 机器学习博客

以下是加载文档到向量数据存储时元数据的一些关键用途:

关键用途说明文档识别元数据可以包括每个文档的唯一标识符,例如文档ID、URL或文件名。这些标识符可用于唯一标识和检索向量数据存储中的特定文档。内容分类元数据可以提供关于文档内容或类别的信息,例如主题、领域或话题。此信息可用于根据特定类别或领域组织和过滤文档。文档属性元数据可以存储与文档相关的额外属性,例如作者、出版日期、语言或其他相关信息。此属性可用于在向量数据存储中进行过滤、排序或分面搜索。访问控制元数据可以包含与文档相关的访问权限或安全级别的信息。从而控制对敏感或受限文档的访问。相关性评分元数据可用于增强搜索结果的相关性评分。例如,如果用户在特定日期范围内或由特定个人撰写的文档中进行搜索,则元数据可用于优先考虑和排名最相关的文档。数据丰富元数据可用于通过引入额外的上下文信息来丰富文档的向量表示。这可能提高搜索结果的准确性和质量。数据来源和审计元数据可以提供关于文档的来源和来源的信息,例如源系统、数据摄取管道或其他应用于数据的变换。这些信息对于数据治理、审计和合规性非常有价值。

先决条件

请按以下步骤设置先决资源和配置。

配置 Amazon SageMaker Studio

第一步是设置一个Amazon SageMaker Studio笔记本,以运行本文的代码。您可以在任何Amazon Bedrock知识库可用的AWS区域中设置该笔记本。

完成前置条件来设置Amazon SageMaker。

完成快速设置或自定义设置,以启用您的SageMaker Studio域和用户配置文件。 您还需要为SageMaker Studio域分配一个AWS身份和访问管理IAM角色。您可以在SageMaker控制台上识别该角色。在“域”页面中,打开您的域。在“域设置”选项卡上,IAM角色ARN将被列出。 此角色需要IAM、Amazon关系数据库服务Amazon RDS、Amazon Bedrock、AWS Secrets Manager、Amazon简单存储服务Amazon S3和Amazon OpenSearch Serverless的权限。

修改角色权限,添加以下策略:

IAMFullAccessAmazonRDSFullAccessAmazonBedrockFullAccessSecretsManagerReadWriteAmazonRDSDataFullAccessAmazonS3FullAccess

下面的内联策略:

json{ Version 20121017 Statement [ { Sid OpenSearchServeless Effect Allow Action aoss Resource } ]}

在SageMaker控制台中,选择导航窗格中的Studio。

选择您的用户配置文件,然后选择打开Studio。 这将打开一个新浏览器标签页,进入SageMaker Studio Classic。

运行SageMaker Studio应用程序。

当应用程序运行时,选择打开。 JupyterLab将在新标签中打开。

下载笔记本文件,以供本文使用。

在导航窗格中选择文件图标,然后选择上传图标,上传笔记本文件。 ![](