利用AI智能体创建云端文档知识库并集成第三方数据源(上)

news2025/2/15 18:54:29

许多开发者在管理和集成多种云端的数据源时经常面对各种各样的困难,所以希望能够构建一个聊天机器人来协调这些数据源,针对业务问题并提供全面的答案。本文介绍了一种解决方案,帮助大家开发一个能够从文档和数据库中回答查询的聊天机器人,并且问大家介绍简单的部署流程。

亚马逊云科技Bedrock是一项全托管服务,通过单一API提供来自AI21 Labs、Anthropic、Cohere、Meta、Stability AI和亚马逊云科技等领先AI公司的高性能基础模型(FMs),并配备一整套构建生成式AI应用所需的安全、隐私和负责任AI能力。在文档检索方面,检索增强生成(Retrieval Augmented Generation,RAG)是一项关键技术,它允许大家从基础模型之外的数据源中检索信息,通过集成上下文相关的数据来增强提示词的回复。大家可以利用提示词工程防止AI模型幻觉现象,并确保答案基于源文档。对于数据库数据的检索,大家可以使用亚马逊云科技Bedrock提供的基础模型,将文本转换为符合约束条件的SQL查询,从而实现从Amazon Athena表中提取数据的能力,满足数据查询需求。

对于更复杂的查询,获取全面而准确的答案需要同时从文档和数据库中检索信息。亚马逊云科技Bedrock Agents是一款生成式AI工具,它使得生成式AI应用能够在企业系统和数据源之间执行多步骤任务。该集成方案能够综合多个信息来源,从而提供更详细、完整的答案。本文介绍了如何使用亚马逊云科技Bedrock,包括Bedrock Agents和Bedrock Knowledge Bases,构建一个自动化聊天机器人。该方案的代码可在亚马逊云科技官方GitHub仓库中获取。

解决方案概述

本文使用公开可用的数据,包括非结构化数据和结构化数据,以展示一个完全自动化的聊天机器人系统。我们的非结构化数据来自Amazon EC2 Linux实例用户指南和Amazon EC2实例类型文档,而结构化数据为EC2实例服务器定价信息。下图展示了解决方案的架构。

该架构展示了一个基于亚马逊云科技的云端完整部署解决方案,结合多个云服务。聊天机器人的主界面是一个基于Streamlit的应用程序,托管在Amazon Elastic Container Service(Amazon ECS)集群上,访问权限由应用程序负载均衡器(Application Load Balancer)管理。用户通过该界面提交查询后,会触发AWS Lambda调用函数,该函数与一个智能代理交互。智能代理会根据用户的查询,调用知识库获取信息,或者触发Agent Executor Lambda函数来执行相关任务。该函数根据预定义的API架构调用一组与代理关联的操作。知识库使用Amazon OpenSearch Service的无服务器索引作为其向量数据库基础。此外,Agent Executor函数会生成SQL查询,并在AWS Glue数据库中通过Athena执行,以返回相关数据。

使用AWS CDK部署解决方案

亚马逊云科技Cloud Development Kit(AWS CDK)是一个开源软件开发框架,可用于以代码方式定义云基础设施,并通过CloudFormation进行部署。我们的AWS CDK堆栈将部署以下亚马逊云科技服务的资源:

  • AWS Key Management Service(AWS KMS)
  • Application Load Balancer
  • Amazon Bedrock
  • Amazon Elastic Container Registry(Amazon ECR)
  • Amazon Elastic Container Service(Amazon ECS)
  • AWS Fargate
  • AWS Glue数据目录(用于AWS Glue数据库组件)
  • AWS Identity and Access Management(IAM)
  • AWS Lambda
  • Amazon OpenSearch Service
  • Amazon Simple Storage Service(Amazon S3)
  • Amazon Virtual Private Cloud(Amazon VPC)

请参考README.md文件中的部署指南,按照步骤使用AWS CDK部署该解决方案。完成所有必要的设置后,可以使用以下命令部署堆栈:

cdk deploy

亚马逊云科技Bedrock特性

亚马逊云科技Bedrock是一项全托管服务,通过单一API提供来自AI21 Labs、Anthropic、Cohere、Meta、Mistral AI、Stability AI和亚马逊云科技等领先AI公司的高性能基础模型(FMs),并配备构建生成式AI应用所需的一整套安全、隐私和负责任AI能力。

本节将介绍本解决方案中使用的一些关键亚马逊云科技Bedrock特性和资源。

亚马逊云科技Bedrock Agents

亚马逊云科技Bedrock Agents允许大家在应用程序中构建和配置自主代理。代理可以根据组织数据和用户输入帮助终端用户完成任务。代理可以协调基础模型、数据源、软件应用程序和用户对话之间的交互。

例如,大家可以向聊天机器人提出如下问题:“哪个EC2实例适用于机器学习模型推理,它的成本是多少?” 代理会将复杂任务拆解成以下步骤:

1. 查询EC2实例类型,检索适用于机器学习推理的实例类型。

Call the GET::ChatBotBedrockAgentActionGroup::getUc2Response function to get the latest EC2 instance type and pricing details for machine learning inference.

