公司新闻

  • 首页
  • 公司新闻
  • 使用 MongoDB Atlas 构建 RAG 应用程序,现已在 Amazon Bedrock 的知

使用 MongoDB Atlas 构建 RAG 应用程序,现已在 Amazon Bedrock 的知

2026-01-27 13:02:47

使用 MongoDB Atlas 构建 RAG 应用程序,现已在 Amazon Bedrock 知识库中提供

关键要点

MongoDB Atlas 作为向量存储集成于 Amazon Bedrock 知识库,支持 RAGRetrieval Augmented Generation工作流。用户可以通过配置 MongoDB Atlas 来安全地连接私有数据源并利用基于 vector 的搜索。文章提供了详细的设置过程和代码示例,帮助开发者快速集成 RAG 应用程序。

基础模型FMs是在大量数据上进行训练并使用数十亿个参数。然而,为了回答客户与特定领域私有数据相关的问题,这些模型需要引用模型训练数据源之外的权威知识库。这通常通过一种称为检索增强生成RAG的技术实现。RAG 通过从组织的内部或专有数据源提取数据,扩展了基础模型在特定领域的能力,而无需重新训练模型。这是一种增强模型输出的成本效益方法,使其在各种上下文中保持相关性、准确性和实用性。

Amazon Bedrock 知识库 是一个完全托管的功能,帮助您实现整个 RAG 工作流,从数据摄取到检索和提示增强,而无需构建自定义的集成以连接数据源并管理数据流。

今天,我们宣布将在 Amazon Bedrock 知识库中提供 MongoDB Atlas 作为向量存储。通过 MongoDB Atlas 向量存储集成,您可以构建 RAG 解决方案,以安全地将组织的私有数据源连接到 Amazon Bedrock 中的基础模型。这项集成进一步扩展了 Amazon Bedrock 知识库支持的向量存储列表,包括 Amazon Aurora PostgreSQL 兼容版、Amazon OpenSearch Serverless 的向量引擎、Pinecone 和 Redis 企业云。

使用 MongoDB Atlas 和 Amazon Bedrock 知识库构建 RAG 应用程序MongoDB Atlas 中的向量搜索由 vectorSearch 索引类型驱动。在索引定义中,您必须指定包含向量数据的字段作为 向量类型。在您应用中使用 MongoDB Atlas 向量搜索之前,您需要创建一个索引,摄取源数据,创建向量嵌入并将其存储在 MongoDB Atlas 集合中。为了执行查询,您需要将输入文本转换为向量嵌入,并使用聚合管道阶段对字段进行向量搜索查询,这些字段在 vectorSearch 类型索引中被标记为 vector 类型。

借助 MongoDB Atlas 与 Amazon Bedrock 知识库的集成,大部分繁重的工作已经完成。一旦配置了向量搜索索引和知识库,您可以将 RAG 集成到您的应用程序中。在后台,Amazon Bedrock 会将您的输入提示转换为嵌入,查询知识库,用搜索结果作为上下文信息增强 FMs 的提示,并返回生成的响应。

接下来,我将引导您完成在 Amazon Bedrock 知识库中将 MongoDB Atlas 配置为向量存储的过程。

配置 MongoDB Atlas首先,创建一个 MongoDB Atlas 集群 在 AWS 上。选择 M10 专用集群 级别。集群创建后,创建一个 数据库 和 集合。接下来, 创建一个数据库用户 并授予其 对任何数据库的读写访问 角色。选择 密码 作为 身份验证方法。最后, 配置网络访问 来修改 IP 访问列表 添加IP地址 0000/0 以允许 任何地方 的访问。

使用以下索引定义来 创建向量搜索索引

json{ fields [ { numDimensions 1536 path AMAZONBEDROCKCHUNKVECTOR similarity cosine type vector } { path AMAZONBEDROCKMETADATA type filter } { path AMAZONBEDROCKTEXTCHUNK type filter } ]}

配置知识库创建一个 AWS Secrets Manager 密钥 来安全存储 MongoDB Atlas 数据库用户凭据。选择 其他 作为 密钥类型。创建一个 Amazon S3 存储桶 并上传 Amazon Bedrock 文档用户指南 PDF。稍后,您将使用知识库询问有关 Amazon Bedrock 的问题。

您也可以使用其他您选择的文档,因为知识库 支持多种文件格式包括文本、HTML 和 CSV。

导航到 Amazon Bedrock 控制台 并参考 Amazon Bedrock 用户指南 来配置知识库。在 选择嵌入模型并配置向量存储 中,选择 Titan Embeddings G1 Text 作为嵌入模型。从数据库列表中选择 MongoDB Atlas。

