Recap Series
- 第 02 场:使用 Terraform 实现 AWS 合规
- 第 03 场:从新手到构建者:一段精彩的云上之旅
- 第 04 场:团队优先的无服务器工程:Laravel 与 Bref
- 第 05 场:活动开场:AWS Community Day Hong Kong 2025
- 第 06 场:Agent-to-Agent:在 AWS 上构建可互操作的 AI
- 第 07 场:利用另一类遥测数据,借助 AI Agent 更快改进
- 第 08 场:告别氛围编程:使用 Kiro 进行规范驱动开发
- 第 09 场:使用 MCP 与 AI 智能体进行自动化测试
- 第 10 场:电信安全现代化:机器学习驱动的方法
- 第 11 场:重新思考生成式 AI 智能体:RAG 与 MCP
- 第 12 场:使用 TAK 与 AWS 开展灾难与应急响应
- 第 13 场:从测试视角重新思考无服务器应用程序工作流
- 第 14 场:实用 AWS FinOps,助力云上成功
智能体架构中的 RA 与 MCP
本场分享重点
- 探讨检索增强(RA)和多链处理(MCP)这两项智能体领域的传统技术。
- 重点说明智能体架构中的关键要素,以及如何提升智能体性能。
要点
- 智能体编排:智能体由模型进行编排,因此模型至关重要。
- 模型演进:除非进行自定义训练,否则模型逻辑思维和能力的演进主要由模型提供商推动。
- 外部系统连接能力:智能体能否连接外部系统并准确执行操作至关重要。
检索增强(RA)
- 定义:RA 让大语言模型(LLM)无需重新训练即可访问自定义知识库。
- 优势:减少模型微调或重新训练所需的算力及相关成本。
- 使用场景:适合仅靠少样本或单样本提示工程可能无法满足需求的复杂工作负载。
目标
- 提升智能体的实际性能。
- 提升智能体架构中 RA 的性能。
架构概览
- 本场分享将深入讲解智能体系统架构,重点说明 RA 和 MCP 如何促进整体性能提升。
检索增强(RA)架构详解
实施 RA 的步骤
1. 文档准备:
从您自己的文档(PDF、媒体、视频)开始。
2. 分块:
将文档切分为块(有意义的文本片段)。
3. 嵌入:
使用嵌入模型将文本块转换为数值表示(向量)。
4. 向量存储:
将向量存入数据库(关系型数据库,或 Neo4j、Pinecone 等原生向量存储)。
查询流程
- 用户提出问题时,问题会被转换为向量。
- 向量数据库执行相似度搜索,找出最相关的答案。
- 答案返回给大语言模型(LLM),由其生成定制化响应。
提升 RA 性能的关键要素
分块策略
- 分块的重要性:
- 早期 LLM 的上下文窗口有限。
- 分块可以防止出现重要信息被遗漏的“中间丢失”现象。
- 关键考虑因素:
- 块大小:取决于主观判断和个人偏好。
- 分块逻辑:如何以有意义的方式切分文本。
嵌入模型选择
- 选择合适的嵌入模型对于准确表示向量至关重要。
向量数据库选择
- 不同的向量数据库使用不同的算法和库。
- 数据库选择会影响性能和准确性。
分块为何重要
- 上下文窗口限制:早期 LLM 无法处理大型输入;分块可将输入拆分为便于处理的片段。
- 避免中间丢失:确保处理过程中不会遗漏重要信息。
- 块大小与逻辑:这些主观选择会影响分块效果。
分块策略及其影响的更多细节
块大小的影响
- 块大小会影响响应时间,以及忠实度和相关性等性能指标。
- Llama Index 展示了块大小与性能之间的关系。
AWS 上的分块策略
固定大小分块
- 按固定大小对文本进行规则化的句法切分。
语义分块
- 使用自然语言处理(NLP)理解文本,并以有意义的方式进行分块。
分层分块
- 涉及父子关系,常用于具有层级结构的文档。
分块的关键考虑因素
- 有意义的文本块:确保文本块在语义上有意义,而不只是按句法切分。
- 理解文本:目标是理解文本,从而判断一个文本块是否有意义。
- 不分块策略:如果数据集内容完备或训练充分,可能无需分块。
总结
- 分块不只是大小问题,还涉及理解文本并以有意义的方式进行切分。
- AWS 提供多种分块策略,包括固定大小分块、语义分块和分层分块。
- 分块策略的选择取决于文本性质和期望的性能结果。
嵌入模型与相似度指标详解
嵌入模型
- 嵌入模型将文本转换为数值表示(向量)。
- 示例:“ABC”(A:“我喜欢跑步”,B:“我最喜欢的运动是跑步”,C:“今天天气很好”)被嵌入为类似 [0.8, 0.6, 0.11] 的向量。
- 这些向量中各数值的含义由嵌入模型决定。
相似度指标
- 欧氏距离:衡量两个向量之间的直线距离。距离越小,相似度越高。
- 余弦相似度:衡量两个向量之间的夹角。值越接近 1,相似度越高。
示例
- 以 ABC 为例,无论按欧氏距离还是余弦相似度衡量,A 和 B 在数学上都更相似或更接近。
选择合适的嵌入模型
- [ 1 ] 使用场景和语言:
- 确定具体使用场景和语言要求(例如多语言支持)。
- [ 2 ] Token 大小或窗口大小:
- 确保模型能够处理文本材料的大小。
- [ 3 ] 维度:
- 更高的维度可以捕获更多语义,但可能需要更多内存。
- 需要在信息捕获能力与内存成本之间权衡。
AWS 嵌入模型
- AWS 提供多种嵌入模型,包括近期发布的 Nova embedding 等新模型。
- 选择模型时,测试结果以及对模型能力的理解至关重要。
总结
- 嵌入模型将文本转换为数值向量,从而支持相似度搜索。
- 相似度通过欧氏距离和余弦相似度衡量。
- 选择合适的嵌入模型需要考虑使用场景、Token 大小和维度。
向量数据库与搜索算法总结
向量数据库(Factor DB)
- 文本转换为数值表示(向量)后,需要存储在向量数据库中。
- AWS 提供多种数据库选项,包括 Pinecone 或 Mu 等开源无服务器解决方案。
- 这里以 OpenSearch 为例来说明搜索方法。
搜索方法
- [ 1 ] 分层可导航小世界(HNSW):
- 创建逐层的图结构,以提高搜索速度。
- 缺点:内存消耗较高。
- [ 2 ] 倒排文件索引(IVF):
- 将向量划分到不同桶中,再搜索子桶。
- 优点:与 HNSW 相比,内存占用更低。
选择合适的搜索方法
- 需要考虑查询延迟、查询质量、内存使用量和索引。
- OpenSearch 建议在选择方法时考虑这些因素。
- FAISS 等方法可能结合 HNSW 和 IVF,以实现最佳性能。
选择 Factor DB 时的权衡
- 没有简单直接的答案;性能要求和容忍程度因用户而异。
- 需要在质量、成本和延迟之间取得平衡。
- 使用更多内存会增加成本,但也会得到更准确的结果。
结论
- Factor DB 和搜索算法的选择取决于具体使用场景和要求。
- 决策图和树状图可以帮助选择合适的方案。
转入 MCP
- 接下来将讨论多链处理(MCP),并分享 MCP 的使用经验。
多链处理(MCP)简介
什么是 MCP?
- MCP 指 Model Context Protocol,是一种用于连接 AI 应用程序与外部系统、数据库或知识库的开源标准。
- 旨在帮助系统给出更有效的响应。
MCP 架构概览
- MCP Host:包含多个 MCP Client 的核心组件。
- MCP Client:与 MCP Server 交互。
- MCP Server:代表文件系统、数据库或其他应用程序等不同系统。
MCP Client 的核心功能
- Sampling:控制发送到 MCP Server 的请求数量。
- Roots:指定客户端希望从 MCP Server 提取的目录或数据类型。
- Elicitation:定义客户端希望从 MCP Server 接收的数据偏好。
在 AWS 上部署 MCP Server 的参考架构
- CloudFront 和 Buff:用于提升性能并防御恶意攻击。
- Amazon Cognito:用于身份验证,确保请求来自有效的 MCP Client。
总结
- MCP 是一种增强 AI 应用程序与外部系统交互能力的协议。
- 其架构包括 MCP Host、MCP Client 和 MCP Server。
- MCP Client 的关键功能包括 Sampling、Roots 和 Elicitation。
- 建议使用 CloudFront、Buff 和 Amazon Cognito 等 AWS 服务,安全高效地部署 MCP Server。
在 AWS 上部署 MCP 的进一步说明
MCP Server 的后端服务
- AWS Fargate 和 AWS Lambda:
- Fargate:托管需要长时间运行的 MCP Server。
- Lambda:托管由事件触发并临时运行的代码。
其他 AWS 服务
- Amazon CloudWatch:监控 MCP Server 的性能。
- Parameter Store:存储 MCP Server 的环境变量。
- Amazon ECR:托管用于构建 MCP Server 的镜像。
- ACM(AWS Certificate Manager):通过证书确保传输中的数据经过加密。
在 AWS 上部署 MCP Server 的演示
- CDK(Cloud Development Kit):用于部署 MCP Server 架构。
- [ 1 ] 步骤:
- 构建 CDK 工具包。
- 使用 AWS 提供的 CDK 部署后端架构。
- [ 2 ] 部署的堆栈包括:
- VPC
- 安全组
- CloudFront
- 用于身份验证的 Cognito 用户池
- MCP Server
部署流程
- 部署流程包括从源代码构建 Docker 镜像、将镜像推送到 ECR,以及部署到 ECS Fargate 和 Lambda 等服务。
- 由于服务器的构建和部署较为复杂,整个过程非常耗时。
总结
- MCP Server 后端利用 Fargate 和 Lambda 等无服务器平台。
- CloudWatch、Parameter Store、ECR 和 ACM 等其他 AWS 服务分别用于监控、存储变量、托管镜像和确保加密。
- CDK 演示展示了如何在 AWS 上部署 MCP Server,同时也突出了该过程的复杂性和所需时间。
MCP Client 交互与最佳实践总结
与 MCP Server 交互
- 后端部署完成后,可以使用 MCP Client 与 MCP Server 交互。
- 演示了如何与连接到美国天气预警外部网站(API)的 MCP Server 交互。
- 示例:输入经度和纬度来预测天气预警,并接收来自 api.weather.gov 的响应。
最佳实践提示
- 避免将 MCP Client 与 Callback Host 放在一起:
- 建议不要将 MCP Client 与 MCP Server 的 Callback Host 部署在同一主机上。
- 这种做法有助于避免回调超时问题。
总结
- MCP Client 可以有效地与 MCP Server 交互,从外部系统获取数据。
- 最佳实践是将 MCP Client 与 Callback Host 分开,以防止超时问题。
- 演示展示了如何通过与外部 API 交互,使用 MCP Server 预测天气预警。