2. 查询文档,获取关于该实例的技术详情。

Call the GET::x_amz_knowledgebase_WSGY5QH4ZD::Search function to get recommendations on which EC2 instance type is best for machine learning inference.

3. 查询数据库,获取该实例的当前定价信息。

Return the recommended EC2 instance type and the pricing details to the user.

I have checked that I have access to the GET::ChatBotBedrockAgentActionGroup::getUc2Response and GET::x_amz_knowledgebase_WSGY5QH4ZD::Search functions.”

然后,代理会通过这三个步骤收集信息,并将其整合成最终答案:

“The AWS Inferentia and Trainium instances are well-suited for machine learning model inference workloads. The Inf1 and Trn1 instances deliver high performance inference using dedicated ML chips like Inferentia and Trainium at lower costs compared to GPU-based instances.According to the latest information, AWS Inferentia and Trainium instance prices range from $0.228 per hour for an inf1.xlarge instance to $24.78 per hour for a trn1n.32xlarge instance. The cheapest Inferentia instance is the inf1.xlarge at $0.228 per hour, while the most expensive is the inf2.48xlarge at $12.9813 per hour. The cheapest Trainium instance is the trn1.2xlarge at $1.3438 per hour, while the most expensive is the trn1n.32xlarge at $24.78 per hour.”

在创建代理之前,大家需要设置要添加到代理中的操作组(Action Groups)知识库(Knowledge Bases)

  • 操作组:定义大家希望代理帮助客户执行的任务。
  • 知识库:为代理提供一个可查询的信息存储库,以回答客户查询并优化生成的回复。更多信息请参考亚马逊云科技Bedrock Knowledge Bases。

完成AWS CDK部署后,大家可以通过以下步骤验证代理、知识库和操作组是否正确创建:

  1. 打开亚马逊云科技Bedrock控制台,在导航面板中选择Agents
  2. 选择已创建的代理名称。
  3. 选择工作草稿(Working Draft)
  4. 在工作草稿中查看已配置的操作组(Action Groups)知识库(Knowledge Bases)

亚马逊云科技Bedrock Knowledge Bases

亚马逊云科技Bedrock Knowledge Bases是一项完全托管的功能,能够帮助大家实现完整的RAG(检索增强生成)工作流,包括从数据摄取到检索和提示增强(prompt augmentation),无需自行构建数据源集成或管理数据流。本文的示例中,我们使用AWS CDK创建了一个亚马逊云科技Bedrock Knowledge Base,该知识库基于存储在S3桶中的EC2实例文档数据库。

以上就是利用AI智能体创建云端文档知识库并集成第三方数据源的上篇内容。本篇文章详细介绍了如何使用亚马逊云科技Bedrock Agents和Knowledge Bases,结合检索增强生成(RAG)方法,开发一个可以查询文档和数据库的聊天机器人。该解决方案可自动部署,并且能够结合知识库和操作组来执行复杂查询任务,从而提供精准、上下文相关的回答。欢迎大家继续关注小李哥的生成式AI应用安全系列,了解国际前沿的亚马逊云科技解决方案,关注我不要错过未来更多的干货内容! 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

聚铭网络入围2025年度江苏省政府采购信息安全设备协议供货名单

近日,2025年度江苏省党政机关、事业单位及团体组织信息安全设备框架协议采购项目入围结果公布。聚铭网络凭借自身专业实力和技术优势脱颖而出,成功入围22个分包。 此次采购项目是江苏省政府采购领域级别最高、覆盖面最广的项目之一。从资格评选到后期材料…

vue+springboot+webtrc+websocket实现双人音视频通话会议

前言 最近一些时间我有研究,如何实现一个视频会议功能,但是找了好多资料都不太理想,最终参考了一个文章 WebRTC实现双端音视频聊天(Vue3 SpringBoot) 只不过,它的实现效果里面只会播放本地的mp4视频文件&…

堡垒机调用xshell 无反应

安装sso_client 确认db_path.ini xhsell路径 如图调整为本机安装的路径即可。 实战问题: 操作完成之后 Chrome还是无法调用,使用360浏览器没问题。

python后端调用Deep Seek API

python后端调用Deep Seek API 需要依次下载 ●Ollama ●Deepseek R1 LLM模型 ●嵌入模型nomic-embed-text / bge-m3 ●AnythingLLM 参考教程: Deepseek R1打造本地化RAG知识库:安装部署使用详细教程 手把手教你:deepseek R1基于 AnythingLLM API 调用本地…

Easy系列PLC 线性变换功能块(模拟量相关功能块汇总)

线性转换函数S_RTR 线性转换函数S_RTR(SCL和ST代码)_线性函数的scl语言如何编写-CSDN博客文章浏览阅读440次。博客介绍了线性转换函数S_RTR,包括其在PLC中的应用,如何与工艺PID组合使用,以及在张力开环控制中的具体实践。还提到了函数的C99兼容性,并提供了S_RTR的功能块源…

【VB语言】EXCEL中VB宏的应用

