使用 LangChain、Amazon SageMaker JumpStart 和 MongoDB Atlas 语义搜索进行检索增强生成 | 亚马逊网络服务

使用 LangChain、Amazon SageMaker JumpStart 和 MongoDB Atlas 语义搜索进行检索增强生成 | 亚马逊网络服务

生成式人工智能 模型有可能彻底改变企业运营,但企业必须仔细考虑如何利用其力量,同时克服保护数据和确保人工智能生成内容的质量等挑战。

检索增强生成 (RAG) 框架通过来自多个来源(例如文档存储库、数据库或 API)的外部数据来增强提示,以使基础模型对特定于领域的任务有效。 这篇文章介绍了 RAG 模型的功能,并强调了 MongoDB Atlas 及其矢量搜索功能的变革潜力。

MongoDB地图集 是一套集成的数据服务,可加速和简化数据驱动应用程序的开发。 其矢量数据存储与操作数据存储无缝集成,无需单独的数据库。 这种集成通过以下方式实现了强大的语义搜索功能 矢量搜索,一种构建语义搜索和人工智能应用程序的快速方法。

亚马逊SageMaker 使企业能够构建、训练和部署机器学习 (ML) 模型。 亚马逊SageMaker JumpStart 提供预训练的模型和数据来帮助您开始使用 ML。 您可以通过 SageMaker JumpStart 登录页面访问、自定义和部署预先训练的模型和数据 亚马逊SageMaker Studio 只需点击几下。

亚马逊Lex 是一个对话界面,可帮助企业创建进行自然、逼真交互的聊天机器人和语音机器人。 通过将 Amazon Lex 与生成式 AI 集成,企业可以创建一个整体生态系统,将用户输入无缝转换为连贯且与上下文相关的响应。

解决方案概述

下图说明了解决方案体系结构。

解决方案概述

在以下部分中,我们将逐步介绍实施此解决方案及其组件的步骤。

设置 MongoDB 集群

要创建免费层 MongoDB Atlas 集群,请按照以下说明操作 创建集群。 设置数据库 ACCESS 和网络 ACCESS.

部署 SageMaker 嵌入模型

您可以在上选择嵌入模型(ALL MiniLM L6 v2) SageMaker JumpStart 模型、笔记本、解决方案 页面上发布服务提醒。

SageMaker JumpStart 模型、笔记本、解决方案

部署 部署模型。

验证模型是否已成功部署并验证端点是否已创建。

模型已成功部署

向量嵌入

向量嵌入 是将文本或图像转换为矢量表示的过程。 通过以下代码,我们可以使用 SageMaker JumpStart 生成向量嵌入,并使用为每个文档创建的向量更新集合:

payload = {"text_inputs": [document[field_name_to_be_vectorized]]}
query_response = query_endpoint_with_json_payload(json.dumps(payload).encode('utf-8'))
embeddings = parse_response_multiple_texts(query_response) # update the document
update = {'$set': {vector_field_name :  embeddings[0]}}
collection.update_one(query, update)

上面的代码显示了如何更新集合中的单个对象。 要更新所有对象,请遵循 说明.

MongoDB矢量数据存储

MongoDB Atlas 矢量搜索 是一项新功能,允许您在 MongoDB 中存储和搜索矢量数据。 矢量数据是一种表示高维空间中的点的数据。 此类数据通常用于机器学习和人工智能应用程序。 MongoDB Atlas Vector Search 使用一种称为 k最近邻居 (k-NN)来搜索相似的向量。 k-NN 的工作原理是查找与给定向量最相似的 k 个向量。 最相似的向量是按照欧几里得距离最接近给定向量的向量。

将矢量数据存储在操作数据旁边可以减少在不同存储系统之间移动数据的需要,从而提高性能。 这对于需要实时访问矢量数据的应用程序尤其有利。

创建矢量搜索索引

下一步是创建一个 MongoDB 向量搜索索引 在您在上一步中创建的矢量场上。 MongoDB 使用 knnVector 输入索引向量嵌入。 向量字段应表示为数字数组(仅限 BSON int32、int64 或 double 数据类型)。

请参阅 查看 knnVector 类型限制 有关限制的更多信息 knnVector 类型。

以下代码是索引定义示例:

{ "mappings": { "dynamic": true, "fields": { "egVector": { "dimensions": 384, "similarity": "euclidean", "type": "knnVector" } } }
}

请注意,尺寸必须与嵌入模型尺寸相匹配。

查询矢量数据存储

您可以使用以下命令查询矢量数据存储 矢量搜索聚合管道。 它使用向量搜索索引并执行 语义搜索 在矢量数据存储上。

以下代码是示例搜索定义:

{ $search: { "index": "<index name>", // optional, defaults to "default" "knnBeta": { "vector": [<array-of-numbers>], "path": "<field-to-search>", "filter": {<filter-specification>}, "k": <number>, "score": {<options>} } }
}

部署 SageMaker 大语言模型

SageMaker JumpStart 基础模型 是预先训练的大型语言模型 (LLM),用于解决各种自然语言处理 (NLP) 任务,例如文本摘要、问答和自然语言推理。 它们有多种尺寸和配置可供选择。 在此解决方案中,我们使用 拥抱脸 FLAN-T5-XL 型号。

在 SageMaker JumpStart 中搜索 FLAN-T5-XL 模型。

搜索 FLAN-T5-XL

部署 设置 FLAN-T5-XL 模型。

部署

验证模型已成功部署并且端点处于活动状态。

使用 LangChain、Amazon SageMaker JumpStart 和 MongoDB Atlas 语义搜索进行检索增强生成 |亚马逊网络服务柏拉图区块链数据智能。垂直搜索。人工智能。

创建 Amazon Lex 自动程序

要创建 Amazon Lex 自动程序,请完成以下步骤:

  1. 在Amazon Lex控制台上,选择 创建机器人.

创建机器人

  1. 针对 机器人名称,输入名称。
  2. 针对 运行时角色, 选择 创建具有基本 Amazon Lex 权限的角色.
    使用 LangChain、Amazon SageMaker JumpStart 和 MongoDB Atlas 语义搜索进行检索增强生成 |亚马逊网络服务柏拉图区块链数据智能。垂直搜索。人工智能。
  3. 指定您的语言设置,然后选择 完成 .
    使用 LangChain、Amazon SageMaker JumpStart 和 MongoDB Atlas 语义搜索进行检索增强生成 |亚马逊网络服务柏拉图区块链数据智能。垂直搜索。人工智能。
  4. 在中添加示例话语 NewIntent 用户界面并选择 保存意图.
    使用 LangChain、Amazon SageMaker JumpStart 和 MongoDB Atlas 语义搜索进行检索增强生成 |亚马逊网络服务柏拉图区块链数据智能。垂直搜索。人工智能。
  5. 导航到 FallbackIntent 默认情况下为您创建的并切换 现有的 ,在 履行 部分。
    切换活动
  6. 建立 构建成功后,选择 测试.
    构建和测试
  7. 在测试之前,选择齿轮图标。
    使用 LangChain、Amazon SageMaker JumpStart 和 MongoDB Atlas 语义搜索进行检索增强生成 |亚马逊网络服务柏拉图区块链数据智能。垂直搜索。人工智能。
  8. 指定 AWS Lambda 函数将与 MongoDB Atlas 和 LLM 交互以提供响应。 要创建 lambda 函数,请执行以下操作 这些步骤.
    9. 指定AWS Lambda函数
  9. 您现在可以与 LLM 互动。

清理

要清理您的资源,请完成以下步骤:

  1. 删除 Amazon Lex 自动程序。
  2. 删除 Lambda 函数。
  3. 删除 LLM SageMaker 端点。
  4. 删除嵌入模型 SageMaker 端点。
  5. 删除 MongoDB Atlas 集群。

结论

在博文中,我们展示了如何创建一个简单的机器人,该机器人使用 MongoDB Atlas 语义搜索并与 SageMaker JumpStart 的模型集成。 该机器人允许您在 SageMaker Jumpstart 中快速构建与不同 LLM 的用户交互原型,同时将它们与源自 MongoDB Atlas 的上下文配对。

一如既往,AWS 欢迎反馈。 请在评论部分留下您的反馈和问题。


关于作者

使用 LangChain、Amazon SageMaker JumpStart 和 MongoDB Atlas 语义搜索进行检索增强生成 |亚马逊网络服务柏拉图区块链数据智能。垂直搜索。人工智能。

伊戈尔·阿列克谢耶夫 是 AWS 数据和分析领域的高级合作伙伴解决方案架构师。 Igor 正在与战略合作伙伴合作,帮助他们构建复杂的 AWS 优化架构。 在加入 AWS 之前,作为一名数据/解决方案架构师,他在大数据领域实施了许多项目,包括 Hadoop 生态系统中的多个数据湖。 作为一名数据工程师,他参与了将 AI/ML 应用于欺诈检测和办公自动化的工作。


使用 LangChain、Amazon SageMaker JumpStart 和 MongoDB Atlas 语义搜索进行检索增强生成 |亚马逊网络服务柏拉图区块链数据智能。垂直搜索。人工智能。巴布·斯里尼瓦桑(Babu Srinivasan)
是 MongoDB 的高级合作伙伴解决方案架构师。 在目前的职位上,他正在与 AWS 合作,为 AWS 和 MongoDB 解决方案构建技术集成和参考架构。 他在数据库和云技术方面拥有超过二十年的经验。 他热衷于为与跨多个地区的多个全球系统集成商 (GSI) 合作的客户提供技术解决方案。

时间戳记:

更多来自 AWS机器学习