输入 MongoDB Atlas 集群的基本信息主机名、数据库名等以及您之前创建的 AWS Secrets Manager 密钥的 ARN。在 元数据字段映射 属性中,输入特定于向量存储的详细信息,它们应与您之前使用的向量搜索索引定义相匹配。

使用 MongoDB Atlas 构建 RAG 应用程序,现已在 Amazon Bedrock 的知

启动知识库创建。一旦完成,同步数据源S3 存储桶数据与 MongoDB Atlas 向量搜索索引。

一旦同步完成,导航到 MongoDB Atlas 确认数据已被摄取到您创建的集合中。

注意每个 MongoDB Atlas 文档中的以下属性:

AMAZONBEDROCKTEXTCHUNK 包含每个数据块的原始文本。AMAZONBEDROCKCHUNKVECTOR 包含数据块的向量嵌入。AMAZONBEDROCKMETADATA 包含源归属和丰富查询能力的附加数据。

测试知识库现在是时候通过 查询知识库 来询问有关 Amazon Bedrock 的问题。您需要选择一个基础模型。我在这种情况下选择了 Claude v2,并使用“Amazon Bedrock 是什么”作为我的输入查询。

如果您使用的是不同的源文档,请相应地调整问题。

您还可以更改基础模型。例如,我切换到 Claude 3 Sonnet。注意输出中的区别,并选择 显示源详情 以查看每个脚注引用的块。

将知识库集成到应用程序中要构建基于 Amazon Bedrock 知识库的 RAG 应用程序,您可以使用 RetrieveAndGenerate API,这允许您查询知识库并获取响应。

以下是使用 AWS SDK for PythonBoto3 的示例:

pythonimport boto3

bedrockagentruntime = boto3client( servicename=bedrockagentruntime)

def retrieveAndGenerate(input kbId) return bedrockagentruntimeretrieveandgenerate( input={ text input } retrieveAndGenerateConfiguration={ type KNOWLEDGEBASE knowledgeBaseConfiguration { knowledgeBaseId kbId modelArn arnawsbedrockuseast1foundationmodel/anthropicclaude3sonnet20240229v10 } } )

response = retrieveAndGenerate(Amazon Bedrock 是什么? BFT0P4NR1U)[output][text]

如果您希望进一步自定义您的 RAG 解决方案,可以考虑使用 Retrieve API,该 API 返回您可以用于 RAG 工作流其余部分的语义搜索响应。

pythonimport boto3

bedrockagentruntime = boto3client( servicename=bedrockagentruntime)

def retrieve(query kbId numberOfResults=5) return bedrockagentruntimeretrieve( retrievalQuery={ text query } knowledgeBaseId=kbId retrievalConfiguration={ vectorSearchConfiguration { numberOfResults numberOfResults } } )

response = retrieve(Amazon Bedrock 是什么? BGU0Q4NU0U)[retrievalResults]

注意事项 MongoDB Atlas 集群级别 此集成需要至少 M10 的 Atlas 集群级别。 AWS PrivateLink 在此演示中,MongoDB Atlas 数据库 IP 访问列表 被配置为允许来自 任何地方 的访问。针对生产部署,AWS PrivateLink 是让 Amazon Bedrock 与您的 MongoDB Atlas 集群建立安全连接的推荐方式。请参阅 Amazon Bedrock 用户指南在 MongoDB Atlas 下获取详细信息。 向量嵌入大小 向量索引和嵌入模型的维度大小应相同。例如,如果您计划使用 Cohere Embed该模型的维度大小为 1024作为知识库的嵌入模型,请确保相应地配置向量搜索索引。 元数据过滤器 您可以 为源文件添加元数据,以便根据应用的元数据过滤器检索定义良好的语义相关块。有关如何使用元数据过滤器的详细信息,请参阅 文档。

现在可用MongoDB Atlas 向量存储在 Amazon Bedrock 知识库中已在美国东部弗吉尼亚州北部和美国西部俄勒冈州区域提供。请务必查看 完整区域列表 以获取未来的更新。

了解更多信息 MongoDB Atlas 在 AWS Marketplace 上 Amazon Bedrock 知识库产品页面 Amazon Bedrock 知识库文档

尝试使用 MongoDB Atlas 集成的 Amazon Bedrock 知识库!请将反馈发送至 AWS rePost for Amazon Bedrock 或通过您通常的 AWS 联系人,并与生成式 AI 开发者社区进行互动,访问 communityaws。

魔方加速器

Abhishek

Abhishek Gupta

在他的职业生涯中,Abhishek 曾在工程、产品管理和开发者倡导方面工作。他的兴趣包括分布式数据系统和云原生平台。他是一位开源贡献者,热衷于技术写作,自 2016 年以来一直热爱 Go 编程语言。您可以通过 LinkedIn 或 Twitter @abhitweeter 与他联系。

正在加载评论