【VB语言】EXCEL中VB宏的应用 文章目录 [TOC](文章目录) 前言一、EXCEL-VB1.实验过程2.代码 二、EXCEL-VB 生成.c.h文件1.实验过程2.代码 四、参考资料总结 前言 1.WPS-VB扩展包 提示:以下是本篇文章正文内容,下面案例可供参考 一、EXCEL-VB 1.实验过…

【人工智能】如何选择合适的大语言模型,是能否提高工作效率的关键!!!

DeepSeek R1入门指南 导读一、提示语差异1.1 指令侧重点不同1.2 语言风格差异1.3 知识运用引导不同 二、挑选原则2.1 模型选择2.2 提示语设计2.3 避免误区 结语 导读 大家好,很高兴又和大家见面啦!!! 在前面的内容中&#xff0c…

Unity使用反射进行Protobuf(CS/SC)协议,json格式

protobuf生成的协议,有挺多协议的.利用反射生成dto进行伪协议的响应 和 发送请求 应用场景: 请求(CS)_后端先写完了,前端还搞完时,可使用此请求,可自测 响应(SC)_可自行构建一个响应,对数据进行测试 // 请求 使用物品 CS message ReqUseItem{optional Opcodes MessageID1[def…

初学 mybatis

前言 回顾之前 不使用 mybatis 框架,我们是怎么通过Java 操作数据库的 "jdbc" 前提:使用maven 构建的项目 1 添加 关于jdbc 的依赖,以及辅助操作数据库的 commons-dubli jar包 截取 前后端项目 2 添加配置文件里面内容有&…

C语言进阶习题(4结构体)【1】通讯录的实现

目录 1.使用结构体实现通讯录功能2.思路3. 代码实现3.1 test.c3.2 contact.c3.3 contact.h 1.使用结构体实现通讯录功能 主要功能有:显示通讯录信息,增加通讯录中人的信息,删除通讯录中人的信息,查找通信录中信息,修改…

释放你的元数据:使用 Elasticsearch 的自查询检索器

作者:来自 Elastic Josh Asres 了解如何使用 Elasticsearch 的 “self-quering” 检索器来通过结构化过滤器提高语义搜索的相关性。 在人工智能搜索的世界中,在海量的数据集中高效地找到正确的数据至关重要。传统的基于关键词的搜索在处理涉及自然语言的…

1.14学习总结

日常刷题单 刷了题目后,对于排序方法更加熟练,手搓代码的速度也得到了提高。 感觉字符串还不熟练,高精度更是云里雾里,上升空间极大。 同时看见今晚有个入门难度的测试,去练了练手,想看看自己是什么成分&…

【Prometheus】prometheus黑盒监控balckbox全面解析与应用实战

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全…

游戏引擎学习第101天

回顾当前情况 昨天的进度基本上完成了所有内容,但我们还没有进行调试。虽然我们在运行时做的事情大致上是对的,但还是存在一些可能或者确定的bug。正如昨天最后提到的,既然现在时间晚了,就不太适合开始调试,所以今天我…

海康摄像头IPV6模式,手动,自动,路由公告

海康摄像头DS-2DC7220IW-A 网络设置中的IPv6配置选项。IPv6是互联网协议(IP)的第六版,用于替代IPv4,提供更多的IP地址和改进的网络功能。图片中的选项允许用户选择如何配置设备的IPv6网络连接: 手动:用户可…

架构设计系列(二):CI/CD

一、概述 CI/CD 是 持续集成(Continuous Integration) 和 持续交付/持续部署(Continuous Delivery/Continuous Deployment) 的缩写,是现代软件开发中的一套核心实践和工具链,旨在提高软件交付的效率、质量…

DDoS技术解析

这里是Themberfue 今天我们不聊别的,我们聊聊著名的网络攻击手段之一的 DDoS,看看其背后的技术细节。 DoS 了解 DDoS 前,先来讲讲 DoS 是什么,此 DoS 而不是 DOS 操作系统啊。1996年9月6日,世界第三古老的网络服务提供…

28 在可以控制 postgres 服务器, 不知道任何用户名的情况下怎 进入 postgres 服务器

前言 最近有这样的一个需求, 有一个 postgres 服务器 但是 不知道 他的任何的用户名密码, 但是我想要查询这台 postgres 服务器 然后 基于这个需求, 我们看一下 怎么来处理 pg_hba.conf 认证方式修改为 trust 首先将 postgres 服务器的认证方式修改为 trust 这时候 …

《图解设计模式》笔记(十)用类来表现

二十二、Command模式:命令也是类 一个类调用某方法,虽然调用结果会反映在对象的状态中,但不会留下工作的历史记录。 若有一个类表示“请进行这项工作”的“命令”,每一项想做的工作就不再是“方法的调用”这种动态处理了,而是一个表示命令的类的实例,即可以用“物”来表…

docker容器部署jar应用导入文件时候报缺少字体错误解决

如题,在导入文件时候报错如下: Handler dispatch failed; nested exception is java.lang.NoClassDefFoundError: Could not initialize class sun.awt.X11FontManager 经查是缺少对应字体,解决办法有两张: 第一种:…