_作者:Igor Alekseev 和 Babu Srinivasan,2023 年 11 月 17 日于[高级 (300)](https://aws.amazon.com/blogs/machine-learning/category/learning- levels/advanced-300/ "查看所有高级(300)帖子"), , , _
生成式 AI 模型有可能彻底改变企业的运营模式,但公司需谨慎考虑如何利用其潜力,同时克服诸如数据保护和确保 AI 生成内容质量等挑战。
增强检索生成(RAG) 框架通过外部数据丰富提示,来源于文档库、数据库或 API,使得基础模型在特定领域任务中更为有效。本文展示了 RAG模型的能力,并强调了 MongoDB Atlas 及其向量搜索功能的变革潜力。
是一套集成的数据服务,旨在加速并简化数据驱动应用的开发。MongoDB Atlas向量搜索与操作性数据存储无缝集成,消除了对单独数据库的需求。这种集成使得通过 实现强大的语义搜索成为可能,这是一种快速构建语义搜索和 AI 驱动应用的方法。
使企业能够构建、训练和部署机器学习 (ML) 模型。 提供预训练模型和数据,帮助快速入门机器学习。你可以通过 的 SageMaker JumpStart 登录页面查看、定制和部署这些预训练模型与数据,仅需几次点击。
是一种对话接口,帮助企业创建能够进行自然、高度仿真的交互的聊天机器人和语音助手。通过将 Amazon Lex 与生成式 AI整合,企业可以创建一个全面的生态系统,让用户输入无缝转化为连贯且与上下文相关的响应。
下图展示了解决方案架构。
删除)
接下来,我们将逐步讲解实施此解决方案及其组件的步骤。
要创建免费版 MongoDB Atlas 集群,请按照
的说明进行操作。设置数据库 和网络 。
你可以在 SageMaker JumpStart 模型、笔记本、解决方案 页面选择嵌入模型(ALL MiniLM L6 v2)。
![SageMaker JumpStart删除)
选择 部署 以部署该模型。
确认模型成功部署,并检查端点是否已创建。
删除)
是将文本或图像转换为向量表示的过程。以下代码可与 SageMaker JumpStart一起生成向量嵌入,并将创建的向量更新到每个文档中:
query_response =
query_endpoint_with_json_payload(json.dumps(payload).encode('utf-8'))
embeddings = parse_response_multiple_texts(query_response)
# 更新文档
update = {'$set': {vector_field_name: embeddings[0]}}
collection.update_one(query, update) ```
上述代码展示了如何在集合中更新单个对象。要更新所有对象,请按照 进行。
## MongoDB Atlas 向量搜索
是一个新功能,允许您在 MongoDB中存储和搜索向量数据。向量数据是一种在高维空间中表示点的数据类型。这种类型的数据通常用于机器学习和人工智能应用中。MongoDB Atlas向量搜索使用一种称为
(k-NN) 的技术来搜索相似的向量。k-NN通过查找与给定向量最相似的 k 个向量来工作。最相似的向量是那些在欧几里德距离上与给定向量距离最近的向量。
将向量数据存储在操作性数据旁边可以提升性能,减少在不同存储系统之间移动数据的必要性。这对需要实时访问向量数据的应用程序尤为有益。
## 创建向量搜索索引
下一步是为在前一步骤中创建的向量字段创建一个 。MongoDB 使用 `knnVector` 类型来索引向量嵌入。向量字段应表示为数字数组(仅 BSON int32、int64 或
double 数据类型)。
有关 `knnVector` 类型限制的更多信息,请参阅 。
以下代码是一个示例索引定义:
`json { "mappings": { "dynamic": true, "fields": { "egVector": { "dimensions":
384, "similarity": "euclidean", "type": "knnVector" } } } }`
请注意,维度必须与您的嵌入模型维度匹配。
## 查询向量数据存储
你可以使用
查询向量数据存储。该管道使用向量搜索索引进行语义搜索。
以下代码是一个示例搜索定义:
`json { $search: { "index": "<index name>", // 可选,默认为 "default" "knnBeta": {
"vector":
是预训练的大型语言模型(LLM),用于解决各种自然语言处理(NLP)任务,如文本摘要、问答和自然语言推理。这些模型有多种尺寸和配置可供选择。在此解决方案中,我们使用
的 FLAN-T5-XL 模型。
在 SageMaker JumpStart 中搜索 FLAN-T5-XL 模型。
![搜索
删除)
选择 **部署** 以设置 FLAN-T5-XL 模型。
删除)
检查模型是否成功部署并且端点处于活动状态。
删除)
## 创建 Amazon Lex 机器人
要创建 Amazon Lex 机器人,请完成以下步骤:
1. 在 Amazon Lex 控制台中选择 **创建机器人** 。
删除)
1. 输入 **机器人名称** 。
2. 在 **运行角色** 中,选择 **创建带有基本Amazon Lex 权限的角色** 。
删除)
3. 指定语言设置,然后选择 **完成** 。
删除)
4. 在 `NewIntent` 界面中添加示例发言,并选择 **保存意图** 。
删除)
5. 转到默认创建的 `FallbackIntent`,在 **实现** 部分切换 **活动** 。
删除)
6. 选择 **构建** ,并在构建成功后选择 **测试** 。
删除)
7. 测试前,选择设置图标。
删除)
8. 指定将与 MongoDB Atlas 和 LLM 交互的 函数。要创建 Lambda 函数,请遵循 。
![指定 AWS Lambda删除)
9. 现在你可以与 LLM 进行互动。
## 清理
要清理资源,请完成以下步骤:
1. 删除 Amazon Lex 机器人。
2. 删除 Lambda 函数。
3. 删除 LLM SageMaker 端点。
4. 删除嵌入模型 SageMaker 端点。
5. 删除 MongoDB Atlas 集群。
## 结论
在本文中,我们展示了如何创建一个简单的机器人,该机器人使用 MongoDB Atlas 向量搜索并与 SageMaker JumpStart的模型整合。这个机器人使你能够快速构建与不同 LLM 互动的原型,结合来自 MongoDB Atlas 的上下文。
如往常一样,我们欢迎 AWS 的反馈。请在评论区留下你的反馈和问题。
* * *
### 关于作者
![Igor删除)
**Igor Alekseev** 是 AWS 数据与分析领域的高级合作伙伴解决方案架构师。Igor在此角色中与战略合作伙伴合作,帮助他们构建复杂的、针对
AWS 的优化架构。在加入 AWS 之前,作为数据/解决方案架构师,他实施了多个大数据领域的项目,包括几个 Hadoop生态系统的数据湖。作为数据工程师,他参与了将 AI/ML 应用于欺诈检测和办公自动化的工作。
![Babu删除)
**Babu Srinivasan** 是 MongoDB 的高级合作伙伴解决方案架构师。在他当前的角色中,他与 AWS 合作构建 AWS 和
MongoDB解决方案的技术集成和参考架构。他在数据库和云技术方面拥有超过二十年的经验,热衷于为客户提供技术解决方案,与多个全球系统集成商(GSI)跨多个地区合作。
* * *
加载评论…
Leave a Reply