AWS代付、代实名
阿里云国际 | 腾讯云国际

Amazon Connect结合Strands框架及Bedrock Agent Core的智能客服机器人解决方案(实践篇)

AWS账单代付阅读(18)

亚马逊AWS官方博客

Amazon Connect结合Strands框架及Bedrock Agent Core的智能客服机器人解决方案(实践篇)

延续之前发布的基于Bedrock和Amazon Connect打造智能客服自助服务设计篇,本博客将展示智能客服自助服务领域中如何利用Strands框架和Amazon Connect进行集成,同时结合Bedrock AgentCore Memory及Runtime功能的最佳实践及解决方案技术框架。

1. 客户对智能客服自助机器人的评价指标:

客户对智能客服自助机器人的评价指标,一般会从 服务效果、体验感受、系统性能、管理运营 四个维度来衡量。

1.1** **服务效果类

  • 问题解决率(Resolution Rate):机器人能否真正帮客户解决问题。
  • 首次解答正确率(First Contact Resolution, FCR):一次对话是否就能给出准确答案。
  • 知识覆盖率:机器人能回答的常见问题比例。
  • 人工转接率:需要转人工的比例(越低说明机器人更有效)。
  • 1.2. ** **用户体验类

  • 响应速度:从提问到答复的时间。
  • 交互自然度:语言是否流畅,是否像与人对话。
  • 多轮对话顺畅度:是否能记住上下文,避免重复提问。
  • 个性化程度:是否能基于用户历史、偏好提供定制化回答。
  • 满意度评分(CSAT):客户对服务的即时评价。
  • 1.3. ** **系统性能类

  • 稳定性与可用性:是否出现崩溃、超时、答非所问。
  • 并发处理能力:高峰期响应是否依然流畅。
  • 准确率与召回率:意图识别是否精准,知识检索是否全面。
  • 安全与合规性:是否保障用户隐私与数据安全。
  • 1.4. ** **管理与运营类

  • 知识更新及时性:知识库内容是否快速更新。
  • 运营可视化:后台是否提供对话分析、用户画像、热点问题统计。
  • 自我学习与优化能力:是否能通过反馈持续改进。
  • 人工客服协同度:转人工时是否无缝衔接。
  • ROI 与成本节省:减少人工客服成本、提升整体效率。
  • 2. 基于GenAI智能客服自助系统设计中Agent框架选择的因素

在基于 GenAI 的智能客服自助系统设计中,选择 Agent 框架 时要考虑多个因素,因为 Agent 不仅是“问答机器人”,还需要作为一个可以调用知识库、业务系统、工具(Tool)和人工客服的智能体来运作。

目前Agentic AI不断发展,新技术新模式层出不穷,主要往更智能化,更自动化的方向发展,但在智能客服领域主要是要提高客户满意度,真正帮助客户解决问题,该场景需要双方互动,因此从目前实际项目效果来看WorkFlow模式更适合该场景,本次实践也是采用了Stands框架中的WorkFlow来实现。

2.1** **技术能力与适配度

大模型适配:是否支持接入多种基础模型,避免锁定单一模型。

多工具调用:能否灵活调用数据库、API、CRM、ERP、支付系统、工单系统等。

上下文管理:支持长对话记忆、多轮对话追踪、会话状态管理。

知识增强 (RAG):是否支持文档检索、知识图谱、FAQ知识库集成。

2.2** **系统架构与扩展性

模块化设计:是否支持分层架构(对话管理、任务代理、工具代理)。

可扩展性:能否快速增加新场景、新业务流程。

跨渠道支持:是否支持接入Web、App、微信、WhatsApp、电话IVR等渠道。

编排能力:能否用工作流或低代码方式编排对话与工具调用。

2.3** **性能与稳定性

实时性:响应是否快速,能否满足毫秒级响应需求。

并发能力:是否能支撑高并发场景(电商促销、游戏活动高峰)。

健壮性:应对模型回答错误、API超时等异常时,是否有降级机制。

2.4** **安全与合规

数据安全:是否支持敏感信息脱敏、加密存储、访问权限控制。

合规要求:是否满足 GDPR、CCPA、网络安全法等法规要求。

可控性:是否有安全护栏,防止模型生成不当内容(越权操作、违规回答)。

2.5** **运维与优化能力

可观测性:是否能追踪对话日志、Agent调用链路,便于问题定位。

可训练性:是否支持持续学习(基于用户反馈优化)。

A/B 测试:能否在不同 Agent 策略或模型之间做对比实验。

成本控制:调用大模型的 Token 消耗与框架优化能力(如缓存、混合模型调用)。

3. Amazon Connect结合Strands和Bedrock AgentCore智能客服自助系统架构设计

3.1 解决方案High Level设计

本次实践采用Amazon Connect的Chat文字聊天作为客户接入方式,整个自助服务的流程控制采用Amazon Connect的Workflow设计实现,客户输入后由Connect通过lambda来调用GenAI模型来实现意图识别,基于Bedrock的RAG知识库查询,基于Stands框架的的 Multi Agent来实现自助服务,不同的意图会对应不同的处理流程,详见图1。

3.2 系统架构设计

整个解决方案可以同时支持电话及文字聊天等多渠道呼叫中心解决方案,不同的接入渠道采用统一的流程管理。整体方案设计中以Amazon Connect作为呼叫中心平台核心服务平台,同时采用Amazon Lex作为自主服务组件,Amazon Lex以及Amazon Connect Content Flow通过调用Lambda来实现对Bedrock Cluade模型的调用以及Bedrock 知识库的调用。详细流程见图2.

业务流程说明:

  • 通过内部CRM系统整理知识库文件并放入S3,采用Bedrock知识库服务并同步S3数据源
  • 客户通过文字聊天发起服务并进入connect服务
  • Connect通过Workflow定制流程并调用lex进行对话交流
  • Lambda实现客户意图识别及调用AgentCore Memory实现会话记忆
  • Connect workflow获取到客户自助服务就调用Lambda
  • Lambda调用基于Strands框架编写并运行在AgentCore Runtime上的Agent实现自助服务
  • 自助服务满足不了客户需求,转人工坐席
  • 坐席调用AgentCore Memory长期记忆功能获取之前对话总结并为客户继续提供服务

图2 详细系统架构设计图

3.3 对话记忆功能实现解析

如何实现对话记忆功能有可以有多种方案,之前博客采用的是利用Amazon Connect的随路数据来实现。本次采用Bedrock AgentCore Memory最新服务来实现。

Amazon Bedrock AgentCore 的 Memory 模块是一个由 AWS 托管的持久化记忆系统,用于存储和管理 AI Agent 的对话和知识。它提供短期记忆(short-term memory)和长期记忆(long-term memory)两种模式。短期记忆负责在一次会话中记录最近的交互内容(例如最近几轮对话),确保代理能够“记住”当前对话的上下文。长期记忆则从对话中提取结构化的关键信息,在多个会话之间保留知识,使Agent能够“学习”用户偏好、事实和摘要等信息。

Memory 模块在架构上采用分层存储策略:短期记忆层存储原始交互事件作为即时上下文,长期记忆层存储从事件提取的概要知识。Memory 服务背后实现了自动的信息处理流水线:当新的事件被存储时,如果 Memory 配置了长期记忆策略,服务会异步地对事件内容进行分析(例如调用基础模型)来提炼出可长期保存的知识片段。

所有数据由 AWS 以 加密 方式存储,并使用命名空间(namespace)进行隔离分区,确保不同应用或用户的记忆数据彼此分隔。这一完全托管的记忆基础设施让开发者无需自己搭建数据库或向量存储,就能方便地让 Agent 拥有记忆功能。

如图3所示是本次实践采用AgentCore Memory,并充分利用了长期记忆,如摘要信息来简化客服转坐席的总结功能,同时也可以实现自动语义识别来提取信息写入CRM系统,详细参加图3。

图3 AgentCore Memory功能

3.4 Agent框架及运行解析

本次实践采用Stands框架来实现了具体Agent。并和Benrock AgentCore Runtime结合,每次调用Agent就是启动一次Bedrock AgentCore Runtime。

Bedrocl AgentCore Runtime 是一款高度安全、弹性、高效能的 Serverless Agent 托管平台,它让企业无需为基础设施烦恼,即可专注 Agent 业务开发,并满足生产级安全、成本和可扩展性需求。支持多步逻辑和异步任务执行,Runtime 可保持会话状态长达 8 小时,适合复杂推理和长流程任务,采用按实际计算资源使用计费方式,计算只有在 Agent 真正执行时才计费,节省大量因等待外部 LLM 或 API 的空闲时间费用,非常适合客服应用场景。

3.3 Amazon Connect ContentFlow调用Lambda的最佳实践

在Amazon Connect ContentFlow中调用Lambda实现和外部系统集成时如果采用同步模式,Lambda最大执行超时时间是8秒,这个现在在调用大语言模型时如果任务比较复杂,执行会超过8秒,这会导致这个流程报错。为解决这个问题可以采用最新的异步调用模式,这个可以将最大执行时间延长到60秒,肯定可以满足要求。具体调用方法参加下图。先在AWS Lambda Function调用时候选择异步模式,然后设置Wait节点等待执行完成,执行完成后再次调用AWS Lambda Function节点,并选择Load Lambda Result来获取执行结果。这样可以解决超时瓶颈问题。

4. 具体代码实现及部署解决方案

4.1** **本次实践客户场景描述

  • 本次实践以制造业海外售后服务为背景,通过智能客服来实现产品售后服务咨询,订单查询,自动退货等实际场景,如果问题复杂无法通过自助服务解决将自动转接人工坐席。
  • 智能客服统一采用基于Stands框架的Multi Agent架构,将意图识别,知识库调用,工具调用统一封装为各种Agent服务,可以实现简单智能调用。
  • 4.2Amazon Connect** **业务流实现:

  • 利用Connect Content Flow来实现整个业务场景。
  • 通过Lex来获取用户输入,支持语音和Chat两个渠道。
  • Connect Content Flow通过异步调用Lambda实现智能Agent的调用,并返回最佳回复给到客户,整个过程支持多轮对话和多业务处理。

  • 当Agent返回结合告知该服务需要人工坐席接入则系统自动转人工坐席并提供自动服务的全程对话摘要,避免坐席重复询问之前的问题,提升用户体验。
  • 4.3 Stands Agent** **及Bedrock AgentCore Runtime部署及实现:

  • Strands Agents SDK 是由亚马逊云科技开源的Agent软件开发工具包,它采用模型驱动的方式,旨在简化和加速 AI 智能体的构建与部署。它的主要优势:
  • 开发流程简化:开发者只需定义核心的提示词(Prompt)和可用的工具列表,而无需编写复杂的工作流代码。极大降低了开发成本,加快上线速度。
  • 广泛的生态支持:SDK 具有高度的开放性和兼容性,支持包括 Amazon Bedrock、OpenAI、Ollama 等在内的多种大型语言模型。并且,预置了文件管理、代码执行、网络请求等多种实用工具,开箱即用。
  • 支持多智能体编排:该 SDK 引入了先进的 Swarm 架构,支持多智能体并发处理和协同工作。这对于处理复杂任务、提升处理效率和准确率至关重要。
  • 在本次的智能客服机器人的实践中,我们采用了如下的多Agent编排的架构,让负责的客服任务能够更精确有效的执行。
  • Strands SDK 多Agent的关键代码实现:
  • 总控Agent的代码实现:

bedrock_model = BedrockModel(

model_id=”global.anthropic.claude-sonnet-[已去除电话]-v1:0″,

temperature=0.3,

top_p=0.8,

)

Create the supervisor agent with all specialist Agents

self.current_agent = Agent(

name=”Supervisor Agent”,

system_prompt=self._build_system_prompt(),

model=bedrock_model,

state={“session_id”: session_id},

tools=[

update_user_id,

get_product_usage,

start_return_process,

check_order_status,

],

)

  • 子Agent的代码实现:

@tool

def retrieve_from_kb(query: str) -> Dict[str, Any]:

“””

Retrieve information from a knowledge base based on a query.

Args:

query: The search query

Returns:

Dictionary containing retrieval results

“””

try:

Call the retrieve tool directly

retrieve_response = retrieve.retrieve(

{

“toolUseId”: str(uuid.uuid4()),

“input”: {

“text”: query,

“score”: MIN_RELEVANCE_SCORE,

“numberOfResults”: MAX_RAG_RESULTS,

“knowledgeBaseId”: DEFAULT_KNOWLEDGE_BASE_ID,

“region”: AWS_REGION,

},

}

)

logger.info(f”retrieve_response: {retrieve_response}”)

return retrieve_response

except Exception as e:

logger.error(f”Error details: {str(e)}”)

raise

return {

“status”: “error”,

“message”: f”Error retrieving from knowledge base: {str(e)}”,

}

def init_agent(agent_name: str) -> Agent:

return Agent(

name=agent_name,

system_prompt=faq_agent_system_prompt,

model=bedrock_model,

tools=[retrieve_from_kb, check_order_status],

)

4.4 Bedrock AgentCore Memory** **调用实现:

  • Amazon Bedrock AgentCore 是一个由亚马逊云科技推出的全托管、模块化平台,旨在帮助开发者大规模构建、部署和运营安全可靠的 AI Agent。其中,Memory是为Agent提供持久化的短期和长期记忆能力,以维护对话上下文。

在本客服机器人实践中,我们利用AgentCore Memory的能力来保存客户历史上的对话记录,并将这些历史对话记录作为客服的基础,来更好的回答客户的问题和诉求。在此,我们以代码片段的形式,将Memory的调用过程,展示给大家。

  • 第一步,创建memory

  • 第二步,保存memory

  • 第三步,在适合的流程中,召回memory。 召回Memory的过程中,我们使用Strands tools:AgentCoreMemoryToolProvider。可以使用不同的Query召回不同分类的Memory。使得Memory的应用更加灵活和精准。
  • Amazon Bedrock AgentCore Runtime是为Agent是一个专门为托管 AI Agent而设计的基础设施。它采用容器化的部署方式,负责处理用户输入、维护上下文,并利用容器的隔离能力,给AI应用一个安全高效的运行环境。

在本次实践中,我们多Agent的应用部署平台,就采用了AgentCore Runtime。它保证了我们客服能够按需付费,不用为客服的闲时花费基础资源费用,同时Runtime的高扩展性,也保证了整个系统可以应对突然的业务高峰冲击。 我们客服机器人的业务调用流如下: Connect 服务为客服机器人系统的接入模块,负责chat或voice数据的流入,Lex为客服逻辑模块,负责意图识别和系统调度,Lex可以通过Lambda调用部署在AgentCore Runtime上的多Agent客服系统,自动处理客户问题。

  • AgentCore Runtime有2种部署方式,本文使用的是可定制化程度更高的自建Docker image,上传ECR的部署形式。具体的操作流程可以参见附件所列的文档。
  • 5. 附录

Github code:https://github.com/heqiqi/multi-agent-for-customer-support

6. 总结

本篇讨论了亚马逊云科技Amazon Connect呼叫中心服务和Amazon Bedrock AgentCore以及Strands agent框架结合实现智能客服自助服务最佳实践。本博客从用户实际需求出发提供一个实际可行的解决方案,结合技术和成本综合考虑提供最佳实践。本设计充分考虑呼叫中心的特殊性,采用Lambda,Amazon Bedrock,Amazon Bedrock AgentCore,Stands Agent框架结合提供综合解决方案,同时提供了Amazon Bedrock AgentCore Runtime和Stands Agent结合的代码并和Amazon Connect实现集成,提供Amazon Bedrock AgentCore Memory集成及调用代码实现智能客服上下文自动记忆功能。本篇提供了整个实践的完整代码及实现的效果展示,,让读者可以清楚了解实现效果和技术细节。

*前述特定亚马逊云科技生成式人工智能相关的服务目前在亚马逊云科技海外区域可用。亚马逊云科技中国区域相关云服务由西云数据和光环新网运营,具体信息以中国区域官网为准。


使用Amazon Bedrock和Pipecat构建低延迟智能语音Agent

AWS账单代付阅读(17)

亚马逊AWS官方博客

使用Amazon Bedrock和Pipecat构建低延迟智能语音Agent

在生成式AI与语音交互技术快速发展的当下,如何高效构建低延迟、个性化、自然对话体验的智能语音Agent,已逐渐成为业界关注的焦点之一。

智能语音Agent的应用领域广泛,包括智能设备语音交互(如具身机器人、智能音箱)、个人助理、自动化客服(如餐厅预订、销售、保险、预约安排)、营销、语言教学(如英语口语学习)、健康医疗以及多模态内容创作等。

本篇博客将首先介绍构建智能语音Agent的核心组件和延迟优化建议,接着将利用Pipecat开源框架和Amazon Bedrock服务,打造一个支持用户打断、多轮上下文管理的实时交互智能语音Agent

一、智能语音Agent核心组件

智能语音Agent结合了基础模型的文本/语音识别、理解和推理能力,旨在提供实时、自然、连续的语音交互体验。一般来说,构建智能语音Agent通常需要包含以下核心组件:

VAD( Voice Activity Detection ):检测音频中是否存在人类语音 EOU(End of Turn/Utterance ):检测说话者是否已经完成了他们的发言 STT (Speech To Text):也称为自动语音识别(ASR),将给定音频转录为文本 LLM 和 LLM Agent:大语言模型,如 Amazon Nova/Nova Sonic,DeepSeek,Anthropic Claude系列模型 TTS( Text To Speech):也称为语音合成,从文本生成自然且清晰的语音

通过将上述组件组合成一条Pipeline,即可构建出智能语音Agent。随着生成式AI技术的进步,业界发展出了端到端语音模型(即Speech to Speech语音模型),该模型可实现语音输入到语音输出的全链路处理,例如Amazon Nova Sonic就是一款由Amazon研发的Speech to Speech语音模型。端到端语音模型内置了VAD、EOU、STT、LLM、TTS等集成功能,能够实现更低的延迟。这类模型使得构建语音Agent更为轻松便捷。

Amazon Nova Sonic 是一款语音理解和生成模型,可提供自然的类人语音对话式人工智能,并且实现了低延迟和行业领先的性价比。该模型提供流畅的对话处理、自适应语音响应、内容审核、API调用和基于RAG的知识库集成,同时提供高度自适应且引人入胜的用户体验。

这两种方案各有优缺点:Pipeline方案可以对各个部分进行精细控制,但其缺点在于语音到文本的来回转换可能导致部分声音信息丢失,并且延迟相对较大。端到端语音模型方案延迟更低,实现更为简单,并且能够更好地感知声音信息,例如非语言线索(如笑声、犹豫)、语调、重音、风格、情绪等,但对语音如何流入和流出Agent的控制相对较少。

需要注意的是,在当前阶段,SOTA LLM(前沿大语言模型)相比于Speech to Speech语音模型,在成本、推理能力、指令遵循和函数调用等方面仍占据优势。但不可否认,Speech to Speech模型是语音Agent的未来。

二、传输协议对比

要构建自然流畅的智能语音Agent,传输协议的选择至关重要,它们直接影响着语音流的传输效率和实时性。常见的传输协议有WebSocket,WebRTC等,它们有各自的特点,详细对比如下。

|

WebRTC |

WebSocket

|延迟

|Very Low (<200ms)

|Low (<400ms)

|传输层协议

|UDP

|TCP

|Signal Control

|Signaling Layer

|Custom

|连接模式

|点对点(P2P)

|客户端-服务器

|优点

|1. 点对点通讯效率高 2.专为音频和视频流设计:拥塞控制、数据压缩、 自动数据包时间戳

|兼容性好:通过 HTTP 握手升级到WebSocket 连接

|缺点

|复杂度高:需信令机制建立连接,使用STUN/TURN/ICE 等技术实现 NAT 穿透

|需要服务器参与通信,传输性能和延迟不如 WebRTC

通过对比可以看出,WebSocket兼容性更好,WebRTC对音视频的传输做了很多优化,传输效率更高。一般来说,对于构建原型和轻量级项目,可以选择Websocket,对于中大型生产项目,WebRTC是更优的选择。但WebRTC协议复杂,部署也很复杂,需要实现信令服务器、STUN服务器(公网IP和端口发现),TURN服务器(P2P连接失败时作为媒体中继服务器,实现诸如NAT穿透)。因此构建一个成熟稳定的WebRTC方案,难度比较大。目前市面上有Livekit开源框架,同时也有Amazon KVS、Daily、Livekit Cloud等商业WebRTC服务可供选择。

使用WebRTC有两种主要方式:一是通过云端的WebRTC服务器中转,商业WebRTC服务多采用此模式;二是直接在客户端和语音Agent端之间建立连接。云端服务器模式可以实现直连模式无法提供的诸多特性,例如多方会话、多方录音等。而直连模式则非常适合语音AI Agent的客户端-服务器场景,它减少了服务器中转环节,并且无需维护任何特定于WebRTC的基础设施。

Tips:

自建WebRTC服务可以使用公开STUN服务器:https://gist.github.com/mondain/b0ec1cf5f60ae726202e。可以根据语音Agent的部署位置选择合适的STUN服务器。

WebRTC服务使用UDP协议进行连接,在亚马逊云部署时需要在安全组开放对应的UDP端口。

三、智能语音Agent延迟优化建议

延迟是影响人与语音Agent之间对话体验的关键因素。人类期望在正常对话中获得快速响应,长时间的停顿会显得不自然(人机对话的典型响应时间通常为500毫秒)。因此,延迟优化对于智能语音Agent来说至关重要。

根据作者基于Amazon Bedrock构建智能语音Agent的实践经验,建议综合考虑以下方式优化延迟技术。

  • 语音Agent部署尽量靠近用户,减少网络传输延迟。
  • 使用传输效率更高、延迟更低的传输协议,如 WebRTC。
  • LLM 延迟优化:LLM的延迟在整个语音Agent的延迟中占据主要部分,因此对LLM进行延迟优化显得尤为关键。在满足要求的前提下,可以采用以下手段进行优化。
  • 优先选择端到端语音模型,这种模式一般比STT-LLM-TTS的Pipeline模式延迟更低。
  • 选择参数量更小/推理速度更快的模型(例如Nova Lite,Claude 3.5 Haiku等)。
  • 使用Bedrock上支持延迟优化的模型(例如Nova Pro,Claude 3.5 Haiku等)
  • 开启 Prompt caching
  • Pre-LLM TTS 填充,在用户对话前预先输出内容(如自我介绍),给用户体感上的快。
  • 执行长时间函数调用之前,输出提示信息,例如“处理中,请稍后…”,从而减少客户的等待时间。
  • 通过LLM提示词引导,缩短回复内容。

典型的Pipeline模式和端到端语音模型延迟对比如下(请注意,不同方案和组件的延迟差异较大,以下数据仅供参考)。在设计智能语音Agent时,将语音端到端延迟控制在800至1000毫秒是一个不错的目标。

|

Task |

Pipeline 模式 |

端到端语音模式

|Transport

|50 – 100ms

|50 – 100ms

|VAD

|~20ms

|250 – 1000ms

|EOU

|~100ms

|STT

|100 – 500ms

|LLM or Agentic Workflow

|250 – 1000ms

|TTS

|100 – 450ms

|Total

|Best: 620ms Worst:2,170ms

|Best: 300ms Worst:1,100ms

四、使用Pipecat框架构建智能语音Agent

构建一个智能语音Agent并非易事。除了实现上文所述的核心组件,还需要考虑如何存储会话上下文、接入外部知识库或对接后端系统等功能。使用Pipecat 开源框架可以显著简化智能语音Agent的开发过程。

4.1 Pipecat框架介绍

Pipecat是一个开源的Python框架,专为构建实时语音和多模态对话Agent而设计。它能够轻松协调音频/视频流、AI服务、多种传输方式以及对话流程,从而让开发者更专注于打造独具特色的Agent。

Pipecat** **主要特性包括:

  • 低延迟实时交互
  • 支持Agentic Workflow,可集成各类工具(tools)
  • 支持 WebRTC、WebSocket等传输协议
  • 灵活的模型和服务选择,如 Amazon Bedrock,Polly,Transcribe及其它主流的模型。
  • 支持用户打断
  • 多模态
  • 4.2 方案介绍

接下来,我们将借助一个示例项目,探讨如何基于Pipecat框架,并结合Amazon Bedrock、Amazon Polly和Amazon Transcribe等服务来构建智能语音Agent。Amazon Bedrock是用于构建生成式 AI 应用程序和Agent的托管服务,支持多种自研和第三方大模型,例如Amazon Nova、Nova Sonic、DeepSeek、Anthropic Claude系列模型。Amazon Polly是一项完全托管的服务,可按需生成语音,将任意文本转换为音频流(即TTS),并支持数十种语言。Amazon Transcribe 是一项完全托管的自动语音识别(ASR)服务,自动将语音转换为文本。

该示例项目演示了如下功能:

  • 支持Pipeline模式和端到端语音模式(使用Amazon Nova Sonic模型)。
  • 使用WebRTC作为传输协议。
  • 通过Tools集成知识库,该知识库包含了2025年亚马逊云科技中国峰会的相关内容。
  • 提供Web前端,用于与Agent进行语音交互。

完整的示例代码见Github代码仓库: https://github.com/freewine/sample-voice-agent-with-Amazon-Bedrock-and-Pipecat

使用Pipecat构建智能语音Agent的逻辑架构如图所示。

4.3 Agent核心代码

使用Pipecat构建语音Agent的关键在于工作流的搭建。以下是Pipeline模式的示例代码,从中可以看出,通过STT、LLM和TTS等服务构建了一条完整的Pipeline。为便于阅读和理解,我们已对代码进行简化,完整代码请访问Github仓库。

如果使用Speech to Speech模型,可以省去TTS和STT,实现端到端语音输入输出。示例代码如下。

4.4 系统提示词最佳实践

语音Agent与文字Agent的系统提示词在核心原则上是相通的,但语音Agent具有其特殊性,需要额外考虑多方面因素,例如口语化的适应、非语言信息的处理、错误纠正和澄清等。以下是作者在构建语音Agent时总结的几点经验:

  • 由于STT/ASR模型在实时流中可用的上下文信息有限,语音转录时很可能出现错误。好在当前的LLM已足够智能,在进行推理时可以访问完整的对话上下文。因此,我们可以通过系统提示词告知LLM,输入为用户语音的转录文本,指示其进行相应推理以纠正转录错误。建议在系统提示词添加如下的内容:When you receive a transcribed user request, silently correct for likely transcription errors. Focus on the intended meaning, not the literal text. If a word sounds like another word in the given context, infer and correct.
  • 鉴于LLM的推理结果将用于TTS进行语音合成,因此可在系统提示词中要求其避免输出难以发音的内容:Your output will be converted to audio so don’t include special characters in your answers.
  • 保持Agent语音输出的简洁性,打造更好的对话体验,建议在系统提示词里添加如下约束:Keep your responses brief, generally two or three sentences for chatty scenarios.
  • 参考文件

  • Pipecat: https://github.com/pipecat-ai/pipecat
  • Amazon Nova Sonic: https://aws.amazon.com/ai/generative-ai/nova/speech/
  • Amazon bedrock:https://aws.amazon.com/bedrock/
  • *前述特定亚马逊云科技生成式人工智能相关的服务目前在亚马逊云科技海外区域可用。亚马逊云科技中国区域相关云服务由西云数据和光环新网运营,具体信息以中国区域官网为准。


零售数字化转型新引擎:基于 AWS Bedrock 和 Strands SDK 的 AI Agent 实践指南

AWS账单代付阅读(24)

亚马逊AWS官方博客

零售数字化转型新引擎:基于 AWS Bedrock 和 Strands SDK 的 AI Agent 实践指南

引言

零售行业正站在智能化转型的十字路口。一方面,消费者对个性化体验的期望不断攀升,要求企业能够 7×24 小时提供即时、精准的服务;另一方面,人力成本上涨、供应链复杂度增加、市场竞争白热化,都在倒逼企业寻找更高效的运营模式。

传统的自动化工具已经无法满足这些复杂需求。企业需要的不仅是执行固定流程的机器人,而是能够

理解上下文、自主决策、灵活应对的智能助手——这正是 AI Agent(智能代理)技术的价值所在。

AI Agent 不同于传统的聊天机器人或 RPA 工具,它具备三大核心能力:

  • 🧠

智能理解:通过大语言模型理解自然语言,准确把握用户意图

  • 🔧

工具调用:自主选择和组合使用各种工具,完成复杂任务

  • 🤝

多代理协作:多个专业 Agent 协同工作,处理跨领域问题

然而,从概念到落地,企业面临诸多挑战:如何选择合适的技术栈?如何设计可扩展的架构?如何确保安全合规?如何快速验证价值?

本文将为您提供一套完整的实践指南,展示如何使用

和 Strands Agents SDK AWS 云服务构建企业级零售 AI Agent 系统。我们将涵盖:

5 大典型应用场景:从智能客服到供应链优化的完整方案

端到端技术实现:从架构设计到代码实现的详细指导

实战演示系统:可直接运行的完整示例代码

企业级部署方案:包括最新的 Amazon Bedrock AgentCore

安全与合规:Bedrock Guardrails 的深度集成

落地实施路径:从 MVP 到规模化的渐进式策略

无论您是技术决策者、架构师还是开发工程师,都能从本文中获得实用的指导和可落地的方案。让我们开始这段 AI Agent 的实践之旅。

AI Agent 在零售行业的应用场景

1. 智能客户服务

AI Agent 可以作为 7×24 小时在线的虚拟客服,处理客户咨询、订单查询、退换货申请等常见问题。通过自然语言理解能力,Agent 能够准确识别客户意图,并提供个性化的解决方案。

典型场景:

  • 产品咨询与推荐
  • 订单状态查询
  • 退换货流程指导
  • 售后问题处理
  • 技术实现方案:

使用

构建多代理协作系统,结合 AWS 云服务实现高可用、可扩展的客服解决方案: Strands Agents SDK AI 能力:通过 *Amazon Bedrock*调用 Nova、Llama 等先进大语言模型, *Strands SDK*提供统一的模型接口,轻松切换不同模型 对话管理:使用 *Strands SDK*的会话状态管理,结合 *Amazon DynamoDB*持久化对话历史和用户上下文 实时响应:利用 *Strands SDK*的流式处理能力,配合 *Amazon API Gateway*和 *WebSocket*实现实时对话 知识库集成:通过 *Amazon Bedrock Knowledge Bases*存储产品手册、FAQ,Agent 自动检索相关信息 多渠道接入:通过 *Amazon Connect*整合电话、网页、移动 APP 等多个客服渠道

2. 个性化商品推荐

基于客户的浏览历史、购买记录和偏好数据,AI Agent 可以实时生成个性化的商品推荐,提升转化率和客户满意度。

典型场景:

  • 基于用户画像的商品推荐
  • 购物车智能提醒
  • 交叉销售和追加销售
  • 个性化促销活动推送
  • 技术实现方案:

结合

*Strands Agents SDK* 和 AWS 机器学习服务,构建智能推荐系统: 推荐引擎:使用 *Amazon Personalize*训练个性化推荐模型, *Strands Agent*通过工具函数调用推荐 API 用户画像:在 *Amazon DynamoDB*存储用户行为数据,Agent 实时查询用户偏好和历史 商品数据:使用 *Amazon OpenSearch Service*构建商品搜索引擎,支持语义搜索和向量检索 实时分析:通过 *Amazon Kinesis*实时处理用户行为流,Agent 基于最新数据做出推荐 A/B 测试:利用 *Amazon CloudWatch Evidently*测试不同推荐策略的效果

3. 库存与供应链优化

AI Agent 可以分析销售数据、季节性趋势和市场动态,协助进行库存预测和补货决策,减少库存积压和缺货风险。

典型场景:

  • 智能库存预警
  • 自动补货建议
  • 供应商协调
  • 物流路径优化
  • 技术实现方案:

使用

*Strands Agents SDK* 构建智能供应链管理系统,整合 AWS 数据和分析服务: 数据仓库:在 *Amazon Redshift*存储历史销售和库存数据,Agent 查询趋势和模式 预测分析:使用 *Amazon Forecast*进行需求预测,Agent 基于预测结果生成补货建议 实时库存:通过 *Amazon DynamoDB*维护实时库存状态,支持高并发查询和更新 事件驱动:使用 *Amazon EventBridge*触发库存预警,自动启动 Agent 处理流程 供应商集成:通过 *AWS Step Functions*编排复杂的供应链工作流,Agent 协调各个环节 物流优化:调用 *Amazon Location Service*优化配送路线

4. 价格动态调整

通过监控竞争对手价格、市场需求和库存水平,AI Agent 可以实时调整商品定价策略,最大化利润和市场竞争力。

典型场景:

  • 竞品价格监控
  • 动态定价策略
  • 促销活动优化
  • 利润率分析
  • 技术实现方案:

利用

*Strands Agents SDK* 和 AWS 分析服务构建智能定价系统: 数据采集:使用 *AWS Lambda*定期爬取竞品价格,存储到 *Amazon S3* 价格分析:通过 *Amazon Athena*查询历史价格数据,Agent 分析价格趋势和弹性 机器学习:使用 *Amazon SageMaker*训练定价模型,预测最优价格点 实时决策:Agent 综合考虑库存、竞品价格、需求预测等因素,通过 *Amazon Bedrock*的推理能力做出定价决策 规则引擎:在 *Amazon DynamoDB*存储定价规则和约束,Agent 确保价格调整符合业务策略 审批流程:重大价格调整通过 *Amazon SNS*通知管理层审批

5. 数据分析与商业洞察

AI Agent 可以自动化处理大量销售数据,生成可视化报告和商业洞察,帮助管理层做出数据驱动的决策。

典型场景:

  • 销售趋势分析
  • 客户行为分析
  • 市场细分研究
  • 绩效指标监控
  • 技术实现方案:

使用

*Strands Agents SDK* 构建智能分析助手,整合 AWS 数据分析全栈服务: 数据湖:在 *Amazon S3*构建数据湖,存储所有业务数据,使用 *AWS Glue*进行 ETL 处理 交互式查询:Agent 通过 *Amazon Athena*执行 SQL 查询,快速获取分析结果 数据可视化:集成 *Amazon QuickSight*API,Agent 自动生成图表和仪表板 自然语言查询:用户用自然语言提问(“上个月销售额最高的品类是什么?”),Agent 理解意图并转换为 SQL 查询 智能洞察:使用 *Amazon Bedrock*的分析能力,Agent 从数据中提取趋势、异常和建议 报告生成:Agent 自动生成周报、月报,通过 *Amazon SES*发送给相关人员 预测分析:调用 *Amazon Forecast*进行未来趋势预测

AI Agent 的核心优势

1. 自主性与智能决策

AI Agent 不仅仅是简单的自动化脚本,它具备理解上下文、推理和自主决策的能力。通过大语言模型(LLM)的支持,Agent 可以处理复杂的、非结构化的问题。

2. 工具集成能力

通过工具(Tools)机制,AI Agent 可以与各种外部系统集成,如数据库、API、文件系统等,实现真正的端到端自动化。

3. 多代理协作

复杂的零售业务往往需要多个专业领域的知识。通过多代理架构,可以让不同的 Agent 专注于特定领域,协同完成复杂任务。

4. 可扩展性与灵活性

基于

*Strands Agents SDK* 构建的系统具有良好的可扩展性,可以根据业务需求灵活添加新的 Agent 或工具。

5. 成本效益

相比传统的人工服务,AI Agent 可以大幅降低运营成本,同时提供一致的服务质量和更快的响应速度。

如何让 AI Agent 发挥业务价值

在多数企业中,最引人注目的 AI Agent 应用场景往往也是最复杂、最难实现的。现实是:根据

*Merkle* 的调查发现,只有 51% 的组织拥有丰富且对所有团队可访问的数据,69% 认为技术互不连通阻碍了数字化转型。面对这些差距,盲目追求一次性大规模落地只会导致搁置与失败。

从小到大、可衡量、以人为本的实施路线

要成功地将 AI Agent 应用于业务,务必遵循

从小到大、可衡量、以人为本的路线。

1. 明确目标与试点场景

首先明确** **“** **为什么用** **“** **和** **“** **解决哪个问题** **“**,选取低风险、高收益的试点场景,并设定清晰的 KPI 与 ROI 标准。 **推荐试点场景:

  • 🎯

智能客户服务:自动化常见问题解答,减少人工客服压力

  • 📊

客户行为分析:实时分析用户行为,提供个性化推荐

  • 📦

订单处理自动化:自动处理订单查询、状态更新等重复性工作

  • 💰
  • 价格优化建议**:基于市场数据提供定价建议(需人工审核) **KPI ** **设定示例:

– 客服响应时间:从平均 5 分钟降至 30 秒

– 客户满意度:提升 15%

– 人工客服工作量:减少 40%

– 转化率:提升 10%

– ROI:6 个月内实现投资回报

2. 增量式构建

采用增量式构建策略:

先实现核心能力、验证效果、完善数据与流程,再逐步扩展功能**。 **阶段一:** **MVP** **(最小可行产品)

  • 实现单一 Agent 处理最核心的业务场景
  • 使用现有数据源,避免大规模数据整合
  • 设置人工审核机制,确保输出质量
  • 收集用户反馈和性能数据
  • 阶段二:优化与扩展

  • 基于反馈优化 Agent 性能和准确率
  • 打通更多数据源,丰富 Agent 能力
  • 引入多 Agent 协作,处理复杂场景
  • 逐步减少人工干预,提升自动化程度
  • 阶段三:规模化部署

  • 扩展到更多业务场景和渠道
  • 建立完善的监控和治理体系
  • 制定变更管理和培训机制
  • 持续优化和迭代
  • 3. Merkle 实操建议

*Merkle* 总结了以下实操建议可供参考:

选定明确定义、效果可衡量的应用场景

  • 避免“大而全“的目标,聚焦具体业务痛点
  • 确保场景有清晰的成功标准和衡量指标

盘点并打通关键数据,补齐短板

  • 评估现有数据质量和可访问性
  • 优先打通 Agent 所需的核心数据源
  • 建立数据治理流程,确保数据准确性

组建跨职能团队推进执行

  • 业务团队:定义需求和验收标准
  • 技术团队:实现 Agent 系统和集成
  • 数据团队:提供数据支持和分析
  • 合规团队:确保符合法规和政策

设定监控、反馈与迭代机制

  • 实时监控 Agent 性能和用户满意度
  • 建立快速反馈通道,及时发现问题
  • 定期回顾和优化,持续改进

务实的小步快跑既能快速交付价值,也能揭露技术与数据问题,为未来复杂场景的规模化部署打下坚实基础。

💡

更多 AI Agent 的应用建议请参考: *Merkle Agentic AI Playbook*

人机协同而非替代

最后我们强调,在应用 AI Agent 时需要

聚焦于人机协同而非替代

尽管当下企业都在追求尽可能的自动化,但是作为零售企业,特别是在与客户互动的过程中需要注意

不要高估消费者对纯数字化体验的偏好**。面对复杂的购买决策和售后问题,消费者仍然渴望有真人介入。 **人机协同的最佳实践:** **分层服务策略

  • 简单问题:AI Agent 自动处理
  • 中等复杂度:AI Agent 提供建议,人工确认
  • 复杂问题:人工处理,AI Agent 辅助
  • 无缝转接机制

  • AI Agent 识别超出能力范围的问题,主动转接人工
  • 保留完整对话历史,避免客户重复描述问题
  • 人工客服可以随时接管对话
  • 持续学习循环

  • 人工处理的案例反馈给 AI Agent 学习
  • 定期更新 Agent 的知识库和能力
  • 人工专家审核 Agent 的输出质量
  • 透明度与信任

  • 明确告知客户正在与 AI Agent 交互
  • 提供随时转接人工的选项
  • 尊重客户的选择和偏好

企业应当把 AI Agent 当作增强而非替代,用分阶段、以客户为中心的策略,才能赢得信任并稳步提升效率。

技术实施建议

结合

*Strands Agents SDK* 和 AWS 云服务,我们建议采用以下技术路径: 第一阶段:快速验证(1-2 个月) 第二阶段:优化扩展( 3-6 个月) 第三阶段:规模化部署( 6-12 个月)

  • 部署到

*AWS Lambda*或 *ECS*实现弹性伸缩

  • 集成

*CloudWatch*实现全面监控

  • 使用

*DynamoDB*存储会话历史和用户偏好

  • 配置

*Bedrock Guardrails*确保安全合规

获取专业咨询

如需进一步咨询如何规划 AI Agent 的应用并定制化落地路径,欢迎:

  • 📧 发送邮件至:

*[已去除邮箱]*

  • 🌐 访问

*Merkle* *中国官网*获取更多信息

Strands Agents SDK 简介

*Strands Agents SDK* 是一个强大的 Python 框架,专为构建生产级 AI Agent 系统而设计。它提供了: 简洁的 API:易于上手,快速构建 Agent 丰富的工具生态:支持 *Python* *函数*、 *MCP* *协议*等多种工具集成方式 多代理模式:支持 *Graph*、 *Swarm*、 *Workflow*等多种协作模式 流式处理:支持实时响应和进度更新 生产就绪:内置可观测性、安全防护等企业级特性

典型实现方法

方法一:单一智能代理

适用于相对简单的场景,如单一功能的客服机器人。

特点:

  • 实现简单,快速上线
  • 适合单一领域问题
  • 易于维护和调试
  • 方法二:多代理协作(Agents as Tools)

将多个专业 Agent 作为工具提供给一个协调者 Agent,由协调者根据用户请求路由到合适的专业 Agent。

特点:

  • 清晰的职责分工
  • 易于扩展新的专业领域
  • 适合中等复杂度的业务场景
  • 方法三:图模式(Graph Pattern)

通过定义节点(Agent)和边(转换条件),构建结构化的工作流程。详见

*Graph * *模式文档*。 特点:

  • 支持条件分支和循环
  • 适合有明确业务流程的场景
  • 可控的执行路径
  • 方法四:群体模式(Swarm Pattern)

多个专业 Agent 自主协作,通过 handoff 机制动态传递任务。详见

*Swarm * *模式文档*。 特点:

  • 高度自主和灵活
  • 适合探索性和创造性任务
  • 涌现式的执行路径
  • 零售行业 AI Agent 架构示例

下面我们将构建一个零售客户服务系统,采用多代理协作模式,包含以下专业 Agent:

协调者 Agent:分析客户请求,路由到合适的专业 Agent 产品推荐 Agent:处理商品咨询和推荐 订单管理 Agent:处理订单查询、修改和取消 库存查询 Agent:查询商品库存和可用性 客户服务 Agent:处理退换货和售后问题

系统架构图

代码实现示例

1. 安装依赖

pip install strands-agents

2. 定义工具函数

首先,我们定义一些工具函数,用于与后端系统交互:

3. 定义专业 Agent

接下来,我们将每个专业 Agent 实现为一个工具函数:

4. 创建协调者 Agent

最后,我们创建一个协调者 Agent,负责分析客户请求并路由到合适的专业 Agent:

5. 使用示例

实战演示:代码示例运行效果

为了更直观地展示 Strands Agents SDK 在零售场景中的强大能力,我们基于上述架构实现了一个完整的演示系统。以下是实际运行效果和关键代码片段。

演示系统架构

我们的演示系统采用了多代理协作(Agents as Tools)模式,包含:

协调者 Agent:智能路由客户请求 商品推荐 Agent:处理商品咨询和推荐 订单管理 Agent:处理订单查询和跟踪 库存查询 Agent:实时库存检查

系统使用

构建 Web 界面, Streamlit 提供 LLM 能力, *Amazon Bedrock* 存储业务数据。 *DynamoDB*

核心代码实现

1. 协调者 Agent 实现

协调者是整个系统的“大脑“,负责理解用户意图并分发任务:

*Strands SDK* 优势体现:

极简 API:仅需几行代码即可创建功能完整的协调者

工具即 Agent:使用 @tool *装饰器*将子 Agent 作为工具,实现优雅的层级结构

灵活配置:支持动态切换模型,适配不同业务需求

2. 专业 Agent 实现

每个专业 Agent 专注于特定领域,配备相应的工具集:

*Strands SDK* 优势体现:

*@tool* :将 Agent 转换为可被其他 Agent 调用的工具 *装饰器*

自动参数解析:SDK 自动从用户请求中提取参数并传递给工具

嵌套 Agent:支持 Agent 调用 Agent,构建复杂的层级结构

3. 工具函数实现

工具函数连接 Agent 与后端系统,实现实际业务逻辑:

*Strands SDK* 优势体现:

自动文档生成:从函数签名和 docstring 自动生成工具描述

类型安全:支持 Python 类型提示,确保参数正确传递

错误处理:优雅处理异常,返回结构化错误信息

运行效果展示

场景 1:商品推荐

用户输入:

我想买一副适合运动的蓝牙耳机,预算 300 元左右

系统执行流程:

  • 协调者 Agent 分析请求 → 识别为商品推荐场景
  • 路由到 product_recommendation_agent
  • 商品推荐 Agent 调用工具:

– search_products(keyword=”蓝牙耳机 运动”, category=”电子产品”)

– query_product_info(product_id=”PROD-001″)

  • 生成个性化推荐回复
  • Agent ** **响应:

根据您的需求,我为您推荐以下几款适合运动的蓝牙耳机:

🎧 索尼 WF-SP800N 运动耳机

– 价格:¥299

– 评分:4.7/5.0

– 特点:IP55 防水防尘、主动降噪、13 小时续航

– 非常适合运动场景,防水性能出色

🎧 Jabra Elite Active 75t

– 价格:¥289

– 评分:4.6/5.0

– 特点:IP57 防护等级、稳固佩戴、28 小时总续航

– 专为运动设计,佩戴非常稳固

这两款都在您的预算范围内,音质和防水性能都很出色。您更倾向于哪一款呢?

优势分析:

  • 🎯

精准理解:准确识别“运动“、“预算 300 元“等关键需求

  • 🔧

智能工具调用:自动选择合适的工具并组合使用

  • 💬

自然对话:生成友好、专业的推荐话术

场景 2:订单查询

用户输入:

我的订单 ORD-2024-001 什么时候能到?

系统执行流程:

  • 协调者 Agent 识别订单号 → 路由到 order_management_agent
  • 订单管理 Agent 调用:query_order_status(order_id=”ORD-2024-001″)
  • 解析物流信息并生成回复
  • Agent ** **响应:

您好!我已经查询到您的订单信息:

📦 订单号:ORD-2024-001

📍 当前状态:运输中

🚚 物流公司:顺丰速运

📋 运单号:SF[已去除电话]

📅 预计送达:2024-01-15(明天)

您的订单已经在配送途中,预计明天就能送达。您可以通过运单号在顺丰官网查询实时物流信息。

如有其他问题,随时告诉我!

优势分析:

  • 🎯

自动提取:从自然语言中准确提取订单号

  • 📊

结构化展示:将数据库信息转换为易读格式

  • 🤝

主动服务:提供运单号和查询建议

场景 3:复杂多步骤请求

用户输入:

我想买瑜伽垫,先帮我看看有什么推荐,然后查一下库存

系统执行流程:

  • 协调者 Agent 识别多步骤请求
  • 第一步:调用 product_recommendation_agent

– search_products(keyword=”瑜伽垫”)

– 返回推荐结果

  • 第二步:调用 inventory_agent

– check_inventory(product_id=”PROD-015″)

– 返回库存信息

  • 整合两个 Agent 的结果生成完整回复
  • Agent ** **响应:

好的,我来帮您查询瑜伽垫的推荐和库存信息。

🧘 推荐商品

1. Lululemon 专业瑜伽垫

– 价格:¥680

– 评分:4.9/5.0

– 特点:5mm 厚度、天然橡胶、防滑性极佳

– 库存状态:✅ 充足(剩余 45 件)

2. Manduka PRO 瑜伽垫

– 价格:¥580

– 评分:4.8/5.0

– 特点:6mm 厚度、终身质保、环保材质

– 库存状态:✅ 充足(剩余 32 件)

3. 迪卡侬基础瑜伽垫

– 价格:¥99

– 评分:4.5/5.0

– 特点:4mm 厚度、性价比高、适合初学者

– 库存状态:✅ 充足(剩余 120 件)

所有推荐的商品目前都有充足库存,可以立即下单。您对哪款感兴趣呢?

优势分析:

  • 🧠

智能编排:自动理解多步骤意图并按序执行

  • 🔄

Agent 协作:多个专业 Agent 无缝配合

  • 📊

信息整合:将不同来源的数据整合为统一回复

Strands SDK 核心优势总结

通过以上实战演示,我们可以清晰地看到

*Strands Agents SDK* 的核心优势:

1. 开发效率极高

对比传统开发:

  • ❌ 传统:需要手动实现 prompt 管理、工具调用逻辑、结果解析
  • ✅ Strands:自动处理所有底层细节,专注业务逻辑
  • 2. 多代理协作简单优雅

    对比传统方式:

  • ❌ 传统:需要复杂的消息传递和状态管理
  • ✅ Strands:Agent 即工具,自然的层级结构
  • 3. 工具集成零摩擦

    对比传统方式:

  • ❌ 传统:需要手动编写工具描述、参数验证、调用逻辑
  • ✅ Strands:装饰器一键转换,自动文档生成
  • 4. 模型无关性

    对比传统方式:

  • ❌ 传统:切换模型需要修改大量代码
  • ✅ Strands:统一接口,一行配置切换
  • 5. 生产就绪

演示系统已经具备:

错误处理:优雅处理各种异常情况

流式响应:支持实时输出(可选)

状态管理:会话历史和上下文保持

可观测性:完整的日志和追踪

安全防护:输入验证和 PII 保护

性能表现

在实际测试中,我们的演示系统表现出色:

|指标

|数值

|平均响应时间

|2.3 秒

|工具调用准确率

|96.5%

|意图识别准确率

|94.8%

|并发处理能力

|100+ QPS

|系统可用性

|99.9%

快速开始

想要运行这个演示系统?只需一条命令:

快速启动脚本会自动完成以下操作:

  • ✅ 检查并安装 Python 依赖
  • ✅ 配置 AWS 凭证和区域
  • ✅ 初始化 DynamoDB 数据表
  • ✅ 加载示例数据
  • ✅ 启动 Streamlit 应用

完整代码已开源,欢迎体验和贡献!

高级特性

1. 流式处理

对于需要实时反馈的场景,可以使用流式处理:

2. 上下文管理

使用 invocation_state 在多个 Agent 之间共享上下文:

3. 错误处理

实现健壮的错误处理机制:

性能优化建议

1. 异步工具调用

对于 I/O 密集型操作,使用异步工具可以显著提升性能:

2. 缓存机制

对于频繁查询的数据,实现缓存机制:

3. 批量处理

对于需要处理多个请求的场景,使用批量处理:

部署与监控

1. 生产环境部署

*Strands Agents* 支持多种部署方式: :专为 Agent 优化的托管服务,原生支持 Strands Agents,提供企业级安全、记忆管理和可观测性(推荐) *Amazon Bedrock AgentCore* :无服务器部署,按需扩展 *AWS Lambda* *ECS* / :容器化部署,适合大规模应用 *EKS* :传统虚拟机部署,完全控制 *EC2*

1.1 Amazon Bedrock AgentCore:企业级 Agent 部署新选择

AWS 新推出的

*Amazon Bedrock AgentCore* 为 AI Agent 的生产部署提供了一套完整的企业级解决方案。AgentCore 专为 Strands Agents 等开源框架设计,提供了开箱即用的基础设施和安全能力。 核心优势: *AgentCore Runtime* 专为 Agent 优化的无服务器运行时

原生支持 Strands Agents:无需修改代码,直接部署 Strands Agent 应用

快速冷启动:针对 Agent 工作负载优化,启动速度比传统 Lambda 更快

扩展运行时支持:支持长时间运行的 Agent 任务,无需担心超时

真正的会话隔离:每个用户会话独立运行,确保数据安全

多模态支持:原生支持文本、图像、音频等多种输入输出格式

*AgentCore Identity* 安全的身份和访问管理

  • 🔐 与现有身份提供商兼容,无需用户迁移
  • 🔐 安全令牌保管库,减少用户授权疲劳
  • 🔐 最小权限访问,Agent 仅获得必要的权限
  • 🔐 安全的权限委托,访问 AWS 资源和第三方服务

*AgentCore Memory* 上下文感知的记忆管理

  • 🧠

短期记忆:支持多轮对话的上下文保持

  • 🧠

长期记忆:跨会话和 Agent 共享的持久化记忆

  • 🧠

行业领先的准确性:高质量的记忆检索和管理

  • 🧠

完全控制:开发者决定 Agent 记住什么、遗忘什么

  • 🧠

*AgentCore Gateway* 工具和资源的安全连接

  • 🔧 将 API、Lambda 函数转换为 Agent 兼容的工具
  • 🔧 无需编写自定义代码,自动处理工具集成
  • 🔧 统一的工具发现和管理
  • 🔧 企业级安全和访问控制

*AgentCore Observability* 统一的可观测性

  • 📊 实时追踪 Agent 执行的每个步骤
  • 📊 支持 OpenTelemetry 标准
  • 📊 详细的性能指标:令牌使用、延迟、会话时长、错误率
  • 📊 统一的运营仪表板,简化调试和监控
  • 使用 Strands Agents + AgentCore ** **的部署示例:** *# 1. * *开发阶段:使用 Strands SDK * *构建 Agent* **AgentCore vs ** **传统部署方式对比:

|特性

|传统 Lambda/ECS

|Amazon Bedrock AgentCore

|Agent 框架支持

|需要自行适配

|原生支持 Strands、LangGraph、CrewAI

|冷启动时间

|较慢

|针对 Agent 优化,更快

|运行时长

|有限制(Lambda 15分钟)

|扩展支持,适合长任务

|会话管理

|需要自行实现

|内置会话隔离和管理

|记忆管理

|需要自建基础设施

|托管的短期和长期记忆

|身份管理

|需要集成 Cognito 等

|内置 Agent 身份管理

|工具集成

|手动编写适配代码

|自动转换 API 为工具

|可观测性

|需要配置 CloudWatch

|统一的 Agent 可观测性平台

|安全性

|需要自行配置

|企业级安全开箱即用

何时选择 AgentCore** **:

推荐使用 AgentCore ** **的场景:

  • 需要快速将 Strands Agent 部署到生产环境
  • 需要企业级的安全性和合规性
  • Agent 需要长期记忆和上下文感知能力
  • 需要统一的可观测性和监控
  • 团队希望专注于 Agent 逻辑而非基础设施

⚠️

可以考虑传统部署的场景:

  • 已有成熟的容器化基础设施(ECS/EKS)
  • 需要极致的成本优化和资源控制
  • 有特殊的网络或安全要求
  • 定价模式:

AgentCore 采用按使用量付费的模式,无需预付费用或最低承诺。详见

*AgentCore * *定价*。 快速开始:

查看

*AgentCore * *示例代码* 了解如何将 Strands Agent 部署到 AgentCore。

2. 可观测性

集成日志、指标和追踪:

3. 安全防护

在 AWS 上部署基于

*Strands Agents SDK* 构建的 AI Agent 系统,可以充分利用 AWS 的企业级安全能力,构建多层次的安全防护体系。

3.1 Amazon Bedrock Guardrails 集成

*Strands Agents SDK* 原生支持 *Amazon Bedrock Guardrails*,这是 AWS 提供的强大内容过滤和安全防护服务。 *Bedrock Guardrails* 提供的防护能力: *内容过滤*

  • 🚫 自动拦截有害内容(暴力、仇恨言论、性内容等)
  • 🚫 防止生成不当或违规内容
  • 🚫 可自定义敏感词和主题过滤规则

*PII* *数据保护*

  • 🔒 自动识别和脱敏个人身份信息(姓名、电话、邮箱、地址等)
  • 🔒 支持多种 PII 类型:信用卡号、身份证号、社保号等
  • 🔒 可配置脱敏策略:完全屏蔽或部分遮蔽

*主题限制*

  • 📋 定义允许或禁止的对话主题
  • 📋 防止 Agent 讨论敏感话题(如金融建议、医疗诊断)
  • 📋 确保 Agent 专注于业务范围内的问题

*拒绝越狱攻击*

  • 🛡️ 防止用户通过提示词注入绕过系统限制
  • 🛡️ 检测并拦截恶意提示词
  • 🛡️ 保护系统提示词不被泄露
  • 实际应用示例:** **配置 Guardrails ** **策略:

*AWS Bedrock * *控制台*创建 *Guardrail*:

3.2 AWS IAM 权限管理

使用

*AWS IAM* 实现细粒度的访问控制:

3.3 输入验证与速率限制

结合

*Amazon API Gateway* 和 *AWS WAF*(Web 应用防火墙): *API Gateway * *使用计划* 配置速率限制:

3.4 数据加密

利用 AWS 的加密服务保护敏感数据:

传输加密:使用 *AWS Certificate Manager (ACM)*配置 *TLS/SSL* 静态加密: *DynamoDB* *加密*和 *S3* *加密*自动启用 密钥管理:使用 *AWS Key Management Service (KMS)*管理加密密钥

3.5 审计与合规

使用

*AWS CloudTrail* 和 *Amazon CloudWatch Logs* 记录所有操作:

3.6 Strands SDK + AWS 安全优势总结

|安全能力

|Strands SDK 支持

|AWS 服务

|优势

|内容过滤

|✅ 原生集成

|

Bedrock Guardrails |零代码配置,自动过滤有害内容

|PII 保护

|✅ 原生集成

|

Bedrock Guardrails |自动识别和脱敏,符合隐私法规

|访问控制

|✅ IAM 集成

|

AWS IAM |细粒度权限管理,最小权限原则

|速率限制

|✅ API 集成

|

API Gateway + WAF |防止滥用和 DDoS 攻击

|数据加密

|✅ 透明支持

|

KMS + DynamoDB/ S3 |端到端加密,密钥自动管理

|审计日志

|✅ 回调机制

|

CloudTrail + CloudWatch |完整操作记录,满足合规要求

|越狱防护

|✅ 原生集成

|

Bedrock Guardrails |防止提示词注入和系统绕过

核心优势: 开箱即用: *Strands SDK*原生支持 *Bedrock Guardrails*,无需额外开发 统一管理:在 *AWS* *控制台*集中管理所有安全策略 自动更新:AWS 持续更新威胁检测模型,无需手动维护 合规认证:AWS 服务符合 *SOC*、 *ISO*、 *HIPAA*等多项合规标准 成本优化:按使用量付费,无需预置安全基础设施 零性能损耗:Guardrails 在 AWS 侧处理,不影响 Agent 响应速度

最佳实践

明确的职责分工:每个 Agent 应该有清晰的职责边界 详细的系统提示词:提供明确的指令和示例 完善的工具文档:确保工具的描述和参数说明清晰准确 渐进式开发:从简单场景开始,逐步增加复杂度 充分的测试:覆盖各种边界情况和异常场景 持续优化:根据实际使用情况不断调整和改进

总结与展望

核心要点回顾

通过本文的深入探讨,我们系统地展示了如何使用

*Strands Agents SDK* 和 AWS 云服务构建零售行业的 AI Agent 系统。让我们回顾几个关键要点: 技术选型的智慧

选择 Strands Agents SDK + AWS 的组合,不仅仅是技术层面的决策,更是对开发效率、安全合规和长期可维护性的综合考量:

开发效率**:Strands SDK 的极简 API 让您专注业务逻辑,而非底层实现 **企业级能力**:AWS Bedrock 提供的 LLM、Guardrails、AgentCore 等服务开箱即用 **生态完整性**:从数据存储(DynamoDB)到分析(Athena)再到部署(AgentCore),一站式解决方案 **架构设计的艺术

我们展示了从单一 Agent 到多代理协作的演进路径:

单一 Agent:快速验证,适合简单场景 Agents as Tools:清晰的职责分工,易于扩展 Graph/Swarm 模式:处理复杂工作流和创造性任务

关键是

根据业务复杂度选择合适的模式**,避免过度设计。 **安全合规的保障

通过 Bedrock Guardrails 的原生集成,我们实现了:

  • 内容过滤和 PII 保护的零代码配置
  • 主题限制和越狱攻击防护
  • 符合 SOC、ISO、HIPAA 等合规标准

这让企业能够

放心地将** ** AI Agent ** **应用于生产环境**。 **落地实施的路径

我们强调了“从小到大、可衡量、以人为本“的实施策略:

第一阶段( 1-2 个月):MVP 验证,选择低风险高收益场景 第二阶段(3-6 个月):优化扩展,引入多 Agent 协作 第三阶段( 6-12 个月):规模化部署,建立完善的治理体系 务实的小步快跑既能快速交付价值,也能为未来的规模化打下基础。

技术趋势与展望

AI Agent 技术正处于快速发展期,几个值得关注的趋势:

更强大的基础模型

随着 Nova Premier、GPT-5等模型的不断进化,Agent 的理解和推理能力将持续提升。Strands SDK 的模型无关性让您能够轻松跟上这一趋势。

更丰富的工具生态

从 MCP(Model Context Protocol)到各种专业工具,Agent 能够调用的能力边界在不断扩展。未来的 Agent 将能够处理更复杂、更专业的任务。

更智能的协作模式

多 Agent 系统将从简单的任务分发演进到真正的协同智能,Agent 之间能够进行更深层次的信息共享和决策协商。

更完善的企业级能力

AWS Bedrock AgentCore 的推出标志着 AI Agent 正式进入企业级应用阶段。未来会有更多针对生产环境的优化和工具。

行动建议

如果您正在考虑为企业引入 AI Agent 技术,我们建议:

立即行动: 选择试点场景:从智能客服或客户行为分析等低风险场景开始 搭建 MVP:使用本文提供的代码示例,2 周内搭建原型 验证价值:设定明确的 KPI,用数据说话 持续优化: 收集反馈:建立用户反馈机制,持续改进 Agent 性能 扩展能力:基于业务需求,逐步添加新的 Agent 和工具 优化成本:通过模型选择、缓存策略等手段优化运营成本 规模化部署: 建立治理体系:制定 Agent 开发、测试、部署的标准流程 培养团队能力:投资于团队的 AI Agent 开发能力建设 拥抱变化:保持对新技术的关注,持续迭代优化

最后的话

AI Agent 不是万能的,但它确实为零售行业的数字化转型提供了一个强大的工具。成功的关键不在于技术本身,而在于:

明确的业务目标:知道为什么要用 AI Agent 务实的实施策略:从小处着手,快速迭代 人机协同的理念:AI Agent 是增强而非替代人类 持续的学习优化:技术在进步,应用也要不断演进 *Strands Agents SDK* 和 AWS 为您提供了坚实的技术基础,剩下的就是将这些能力转化为实际的业务价值。我们期待看到更多零售企业通过 AI Agent 技术实现智能化转型,为客户创造更好的体验,为企业创造更大的价值。

现在,就开始您的 AI Agent 之旅吧!🚀

参考资源

作者注**:本文中的代码示例经过简化以便理解,实际生产环境中需要添加更完善的错误处理、日志记录和安全措施。 ***前述特定亚马逊云科技生成式人工智能相关的服务目前在亚马逊云科技海外区域可用。亚马逊云科技中国区域相关云服务由西云数据和光环新网运营,具体信息以中国区域官网为准。


大模型赋能的云原生应用安全平台-汉为软件NovaGuard

AWS账单代付阅读(14)

亚马逊AWS官方博客

大模型赋能的云原生应用安全平台-汉为软件NovaGuard

什么是 NovaGuard NovaGuard Platform,是一款专为当代云环境设计的全方位云原生应用安全平台( Cloud Native Application Protection Platform)。在数字化转型的浪潮中,越来越多的企业选择将业务迁移到AWS云平台。然而,随着云资产规模的不断扩大,如何确保云环境的安全性、合规性和可观测性成为了企业面临的重大挑战。

今天,我们为您介绍一款专为AWS环境量身打造的安全管理平台——

NovaGuardNovaGuard 是一个专注于AWS资产管理、云服务安全审计、合规监控和日志分析的综合性安全管理平台。它深度集成了AWS的各项安全服务和能力,为企业提供统一的安全管理视角,帮助您轻松应对云安全挑战。

适合场景 企业云安全团队:多账户安全态势管理、安全配置基线检查、公共资源暴露检测、基于AI的安全报告分析 合规审计部门:基于SOC2、ISO27001、PCI-DSS等合规框架要求定期生成合规状态报告 DevSecOps 团队:扫描容器镜像漏洞 企业运维团队:无代理资源发现、AI运维助手、实时告警通知(集成飞书/钉钉/邮箱等)、多账户账单概览

NovaGuard Platform** **架构图

核心功能模块

多账号资产管理与可视化

通过NovaGuard的资产管理功能,安全管理人员可以实现全局资源的可视化管理,建立统一的资产分类体系,有效降低”影子IT”风险,为后续的安全治理奠定基础。

(** **1** **)** **仪表盘视图

提供企业级云安全态势、云资产的统一视图,通过实时数据聚合和可视化展示,让管理人员一目了然地掌握整体状况。收集NovaGuard平台扫描结果、安全态势事件、资产清单推送到仪表盘进行展示。

安全视图** **资产视图

(** **2** **)** **云资产清单展示

通过 100% 无代理扫描获得对云账号的全面可视性。持续发现您的云环境,涵盖基础架构、工作负载、身份和数据,以强大的方式可视化您的所有云资产并进行分类。

(** **3** **)多维度分类管理

支持按照业务、部门、环境(生产/测试)等维度进行资产筛选和分组,满足复杂组织架构下的精细化管理需求。

(** **4** **)多账户账单概览

整合多个AWS账户的成本数据,提供统一的成本可视化和分析能力,帮助优化云支出。

(** **5** **)多账户服务配额查询

统一查看多个AWS账户的服务配额使用情况,预防因配额不足导致的业务中断。

云检测与响应** **(CDR) –** **主动防御威胁

NovaGuard Platform的云检测与响应模块提供了全方位的安全监控能力,通过Amazon Inspector等其他安全引擎扫描EC2、容器镜像及时发现潜在威胁。实时监控账户的AWS Health事件,通过多种渠道向企业运维、安全团队发送告警,确保快速响应处理。

(** **1** **)威胁检测

构建多层次的威胁检测体系,通过多种扫描引擎和监控手段,实现对自动检测操作系统、应用程序、容器镜像中的已知CVE漏洞、恶意软件、配置错误等。

(** **2** **)事件通知

建立多渠道、多层级的安全事件通知体系,确保关键安全事件能够及时传达给相关人员,实现快速响应。

集成SNS通知,sns队列处理流程:

创建Amazon EventBridge规则 → 事件触发 → SNS服务 → 多渠道分发 → 接收确认

配置告警** **告警事件

云合规性检查与风险治理

NovaGuard Platform的CSPM模块专注于识别云基础设施中的配置错误和合规性问题。系统会根据行业最佳实践和安全基准,对云环境进行深度扫描,发现潜在的安全风险。

(** **1** **)合规框架

(** **2** **)风险评估

通过持续审查和评估云环境设置和配置来监控风险。通过将发现的风险与安全标准和策略进行映射,您可以实现并保持合规性,并轻松应对多云环境中的审计。利用针对 20 多个合规性框架(包括 SOC-2、GDPR、PCI DSS、HIPAA、NYDFS 等)的预构建报告并提供修复建议。

(** **3** **)定期自动检测

建立持续的自动化检测任务,确保云环境的合规性和安全性得到持续监控和改进。

日志监控** **–** **全方位可观测性

通过调用AWS CloudTtail API,将多AWS账户的日志集成到NovaGuard Platform进行统一查询。

操作日志** **登录日志

云基础设施权限** **(CIEM) –** **精细化权限管理

在您的云安全基础设施中构建零信任。在不破坏任何内容的情况下,尽量减少服务和人员的过多权限。实现最小特权的途径始于对所有权利的完整而准确的了解。基于AWS Well-Architected Framework和标准合规性框架要求持续发现环境中的所有实体和策略(包括 IAM、资源、权限边界和 ACL)。

大模型** **Agent ** **深度赋能

基于** **Amazon Q Developer CLI** **的智能运维

NovaGuard Platform提供基于Amazon Bedrock、 Amazon Q Developer CLI 的智能 AWS 运维代理平台,旨在通过AI运维机器人自然语言交互,简化运维人员管理多AWS账号的工作,提升技术运维的整体效率和响应速度。

该模块支持以下功能:

(1)通过自然语言交互,快速定位、排查AWS账号下的技术问题,并提供修复建议;

(2)集成Amazon Q Developer CLI,可以将一个大的复杂任务进行拆解,拆解成多个思维步骤进行执行;

(3)结合了Amazon Bedrock Knowledge Bases Retrieval MCP Server 和 AWS Support MCP Server,结合知识库中的 runbook 来判断当前服务是否正常,根据工单模板 Q CLI 自动填充相关信息。

基于** **AWS Strands SDK** **构建的** **AI Agent** **提供安全报告分析

基于AWS Bedroc模型的安全报告分析平台,专门为NovaGuard Platform扫描的安全报告提供AI驱动的智能摘要服务。提供了强大的AI驱动文档分析能力,大大提升了安全报告的处理效率和分析质量。

该模块支持以下功能:

(1) 多模型AI摘要引擎(可以根据成本灵活选择模型):支持Bedrock 上的所有模型,详见:https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html

(2)多格式文档处理:支持JSON和HTML文件,将HTML文件进行Markdown转换,然后进行内容分块,再进行AI分析,支持多种格式的安全扫描报告;

(3)智能内容处理:智能边界检测避免在句子中间分割,并且上下文保持,保持分块间的逻辑连贯性;

定价和商务对接

目前该产品可通过Marketplace进行订阅AMI(独立部署版本),也可以联系汉为CTO 林总([已去除邮箱]; [已去除电话])订阅SaaS版。

总结

综上所述,本文详细介绍了

NovaGuard Platform 一款专为当代云环境设计的全方位云原生应用安全平台。该产品一方面具备了AWS资产管理、云服务安全审计、合规监控和日志分析的综合性安全管理的功能。另一方面,结合AI技术,由生成式人工智能 (AI) 驱动的对话助手,可以帮助理解、构建、扩展和操作 AWS 应用程序,您可以咨询有关 AWS 架构、AWS 资源、最佳实践、文档、支持等方面的问题。

助力客户显著提升云原生应用安全防护效率、降低安全运维成本、优化开发运维体验,快速实现企业数字化安全转型与业务价值增长。


Coudfront 部署小指南(二十一)使用CloudFront+S3提供静态网站托管

AWS账单代付阅读(26)

亚马逊AWS官方博客

Coudfront 部署小指南(二十一)使用CloudFront+S3提供静态网站托管

本文介绍了静态网站托管场景中,如何使用CloudFront将一个处于非公开状态的S3存储桶对外发布为静态网站。

一、使用S3直接提供静态网站的挑战

S3提供静态网站Hosting的方式是官方使用S3提供网站托管的推荐主要方式,此时直接对外暴露S3存储桶,也就是必须将S3存储桶设置为Public可见。如果本AWS账户内仅有一个S3存储桶并配置为公开,可能问题不大。但是对于大部分企业用户,尤其是混合多种业务数据管理的场景、一个账号内有许多存储桶,将存储桶设置为Public会遇到安全挑战问题。

大部分企业的安全管理团队会要求将本AWS账号的S3全局设置Block public access配置为启用,也就是阻止本账号内所有S3存储桶公开,这样的安全要求与S3静态网站托管需要对外设置Public产生了矛盾,无法满足需求。

针对S3存储桶开启保护的配置开关位于S3控制台的左侧菜单。如下截图。

这时候就需要在CloudFront上进行静态网站配置来满足安全需求。此时,可以用CloudFront配置在S3之前并通过OAC(Origin Access Control)授权访问S3存储桶,让S3存储桶继续保持非Public的私有状态,然后通过CloudFront Function进行默认页跳转,即可在无需设置Public的要求下满足网站发布需求。

本文以

abc.com域名为例,通常网站服务是绑定在

www.abc.com这样的域名上,或者是

us.abc.com这样的二级子域名上。这里需要注意的是,名字以

www开头的

www.abc.com,本质上也是一个二级域名。因此每个独立的网站都必须有独立的配置。如果还希望abc.com域名也能对外提供服务,那么总计需要配置3个独立的S3存储桶和3个独立的CloudFront发布点。它们分别是:

www.abc.com对应的存储桶,存放对应的网页,绑定CloudFront发布点A

us.abc.com对应的存储桶,存放对应的网页,绑定CloudFront发布点B

abc.com对应的存储桶,存放对应的网页,绑定CloudFront发布点C,可以配置自动跳转到

www.abc.com

下面继续进行配置。

二、创建针对www域名/二级域名的静态网站服务

1、创建S3存储桶

正常创建S3存储桶,在创建向导页面,所有类型都是用默认设置。取名时候可以任意取名,这里不需要向使用S3提供静态网站一样,对S3存储桶名字有特定命名规范的要求。这里可以任意选用名字。例如使用

my-s3-static-hosting-demo-01的名字。

创建时候注意您的Region是否正确,如果Region不是需要的Region,请从右上角的位置切换Region。然后在选择类型的位置选择

General Purpose通用型,在

Object Ownership位置选择ACLs disabled。如下截图。

Block Public Access settings for this bucket选项位置,选中之。如下截图。

点击创建Bucket完成创建。

2、配置CloudFront发布点

现在进入CloudFront服务,创建发布点。从2025年起,CloudFront控制台发布了新版本UI交互界面,本文以新界面进行介绍。

在创建向导第一步,输入发布点的名称,然后填写要绑定的域名。在

Distribution type位置,选择

Distribution type。在

Custom domain位置,输入要绑定的域名,首先配置以

www开头的域名。点击

Check domain按钮,此时CloudFront向导会检查此域名是否经由Amazon Route53托管。一般情况下,您可能是有自己独立的域名解析服务商,就会看到提示您需要稍后自行管理域名。点击

Skip domain setup跳过。如下截图。

在向导第二步,

Origin type位置选择S3存储桶作为源站。在Origin位置,点击浏览存储桶,选择上一步创建的存储桶。在

Origin path – optional路径位置留空。在

Settings位置,选择默认的

Allow private S3 bucket access to CloudFront – Recommended。下边两个选项也保持默认。这将使得您的S3存储桶不会公开,CloudFront会使用自己的Policy授权来访问S3存储桶,这一功能也被称为OAC即

Origin Access Control。然后点击下一步继续。

在向导第三步安全配置界面,选择不需要配置WAF防火墙。因为这是一个静态网站,且由S3进行托管,所以默认情况下不使用WAF防火墙也没有问题。如果您有特殊的安全或者运营需求,例如检查Http访问请求中的特定Header、IP地址限制、访问频率限制等特殊需要,那么在创建CloudFront发布点之后,再手工打开WAF防火墙实现这些功能。如下截图。

在向导第四步,选择对应的SSL证书。在Amazon Certificate Manager(以下简称ACM)服务中,可生成免费的SSL证书用于CloudFront服务。这里需要注意的是,证书服务是严格区分名称的,针对

abc.com的证书是根域名的证书;针对

www.abc.com的证书是二级子域名证书,通常用

*.abc.com的通配符证书来代替。但是二级子域名的证书是不能给根域名使用的。因此这里请参考ACM服务文档,提前配置好证书。如下截图。

最后一步回顾刚才的配置,点击下一步创建发布点。如下截图。

创建完成后,要等待大约5分钟,配置才会生效。如下截图。

CloudFront发布点创建完成。

3、将域名指向CloudFront发布点

在上一步创建完成的界面上,可以看到

Distribution domain name位置有一个类似

d3xxxxxxx.cloudfront.net的域名。这就是发布点的别名。现在需要添加一个域名解析指向到这个Endpoint。配置信息如下:

  • 要解析的子域名:www.abc.com
  • 解析类型:CNAME
  • 解析目标:d3xxxxxxx.cloudfront.net
  • TTL:300秒

以上配置根据您的域名解析服务商来完成,配置界面有所不同,请参考相应文档。

如果您的域名使用了Amazon Route53进行解析,那么以上的域名解析记录配置填写如下截图。

域名解析配置完成。

4、设置CloudFront的根目录默认页

在CloudFront发布点配置成功后,如果您访问

https://www.abc.com/index.html,可正常访问。但如果用户输入的是根目录

https://www.abc.com/dir01,会遇到如下错误:

这就是由于CloudFront不能提供默认页面造成的。在CloudFront发布点的默认配置下,CloudFront是不会查找某个目录内的默认页的。您的S3存储桶作为网站发布目录,里边通常有index.html等页面。但不管这些文件是否存在,不管默认页是叫做index.html还是叫做default.html,CloudFront都是无法感知的。因此需要为CloudFront设置默认页。

接下来配置CloudFront针对根目录的默认页。在创建好的发布点页面上,点击编辑按钮。如下截图。

在编辑页面上,找到

Default root object位置,输入

index.html,然后点击保存。如下截图。

配置修改后,需要等待5~10分钟让全球的CloudFront发布点进行同步。之后再访问

https://www.abc.com/即可看到显示正常。

5、创建CloudFront Function函数实现子目录的默认页跳转

上一步配置了针对根目录的默认页,但是这个配置仅针对顶层目录生效。现在如果测试针对子目录

https://www.abc.com/dir1/的访问,可以看到也会遇到报错,因为CloudFront不能自动查找这个子目录内默认页。因此,要实现任意一个子目录的默认页跳转,需要引入CloudFront Function功能。

进入CloudFront的控制台,在左侧找到

Functions菜单,点击右上角Create按钮。如下截图。

在函数名称位置,输入

redirect-for-index,也可以使用自己的名称。在版本方面选择

Cloudfront-js-2.0。点击右下角的

Create function按钮。如下截图。

Build标签页下,添加如下代码。

点击右下角的保存按钮。如下截图。

切换到

Test标签页。点击右上角的

Test function按钮。将

URL path中的请求网址从

/index.html修改为

/,然后点击

Test function测试访问效果。如下截图。

将页面移动到最下方,可以看到针对

/路径的访问,被自动修改为

/index.html,实现了跳转。如下截图。

在测试通过后,点击

Publish标签页,将函数发布并绑定到CloudFront的发布点。如下截图。

在发布点位置选择上一步创建的发布点,然后点击

Publish按钮。如下截图。

在弹出窗口内,分别选择上一步创建的CloudFront的发布点的名称;在

Event type位置,选择

Viewer request;在

Cache behavior位置的下拉框中,选择默认的

Default(*)标签页。最后点击绑定按钮。如下截图。

在修改完成后,CloudFront可能需要5~10分钟将函数同步到全球的POP点。此时在函数列表页面上,函数的

Status位置会显示

Updating。如下截图。

在发布成功后,对目录

https://www.abc.com/dir01发起访问,可看到默认页被正常的显示。

至此针对

www.abc.com的静态网站发布配置完成

三、针对顶级域名的跳转配置

在本文第一章提到,

abc.com根域名和

www.abc.com是两个独立的域名,需要分别配置。通常,

abc.com顶级域名会需要自动跳转到

www.abc.com。那么这里就来配置一个自动跳转。

1、创建独立的ACM证书、S3存储桶、发布点、绑定域名、设置发布点默认页

配置过程和上一章配置

www.abc.com的配置过程相同。需要注意的是,ACM需要独立的顶级域名证书。在CloudFront发布点配置选项中,设置默认页为

index.html。上一章节的最后的CloudFront Function子目录的跳转功能就不需要了。因为这里实现的

abc.com到

www.abc.com跳转,不涉及子目录。

2、放置跳转页面

abc.com对应的S3存储桶内,放置一个

index.html页面。内容如下。

由此即可实现

abc.com到

www.abc.com跳转。

四、配置CORS允许跨站访问

1、关于CORS背景

CORS的全程是Cross-Origin Resource Sharing,是浏览器跨站访问的技术规范。在使用S3静态托管时候,如果网页中的调用使用了CORS,那么需要为S3和CloudFront增加对应策略,才可以正常加载内容。

需要注意的是,并非所有内容应用都需要CORS。例如在网页主站的HTML中,如果直接使用标签,是不会触发CORS的策略的。而对于现今网页大量使用各种脚本的情况,脚本会访问其他域名下的资源、或者是主域名相同但是加载其他子域名下的资源,访问行为包括GET访问、POST提交内容等。这种行为在浏览器端会触发CORS跨站请求,并在访问资源所在服务时候自动包含对应的CORS请求。此外,针对POST等请求,浏览器还会自动向资源所在的服务器发起OPTIONS请求,确认源站可支持的访问方式。此时就需要正确的配置CORS。

CORS不需要在网页代码中增加额外配置,但是存放资源的服务器需要配置对应的CORS策略。对于本例中,使用S3做静态托管、使用CloudFront做加速,则必须要在S3上配置CORS策略,并在CloudFront上转发CORS请求Header,才可以跑通跨站请求。

2、示例网页代码

编辑网页

test.html,里边使用javascript加载位于另外二级域名网站上的图片。代码如下。

3、S3存储桶的CORS策略

在S3的管理控制台,查找并进入相应的存储桶,点击

Permissions标签页,向下滚动页面,找到

Cross-origin resource sharing (CORS)的配置。点击编辑按钮,然后输入如下策略:

点击保存,配置成功。

上面配置的含义是,允许来自

https://web.mydomain.com 网站上的网页中的Javascript程序使用GET和HEAD方法访问当前S3 Bucket下的资源,允许携带任意Header,浏览器缓存CORS结果3600秒。以上规则要求,从CloudFront发给S3的Request Header必须与S3 CORS策略中配置的完全一样。因此这还需要CloudFront配置特定转发规则。另外需要注意,S3因为是静态网站托管,因此

AllowedMethods支持的方法仅包括

GET、PUT、POST、DELETE、HEAD,这个列表中不需要填写

OPTIONS方法。而实际浏览器发送

OPTIONS请求时候,是可以获得正确的返回结果的。

4、CloudFront的CORS策略配置

在CloudFront的管理控制台,选择图片等资源所在的S3存储桶对应的CloudFront发布点,点击第四个标签页

Behaviors,从下拉框中选择默认的Behavior,然后点击编辑按钮。如下截图。

在编辑访问行为的界面上,将页面向下滚动,从

Origin Request policy – optional中选择

CORS-S3Origin,在

Response header policy – optional中选择

SimpleCORS。如下截图。

以上配置是基于S3静态网站服务的配置,因此只选择

CORS-S3Origin和

SimpleCORS即可。保存后,等待CloudFront分发配置生效。

等待几分钟待CloudFront的配置同步到全球发布点完成后,使用浏览器访问网页,可看到图片加载成功。

五、使用CloudFront发布静态网站的最佳实践

1、使用CloudFront OAC(Origin Access Control)策略实现对私有S3存储桶的访问

在上文的配置过程中,CloudFront最新的向导配置会自动给S3的存储桶配置存储策略。这个功能被称为OAC(Origin Access Control)。OAC策略是由CloudFront自动配置。此时进入S3存储桶,进入

Permissions标签页,在S3存储桶策略中可以看到如下一段。

以上就是CloudFront向导自动添加的S3存储桶策略。如果需要修改存储桶策略,请保持以上内容不要删除,否则将导致CloudFront访问源站失败。

2、开启Origin Shield优化回源流量提升缓存命中率

CloudFront的回源默认是从离用户最近的POP点发起直接访问,因此当访问者分布在全球时候,回源路径是分布在全球的POP点的。使用Origin Shield功能,可以让整个CloudFront所有POP点的回源先汇聚在一个地点,然后从这个单一地点回源。此时网络流量的传输将借助AWS骨干网,有效改善访问延迟。使用Origin Shield之后,源站可以设置安全规则组,仅对Origin Shield回源特定的IP地址放行,由此大大提升安全性。

针对使用私有S3存储桶作为静态网页存储的场景,因为本身S3存储桶已经是私有状态,不涉及安全规则组,因此本选项不涉及安全性提升。此时,开启Origin Shield可提升缓存命中率。下面介绍如何打开。

在CloudFront发布点的配置页面上,点击Origins标签页,点击S3源站,编辑按钮。如下截图。

在源站设置界面,将页面移动到最下方,开启Origin Shield选项,然后将回源的区域改为和S3存储桶相同的区域。然后点击保存按钮。如下截图。

由此即可通过Origin Shield提升缓存命中率。

3、为静态网站托管设置自定义错误页面

使用CloudFront+S3提供静态网站后,一个主要的变化就是不再有404错误类型,所有找不到文件的类型都将返回403错误。这是因为S3存储的文件是以键值(Key)来标识的,当访问/abc.html的时候,如果这个文件不存在,S3返回的是

找不到这个Key/或者这个Key存在但是没有权限的错误。这个时候CloudFront返回的错误代码是403。这就是没有404错误的原因。如果不修改自定义错误页面的配置,当用户输入了错误地址时候,会显示没权限错误,可能引起访问者的误解,误以为是网站故障而不是自己输入错误的地址。

为此,建议自定义错误页面,将404和403错误都指向到自己的自定义页面。

进入CloudFront发布点,点击Error pages标签页,点击右上角的创建自定义错误响应按钮。如下截图。

在自定义错误响应页面上,点击

HTTP error code下拉框,首先选中403错误,然后将下方的

Customize error response的打开设置为

Yes。在下方自定义错误页面路径的位置,输入

/errorpage.html,这个就是自定义的错误页面,然后把最下方的错误代码设置为403错误。如下截图。

由此403错误的页面配置完成。再次重复以上设置,将404错误也指向

/errorpage.html。

4、使用多条行为规则细化缓存管理

CloudFront创建发布点向导时候,选择源站是S3将会自动配置缓存优化规则。因此如果要刷新,要强制进行过期操作。

首先我们先看下默认的规则。进入发布点,点击

Behaviors标签页,选择默认的行为,点击编辑按钮。如下截图。

Cache key and origin requests选项位置上,可看到CloudFront向导推荐的设置是

Cache policy and origin request policy (recommended),并且配置的是

CachingOptimized规则。点击

View Policy按钮,即可查看规则。如下截图。

点击

View Policy按钮后,跳到查看规则界面。这就是默认规则。如果需要自定义规则,可以新建规则、并重新配置到本CloudFront发布点。如下截图。

如果希望清除所有CloudFront的POP点上的缓存,那么可以通过在发布点的

Invalidations界面上发起过期的请求。如下截图。

在创建新的规则位置,输入

/*即可将全站的缓存清除。

此外,转向静态化之后,不同的网站内容类型、不同的栏目、包括首页、和详细文章内容页,可能分别有不同的缓存策略,此处建议创建多条行为规则,匹配不同的路径和扩展名,分别管理缓存规则。

5、设置CloudFront Response Policy屏蔽S3文件暴露的标签

存储在S3存储桶上的文件是包含特定的标签,包括加密方式、ETAG、存储级别等。当通过自己的应用程序访问S3时候并不是问题,但如果通过CloudFront对S3进行发布,这些Tag会被CloudFront透传出来。

下边以访问某图片文件为例。

访问结果如下:

以上信息中,可以看到文件创建时间、etag、S3存储加密方式、Server、POP点等信息。去掉CloudFront对外提供服务正常的Header(如POP点、缓存命中率),其中一些信息可能是不希望暴露给用户的。如果使用了Storage Gateway对S3进行读写,那么Storage Gateway也会添加大量的Header,例如如下。

以上信息就是通过Storage Gateway对S3进行读写时候,会额外添加的Header。

对于使用CloudFront进行发布的用户来说,这些信息可能是不希望对外暴露的,此时可以通过修改CloudFront Policy规则进行修改。具体屏蔽方法如下。

进入cloudFront的Policy规则界面,点击第三个标签页

Response headers,点击右下角的创建按钮。如下截图。

在名称位置,输入自定义名称。如下截图。

Remove headers位置,输入要被CloudFront去除的header。然后点击创建按钮。如下截图。

由此,即可移除不想对外展示的header。

需要注意的是,这里不能添加无限数量的header,处理能力总数有一定限制,最大可以输入10个。

6、使用WAF进行流量控制

由于原始网站是静态内容并且使用S3托管,因此不需要对安全方面有所担心,在CloudFront上默认不开启WAF也可以确保基本的安全。如果希望通过WAF进行更多检查,例如控制流量,检查Refer,检查特定Header等。

具体WAF配置过程,这里不再详细描述,请参考WAF服务相关文档。

7、使用S3存储桶生命周期删除过期页面

全静态化网站意味着内容的管理仅靠文件版本来进行,无法像动态网站那样决定显示数据库中的哪一条。因此,可打开存储桶的Versioning版本管理功能,并设置S3 Lifecycle生命周期规则,将过期的旧版本过期删除。

在存储分层管理方面,因为S3自动分层对小于128KB大小的对象无效,且S3IA不频繁访问层也不会生效,因此对于以HTML页面为主的全静态网站场景,无须使用自动分层。如果网站中包含大量图片、引用素材,他们平均体积远大于128KB,那么建议上传文件时候就把所有文件的存储层设置为自动分层,或者使用S3 Lifecycle将存量文件转换为S3自动分层存储类型。

8、网站备份

静态化网站的备份可通过应用端读取S3存储桶的方式实现,不过这样会导致大量对S3的遍历访问。另一种办法是,开启S3的复制规则,将S3所有文件复制到另一个区域、甚至另一个账号的存储桶。由此在作为生产环境的当前存储桶受到错误删除或者其他破坏时候,就可以从远端的存储桶恢复文件。

六、参考文档

Use an Amazon CloudFront distribution to serve a static website

https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/getting-started-cloudfront-overview.html

S3 CORS配置

https://docs.aws.amazon.com/AmazonS3/latest/userguide/cors.html

*前述特定亚马逊云科技生成式人工智能相关的服务目前在亚马逊云科技海外区域可用。亚马逊云科技中国区域相关云服务由西云数据和光环新网运营,具体信息以中国区域官网为准。


Q CLI助力合合信息实现Aurora的升级运营

AWS账单代付阅读(22)

亚马逊AWS官方博客

Q CLI助力合合信息实现Aurora的升级运营

1. 升级背景

合合信息是一家中国领先的人工智能(AI)产品公司,一直致力于通过AI技术赋能创新,为全球数亿用户和多元化行业提供产品服务。凭借超过18年的AI研究和应用专业知识,合合信息已成为全球多模态大模型文本智能技术的领先者,并自主研发推出了一系列产品,包括扫描全能王、名片全能王、启信宝、TextIn和Chaterm,公司业务遍及全球200多个国家和地区。

目前合合信息在海外区域有多套Aurora MySQL实例运行在3.x版本,计算节点的配置为r6g。我们期望与亚马逊云科技合作达成以下目标:

1.1 ** **借助Graviton4机型提升Aurora集群性价比

众所周知,Graviton芯片的算力和性价比是相当出众的,曾有Blog提到次新一代Graviton3与高于Graviton3一代的Intel r7i机型相比,在.net的测试场景中有23~32%的性能提升,但价格却更便宜(可参考Blog)。在本次实验当中合合信息将在Aurora服务上验证最新的Graviton4的性能收益,也希望通过引入G4机型到Aurora服务中来提升当前数据库集群的处理能力,享受到最新Graviton4芯片所带来的大幅度性价比提升。

1.2 ** **借助Aurora 3.10 LTS版本获得更长的生命周期

Aurora MySQL 3.10版本在2025年8月份发布,这一版本与普通的发布版本仅支持1年不同,LTS 3.10版本将提供近3年的支持时间,即到2028年。用户可以保持在LTS版本3年以避免每年一次的升级工作,同时因为升级切换带来的业务影响也被减少到最低。

1.3 ** **借助Q CLI加速技术验证,支撑Aurora演进

在生产迁移前需要对Graviton4做性能验证,同时需要对节点切换的影响做深入的分析,最小化切换对应用访问的影响,但这些工作往往是需要繁杂的环境搭建和工具设计才能完成,本次合合信息的测试验证当中就大量使用了Q CLI来加速技术验证,甚至形成多维度的分析报告。让我们在接下来的章节里展示如何使用Q CLI来加速合合信息在Aurora + Graviton4上的技术验证。

2. Aurora** **升级的版本选择

在本次技术验证当中,我们需要对Aurora的版本信息,支持时间,以及引擎与R7g/R8g的兼容信息做整理。如果使用人工,这将是非常耗时,且容易出错的,但当我们配置AWS官方的aws-knowledge-mcp-server,就可以比较方便的生成相关的版本信息。

2.1 Aurora R8g/R7g** **与版本选择建议

当前最新的Aurora mysql 版本是3.10.1,当前LTS版本是3.10,推荐生产系统使用3.10.1版本。

对于Aurora MySQL引擎推荐使用3.10.0 (LTS),获得近3年的支持周期。更长的周期意味着更少的运维工作,同时也能避免强制升级带来的业务影响。

2.2 Aurora R8g** **机型按需/预留实例的可用性

结合Q CLI的MCP功能,借助于AWS Pricing API完成R8g OD/RI在各区域的覆盖情况确认,并借助于aws-knowledge-mcp-server补充相应的发布时间信息。

2.3 Q CLI** **辅助完成版本调研

可以参考以下提示词完成相关内容的生成:

注意:

1.为确保R8g/R7g OD/RI实例可用信息的准确性,这需要aws cli环境支持,profile需要有Pricing API的访问权;

2.需要确保Q CLI配置了这两个MCP Server

  • core-mcp-server:AWS相关的语义识别
  • aws-knowledge-mcp-server:支持streamablehttp

参考链接:https://awslabs.github.io/mcp/servers/aws-knowledge-mcp-server/

3. Q CLI** **加速升级前的技术验证

合合信息在决定将Aurora迁移至最新的Graviton4平台之前,我们对两个维度的信息做了确认,这包括:

  • 性能验证场景 – Graviton2/Graviton3/Graviton4的数据库性能做测试;
  • 应用切换验证 – 切换过程应用影响模拟与分析;

以下我们将通过Q CLI来加速这些维度的技术验证。

3.1 ** **使用Q CLI加速Aurora的G2/G3/G4机型的性能对比

想到做一次数据库性能测试,相信大家会想到有这几类工作要做:

设计阶段:设计并搭建测试环境,包括VPC/子网/安全组,用于测试的堡垒机和Aurora集群; 测试阶段:安装sysbench,为ARM架构编译程序,创建测试数据,编写脚本,多次测试; 生成测试报告:分析测试数据,用Excel画出表格,以此得出测试结论;

但使用了Q CLI之后以上除了实验设计,测试方法,测试报告要求需要明确外,其它工作都可以交给Q CLI来完成。它可以帮我们达成什么样的结果,我们一步步看。

3.1.1 Q CLI** **创建的验证环境和验证流程图** **1.** **验证机型选择** **2.** **验证资源与架构图

借助于Q CLI的xml解析能力,在完成了测试环境搭建之后,它为本次测试环境生成了drawio格式的架构图(字体重叠问题需人工美化):

3.** **验证流程概要

对于本次测试需要测试人员与Q CLI紧密协作,因为Q CLI还不具备独立完成测试流程制订的能力,需要融合我们在性能测试的许多方法和经验积累。 以下为Q CLI根据多次的修改补充后完成的测试计划,并且使用drawio格式生成的测试流程图,为了美观总体布局做了少量调整。

3.1.2 ** **使用Q CLI完成测试结果分析与报告展示

Q CLI在本次的技术验证中发挥了重大的作用,尤其是在测试结果的分析和呈现上,可以生成非常美观的测试报告,而这些报告可以作为独立的交付物存档总结。

1.** **性能验证总结** **2.** **测试各项指标情** **3.** **详细的测试数据与性价比折算** **4.** **验证总结

通过这次性能验证测试,我们可以按每百万TPS每美金的成本来对比不同机型的差异:

r8g.2xlarge TPS** **提升113%:**最新一代处理器,在128线程高并发场景下表现优异,测试结果为27.22百万 **TPS/$;** **r7g.2xlarge TPS** **提升40%:**平衡的性能表现,适合大多数工作负载,在128线程下,测试结果为15.55百万 **TPS/$;** **r6g.2xlarge** **测试基线:**128线程并发下,测试结果为13.88百万 **TPS/$;** **5.Q CLI** **提示词参考

以下是提示词参考

3.2 Q CLI** **加速应用切换透视与验证

Aurora集群在节点切换或蓝绿部署的切换上提供非常好的体验, 从技术上我们也希望借助于Q CLI的能力,帮我们理清楚两个技术问题:

读写访问的影响机制:在节点切换的整个过程,应用程序会经历哪些阶段,会有怎样的行为表现; 实例切换与DNS切换的时间关系:DNS切换与实例切换的关系,以及哪些机制将有助于减少切换对业务的影响;

3.2.1 ** **测试场景设计

3.2.2 ** **测试的重要指标

3.2.3.** **测试的时间线

下图是切换过程操作的时间线与3种探针的表现

3.2.4 ** **切换过程与应用行为

从上面的表格,在整个切换过程中读写探针和DNS探针所有的性能变化,报错类型,这些都尽收眼底,我们终于比较透彻了解切换过程应用程序的行为表现。

3.2.5 ** **切换测试结论

通过上面的测试我们可以看出:

  • 业务的影响为14s,其中读操作的影响为9s,写操作的影响为14s,这说明如果应用可以有读写分离,在节点切换时将能提供更高的可用性;
  • 在Aurora实例发生切换到DNS的IP映射真实切换之间,对于写操作都是不可用的,这期间的连接尝试也是无效和;
  • 在DNS切换完成后写操作完全恢复正常,这表明DNS切换是应用恢复的唯一标记;
  • 3.2.6 ** **应用切换的优化

既然DNS切换是应用恢复的唯一标记,我们可以通过以下两种方式使应用切换变得更快,更有效率:

  • 对于具备DNS检测的应用,它最终会通过DNS解析到新的IP,连接到新的实例;
  • 对于没有DNS检测的应用,在切换发生后,将新的集群IP刷新给这些应用(reload或重启服务),这些应用也会连接到正确的实例;
  • 使用AWS官方的驱动程序或Wrapper插件实现集群拓扑感知,在第一时间获知IP改变,第一时间恢复连接;

官方的数据库驱动加速切换的原理,可以参考这篇博客《Demystifying the AWS advanced JDBC wrapper plugins》

3.2.7 Q CLI** **的提示词参考

切换测试进行过许多次,提示词会根据Q CLI输出的不同根据测试目标做调整,所以这个提示词不是合并所有修改的版本,并且你使用它可能的输出不一定相同,需要结合你的测试环境,测试要求来确定。以下是一个供参考的版本。

4. ** **升级方案选择与升级过程

借助于上面的技术验证,我们对将生产环境切换到Aurora的Graviton4机型更加有信心了,那么接下来我们要做的就是升级方案的选择,因为我们的Aurora MySQL数据库的主要版本在3.04上,需要升级到Aurora 3.10 LTS版本。

在升级方案的选择上,我们可以用Q CLI生成基本的方案建议,但同时我们需要考虑到目前的生产实况,把不常用的方案剔除,接下来我们将从多个维度对比3套升级方案:

4.1 ** **升级方案选择

4.1.1 ** **方案1 – 蓝绿部署(推荐)** **建议方式: 对于升级支持,Aurora提供了蓝绿部署,它将自动创建绿环境(目标环境),并自动同步数据修改,最终按照指令完成DNS指向的切换。。

以下是切换的核心代码,供参考:

4.1.2 ** **方案2 – 原地升级** **直接在原集群上串行执行版本升级和硬件升级,读写业务会受影响,升级后无法回退。

以下是原地升级的核心代码,供参考:

4.1.3 ** **方案3 – 读复本提升** **创建跨区域读副本集群(新版本+新硬件),提升为独立集群后手动切换应用连接。该特性目前只在3.10上支持。

以下是读复本提升的核心代码,供参考:

4.1.4 ** **三种方案的对比

借助于Q CLI我们可以对三种典型的升级方案进行多维度的对比,对比维度包括停机时间/数据安全/回滚能力,以及适用的应用场景等:

根据目前我们过去的生产实践,结合业务停机时间要求,我们将选择蓝绿部署来实现数据库的升级和切换。

4.2 ** **应用切换方案

借助于上面的技术验证结论,应用程序在实例切换时恢复的速度和DNS的变化感知有直接关系,我们对现有的应用进行梳理后,将应用分为两类场景:如果一个应用具备主动的DNS变化检测能力,它在连接重建上将是最有效的。如果应用不具备这样的检测能力,我们就可以结合手工reload配置文件的方式实现应用的快速切换。

根据这个因素我们将生产的业务分为两类场景:

  • 场景1 – 以golang为客户端的数据库中间层,具备DNS变化检测能力
  • 场景2 – 以ngx+lua为客户端的业务中间层,不具备DNS变化检测能力

根据我们的生产实践,这样的区分应用场景的切换虽然稍稍增加运维工作量,但它可以让应用程序在10s之内快速的恢复,这样的切换效率是相当高的。

4.2.1 ** **场景1 – 以golang为客户端的数据库中间层

能自主识别RDS域名后端IP地址变动,该场景下,在蓝绿切换后,客户端会立即将90%到100%的连接切换到绿实例,在域名稳定后(约30秒),reload客户端,完成剩余连接切换。

4.2.2 ** **场景2 – 以ngx+lua为客户端的业务中间层

不能自主识别RDS域名后端IP地址变动,需要提前解析ip,然后在配置中心更新ip,在蓝绿切换后,完成一致性校验,蓝只读,绿可写,约5秒内,reload ngx,实现快速切换。

4.3 ** **完整的升级过程

结合我们对切换过程最佳实践的了解,可以使用Q CLI对整个升级过程做梳理,把相关工作按阶段划分,可以为我们生成清晰的drawio格式的升级与切换过程的展示。

在技术验证和方案整理上,Q CLI是非常得力的助力,可以为我们提升数倍的工作效率。在生产集群的升级切换阶段,我们为了最大程度的过程可控性,仍然使用Console方式来实现集群的升级和切换。

4.3.1 ** **开启Binlog

如果在初次使用蓝绿部署,因为Binlog为静态参数,设置这个参数需要实例重启,请注意。

4.3.2 ** **创建蓝绿部署

4.3.3 ** **确认并创建

4.3.4 ** **创建完成

4.3.5 ** **修改绿实例类型

绿环境创建后,手动停止复制(CALL mysql.rds_stop_replication; show slave status\G),记录复制位置信息,单独修改实例类型:

4.3.6 ** **恢复Binlog同步

实例类型修改成功后,验证复制位置,手动启动复制(show slave status\G; CALL mysql.rds_start_replication;)验证数据同步后,安排窗口执行切换。

4.3.7 ** **蓝绿集群切换

4.3.8 ** **执行应用切换

根据4.2的方案,我们区分不同应用场景完成应用配置的reload,此处需要确认应用操作的正确性。

4.3.9 ** **删除旧集群

先关闭集群删除保护,使用以下命令或console完成旧集群的删除。

4.4 ** **升级过程中的关注点

我们在生产集群的升级切换当中,在同步环节曾经遇到Relay Log堆积的情况,我们借助于企业服务,在TAM的协助下,快速的定位原因,并实施的优化方案,这使同步延迟快速的解决,确保了应用切换前蓝绿集群可以达到同步状态。

4.4.1 ** **同步延迟的优化

  • binlog_transaction_dependency_tracking=WRITESET (源库跟目标库都要设置)

这个参数可以非常有效和提高复制效能:

a. 更精确地识别事务之间的依赖关系

b. 允许不相关的事务并行执行

c. 减少复制延迟

d. 改善并行复制

  • aurora_binlog_replication_sec_index_parallel_workers=8

在Aurora MySQL 3.06及以上版本中,当复制具有多个二级索引的大表事务时,通过该特性引入线程池,在二进制日志副本上并行应用二级索引进行变更,有效提升同步速度

4.4.2 ** **其它参数优化

  • 关闭Aurora 3.10的新特性Memory Relaylog :aurora_in_memory_relaylog=OFF

避免绿实例报错:can’t find relay log

参数的功能描述请参考:https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/binlog-optimization.html

5.** **升级后的运行效果

我们在9月9号非常顺利的完成了Aurora数据库的切换,从按下来一周的系统负载数据看,CPU负载和事务提交/DML延迟都有近50%的下降,这也和我们之前的技术验证结果完全吻合。

5.1 ** **日间CPU高峰负载下降近一半(47%)

9月9号0时,我们完成了数据库实例和Aurora 3.10+Graviton4机型的迁移,8号与9号的业务负载模式其实是相同的(为工作日模式,7号为周末模式),所以从系统的峰值的变化可以得到引入Aurora 3.10+Graviton4带来的负载变化:CPU的日间峰值从8号的50%下降到9号的27%左右,降幅为47%;CPU的凌晨高峰从64%下降到52%,降幅为19%。

5.2 ** **日间提交/DMLLatency降低50%

同样的,我们来看事务提交延迟,日间最大提交Latency从8号的5ms下降到2.5ms,下降幅度为50%,凌晨的最大提交Latency从9号的27ms下降到5ms,下降幅度为81%。

对于DML延迟也有相当明显的表现,日间最大DML延迟从8号的2ms下降到1.7ms,下降幅度为30%。凌晨DML延迟从8号的3ms下降到1ms,下降幅度为60%。

6. 回顾与总结

作为今年运维工作的重要部分,在过去的2个月,我们完成了对Graviton4的性能验证,生产业务模拟的切换验证,以及Aurora的版本选择和生产环境完成升级,而Q CLI也提供了直接或间接的支持。

6.1 Aurora 3.10** **与Graviton4机型的综合表现

从最终的生产系统的负载信息,我们不难看出Aurora的Graviton4机型的引入相当明显把CPU使用率降低了47%,事务提交和DML延迟也降低了近50%,这意味着Aurora集群在成本没有显著增加的情况下,可以为业务提供近1倍的数据库计算能力。

Aurora 3.10版本为业务提供了比常规版本更长期的支持周期,接近3年,这也意味着更少的停机时间,更少的业务中断和更低的运维成本。

6.2 TAM** **与Q CLI在方案落地过程中的价值体现

在本项目中Amazon Q CLI以出色的架构感知和操控能力,相当大程度上加速了技术验证,版本分析,方案对比等工作:

TAM 有力的支持 –在技术验证和生产集群的切换期间,企业服务团队的TAM从前期的技术验证,到后期的切换过程的复制优化,体现了TAM自身扎实的技术能力,并且为客户发声,高效的协调前后端团队,提供了许许多多思路,解决了众多技术疑难问题; 性能与切换场景验证 –在测试方案设计,方案补充,以及环境搭建,测试工具生成,测试数据分析与报告整理,Q CLI可以提供非常好的协助,显著缩短测试周期,为生产切换做技术准备,让切换更有信心; 版本分析与建议 –Q CLI可以更快速的从在线文档、Blog、What’s new、Pricing API等官方资源、途径中提炼、汇总多方面的数据,形成完全适用于合合信息的版本建议,这节省了大量的人工查阅的时间,也提升了准确性; 数据分析与报告生成 –我们可以使用Q CLI对多维度的测试数据进行分析,并且在架构图生成,流程图生成,分析报告呈现和渲染,这些工作上Q CLI都为我们大幅度提升了效率,也提升了交付物的质量;

6.3 ** **未来探索 – Q CLI在运维场景的应用

在本项目当中Q CLI 在技术验证上是运维同学得力的助手,提升的效率,我们同时也会在以下运维场景中深度使用这个工具:

运维故障诊断 –借助于Q CLI对AWS资源的理解和强大的知识库支撑,加速运维故障分析与解决; 运维知识库 –Q CLI提供了与Bedrock KnowledgeBase交互的MCP Server支持,可以将运维信息更充分的在团队内部分享; 运维工具开发 –Q CLI提供了越来越丰富的代码编写支持,从Todos/Hooks到Issue的管理,降低运维开发门槛; 智能巡检 –基于AWS后端知识库,可以对生产、开发环境做深度的架构分析,发现更多可优化的技术项,提升运维水平;

以上是我们对Q CLI在未来运维价值的展望,相信熟练运用这些工具,会不断提升我们的运维水平、运维效率。

7 ** **本文提到的技术资料链接

https://github.com/lvst-gh/qcli-aurora-graviton4/

*前述特定亚马逊云科技生成式人工智能相关的服务目前在亚马逊云科技海外区域可用。亚马逊云科技中国区域相关云服务由西云数据和光环新网运营,具体信息以中国区域官网为准。


Amazon Q Developer 结合 MCP 实现智能邮件和日程管理

AWS账单代付阅读(41)

亚马逊AWS官方博客

Amazon Q Developer 结合 MCP 实现智能邮件和日程管理

1. 概述

在现代办公环境中,邮件和日程管理是日常工作的重要组成部分。Microsoft Outlook作为企业级邮件和日历解决方案,承载着大量的沟通和协作信息。然而,传统的手动操作方式往往效率低下,难以满足快节奏工作环境的需求。

本文将介绍如何通过Amazon Q Developer,结合Model Context Protocol (MCP)技术,实现对Outlook邮件和日程的智能化处理,大幅提升办公效率。

2. 方案介绍

Model Context Protocol (MCP) 是一个开放标准,旨在为AI应用程序提供安全、可控的方式来访问外部数据源和工具。通过MCP,AI助手可以:

– 连接到各种数据源(数据库、API、文件系统等)

– 执行特定的操作和工具调用

– 在安全的沙箱环境中运行

– 提供标准化的接口供不同AI客户端使用

2.1 Outlook MCP Server 架构

我们这里采用了开源的

__Wallisking1991__ 开发的Outlook MCP Server [附录1]。它是一个专门为Microsoft Outlook设计的MCP实现,为了提高显示效果,我们还增加了日历管理功能[附录2]:

2.2 技术架构

2.3 核心功能

邮件管理功能:

– 📧 邮件文件夹管理

– 📋 邮件列表和搜索

– 📖 邮件详细内容查看

– ✍️ 邮件撰写和回复

– 💾 草稿保存功能

日历管理功能

– 📅 日程列表查看

– 🔍 日程搜索

– 📝 日程详细信息

– ➕ 新建日程安排

3. 安装和配置

3.1 环境准备

确保您的系统满足以下要求:

– Windows操作系统 或者Mac操作系统

– Python 3.10或更高版本

– Microsoft Outlook已安装并配置

3.2 安装Visual Studio Code

  • 访问 [Visual Studio Code官网](https://code.visualstudio.com/)
  • 下载适合您操作系统的安装包
  • 运行安装程序,按照向导完成安装
  • 启动VS Code
  • 3.3 安装Amazon Q Developer插件

通过VS Code扩展市场安装:

  • 打开Visual Studio Code
  • 点击左侧活动栏的扩展图标(或按 `Ctrl+Shift+X`)
  • 在搜索框中输入 “Amazon Q”
  • 找到 “Amazon Q” 插件,点击 “Install” 安装
  • 安装完成后,重启VS Code
  • 3.4 配置Amazon Q Developer

  • 安装插件后,VS Code左侧会出现Amazon Q图标
  • 点击Amazon Q图标,按照提示进行身份验证
  • 选择适合的认证方式(AWS Builder ID或IAM Identity Center)
  • 完成认证后即可开始使用
  • 3.5 MCP Server配置(Windows)

    3.5.1 下载outlook mcp server

  • 将[附录2]中的源代码下载至本地硬盘,然后解压。我们也可以通过git clone的方式将源代码下载到本地。
  • 用VS Code打开该目录
  • 3.5.2 安装Python依赖

打开VS Code的Terminal窗口,执行以下命令安装Python依赖包。

pip install –r requirements.txt

安装完成后可以测试一下是否可以运行outlook mcp server:

python outlook_mcp_server.py

如果能够正确的显示连接到outlook,同时显示出有多少邮件,则表明该MCP Server工作。这时可以按Ctrl-C退出。

3.5.3 配置MCP服务器

在Amazon Q Developer中配置Outlook MCP服务器:

  • 在VS Code中打开Amazon Q
  • 在chat窗口的右上角点击Configure MCP Server的按钮
  • 点击chat窗口的右上角点击Add new MCP
  • 添加以下配置:

注意: 请将路径替换为您实际的python.exe和outlook_mcp_server.py文件路径。

  • 添加完成后,系统会自动激活该MCP Server,点击进去可以看到提供的具体功能,并可以配置是否运行执行:
  • 3.6 Mac系统的Outlook MCP Server

    3.6.1 下载outlook mcp server

将[附录3]中的源代码下载至本地硬盘,然后解压。我们也可以通过git clone的方式将源代码下载到本地。

3.6.2 用VS Code打开该目录, 通过bun安装所需依赖

打开VS Code的Terminal窗口,执行以下命令安装依赖包。

bun install

确保脚本可被执行

chmod +x index.ts

安装完成后可以测试一下是否可以运行outlook mcp server:

bun run index.ts

3.6.3 配置MCP服务器

在Amazon Q Developer中配置Outlook MCP服务器:

  • 在VS Code中打开Amazon Q
  • 在chat窗口的右上角点击Configure MCP Server的按钮
  • 点击chat窗口的右上角点击Add new MCP
  • 添加以下配置:

Command: /Users/[Username]/.bun/bin/bun

Arguments: run

/path/to/mcp/server/index.ts

4. 实际应用场景

接下来我们就可以尝试一下如何使用了。(以下仅以windows系统为例进行测试和说明, Mac系统MCP服务器可能会有所区别, 请按照MCP相关说明进行调整)

先说明两点:

  • 如果您没有在上面7的第5步配置Always allow,那每次Amazon Q在调用在运行过程中需要手动点击Run。
  • 在Outlook MCP Server调用Outlook时会弹出一个是否允许的对话框,请点击Allow,并且为了避免每次都要询问,可以运行10分钟。
  • 5.1 场景一:智能邮件处理

    用户需求**:”帮我查看最近3天关于项目AI-Tide的更新邮件” **Amazon Q** **处理流程:

  • 调用`search_emails`工具搜索相关邮件
  • 使用`get_email_by_number`获取邮件详情
  • 智能分析邮件内容并提供摘要
  • 5.2 场景二:智能日程管理

    用户需求**: “查看今明两天的会议安排” **Amazon Q** **处理流程:

  • 调用`list_calendar_appointments`获取日程
  • 智能分析会议冲突和时间安排
  • 提供优化建议
  • 5.3 场景三:邮件撰写

    用户需求:**“请撰写一封有关Project AI-Tide的邮件,收件人是 ai-tide-team **@outlook.com,** 根据之前该项目的更新邮件,表达对team这段时间辛苦工作的感谢。请不要直接发送,而是存在草稿箱中。” **Amazon Q** **处理流程:

  • 智能生成邮件内容
  • 调用`compose_email`创建邮件
  • 默认保存为草稿,避免误发

此时在Outlook的Drafts里面可以看到已经生成的邮件:

我们发现Amazon Q生成的是中文邮件,可能是因为我们用中文来对话。后续我们可以明确提出要用英文写邮件:

6. 结论

通过Amazon Q Developer与Outlook MCP Server的结合,我们实现了分析、撰写和回复邮件,也可以列出和安排日程,这种创新的集成方案不仅提升了个人办公效率,也为企业级AI应用提供了新的可能性。随着MCP生态系统的不断发展,我们期待看到更多创新的应用场景和解决方案。

附录:

  • https://github.com/Wallisking1991/outlook-mcp-server
  • https://github.com/xmubeta/outlook-mcp-server
  • https://github.com/syedazharmbnr1/claude-outlook-mcp
  • *前述特定亚马逊云科技生成式人工智能相关的服务目前在亚马逊云科技海外区域可用。亚马逊云科技中国区域相关云服务由西云数据和光环新网运营,具体信息以中国区域官网为准。


利用CloudEndure进行On-Prem到AWS云上灾备的最佳实践

AWS账单代付阅读(41)

亚马逊AWS官方博客

利用CloudEndure进行On-Prem到AWS云上灾备的最佳实践

在面对潜在灾难时,企业需确保其关键业务系统的韧性和故障恢复能力。为了应对灾难事件,作为一名容灾老兵,CloudEndure仍然在为AWS中国区域用户提供弹性灾难恢复服务来执行故障转移,确保业务的连续性。CloudEndure用于执行托管在数据中心本地或任何其他云平台上的服务器的灾难恢复,它允许使用经济实惠的存储、最少的计算资源和持续性数据复制等技术将停机时间和数据丢失降至最低,同时提供了非干扰性故障回退测试的优势,使得企业能够在不影响现有业务的情况下进行灾难恢复演练,从而实现本地和基于云的应用程序的快速、可靠恢复。

在众多迁移/容灾工具中, CloudEndure主要优势体现在以下几个方面:

  • 操作流程简化,自动化水平高,大幅降低了迁移和容灾的复杂度,提高了用户体验。
  • 适用范围广泛,只要操作系统满足Agent安装条件,且Agent可访问CE服务器,即可支持物理主机、虚拟机和云主机的迁移/容灾。
  • 采用基于操作系统的连续数据块级复制技术,实现了毫秒级的恢复点目标(RPO),分钟级的恢复时间目标(RTO),确保了数据复制的高效与实时性。
  • 数据复制过程对云端资源占用少,有效降低了容灾的运行成本,提高了经济性。

在这篇博客文章中,将重点关注在利用CloudEndure进行On-prem至AWS中国区域进行平稳故障转移和故障回退时可以遵循的最佳实践。

CloudEndure Disaster Recovery 核心组件

我们可以按照功能角色将CloudEndure 分为三个主要组件,它们组合起来形成数据复制流。

第一个区域是源区域,这是 CloudEndure 代理运行的位置,CloudEndure的代理安装在源操作系统,支持数据中心物理机器、任何Hypervisor的虚拟机和云主机,同样支持在AWS的区域或可用性区之间进行复制和容灾。CloudEndure代理执行两项任务,第一个是对连接到源系统任何卷的内容进行初始块级读取,并将内容一次性复制到目标云位置,可能需要几分钟到几天的时间,具体取决于要复制的数据量以及源和目标之间的可用网络带宽;第二个是实时监控对源系统任何卷的所有块级修改,在初始复制完成后,位于目标AWS区域的 CloudEndure 复制实例将持续同步到最新的块级修改,从而提供接近于零的 RPO(恢复点目标)。

第二个区域是暂存区,参考守夜灯的设计,负责承载复制需求和容灾数据存储。在初始化配置完成后,CloudEndure会在该区域生成复制实例,并会为要保护的每个源系统的硬盘创建一个 EBS 卷,并挂载给复制实例。复制实例从源接收数据并将块数据写入相应的 EBS 卷,其中EBS卷的数量和源系统的物理或虚拟硬盘的数量1:1对应,EBS 卷的大小按照源系统硬盘的裸容量大小而非实际使用容量大小进行分配。每个复制实例最多挂载15个EBS卷,超过该数量即再生成一个复制实例,这里EBS卷可以支持选择低成本的存储类型;若单个源系统的硬盘数量超过15个,则可为该源配置一台专用的复制实例。

第三个组成区域是容灾恢复区域,用于承载容灾业务的恢复,在启动故障转移或演练测试后,已复制到暂存区域的数据将编排并转换为生产级实例或测试实例。

持续数据保护

CloudEndure复制技术核心是CDP持续数据保护引擎,可提供实时的、异步的、基于块级别的复制。CDP 会保留系统的所有更改,直到发生故障之前的最后一次写入,将增量即数据的任何更改从源复制到目标,从而允许恢复到该故障点发生之前的最新状态。在CDP状态下可达到亚秒级别的RPO,另外使用连续同步还消除了基于快照的复制引起的潜在性能问题。在网络、IO性能等条件较差时,数据复制会脱离CDP连续数据保护模式,此时则需要关注以下三个信息:

LAG 延迟:自服务器上次处于 CDP 模式以来的时间量。延迟取决于多个因素,例如复制速度、可用网络带宽、总体磁盘存储、复制数据时磁盘的变化以及存储的 I/O 速度。 Backlog 积压:已写入磁盘但仍需要复制才能达到 CDP 模式的数据量。 ETA:返回 CDP状态 的预计剩余时间。

CloudEndure复制规划和策略

复制代理应安装在我们需要复制到 AWS 的每个源系统上,需要设置复制设置参数,包括暂存区域子网、要复制到 AWS 的服务器实例类型、EBS 卷类型、EBS 加密设置等。

最佳实践是使用用户的 AWS 账户为所有恢复实例创建一个专用、单独的子网,在执行数千台服务器的恢复时,可以使用多个子网。 使用多个暂存区域子网可能会导致更高的消耗,因为需要更多的复制服务器。当服务器写入量很大时,将数据从其磁盘复制到共享复制服务器可能会干扰其他服务器的数据复制,因此建议使用专用复制服务器,当然使用专用复制服务器可能会增加在复制过程中的 EC2 成本。

自动卷类型选择根据磁盘写入吞吐量在性能/成本优化类型之间动态切换,选择动态切换时需要给IAM用户添加额外的EBS管理权限, 最佳实践是使用默认值,除非业务需要更改。 对于安全组,建议使用默认的CloudEndure恢复安全组。

目标启动蓝图设置

目标启动设置决定如何在 AWS 中启动恢复实例。 启动设置包括 CloudEndure 启动设置和 EC2 启动模板。

对于启动设置,以下设置是最需要考虑的。

  • 实例类型正确调整大小
  • 启动时实例
  • 复制私有IP
  • 传输服务器标签
  • 操作系统许可

在代理安装期间由 CloudEndure 创建的原始启动模板可以作为默认设置。 另外还可以根据需求通过 CloudEndure 控制台进行更改。根据以下准则在 Amazon EC2 控制台中调整 IOPS(每秒输入/输出操作数):

  • 预配置 IOPS SSD (io1):每 GiB 存储 50 IOPS
  • 预配置 IOPS SSD (io2):每 GiB 存储 500 IOPS
  • 通用 SSD (gp3):每 GiB 存储 500 IOPS
  • 复制网络

建议提供专线链路的专用带宽以提供稳定的连接。CloudEndure支持调整或限制复制带宽, 调整带宽大小时应考虑的因素包括必须传输的数据总量、源服务器的磁盘写入速度、源磁盘 I/O,为了确保达到CDP状态,CloudEndure默认情况下会尽量激进的占用最大带宽。如果源的硬盘性能高于云上存储性能,则会产生滞后CDP状态的情况。由于硬盘的所有写入量都将转化成数据复制的网络流量,考虑到专线价格较高,因此建议过滤掉没有必要进行灾备的写流量比如归档、备份与某些追踪日志等以优化复制网络带宽占用。

除了专线外复制链路也支持VPN,但如果计划使用 VPN 通过共享连接进行复制,用于复制服务器的可用网络带宽将会有所不同。 这可能会导致 CloudEndure 复制代理进入停滞、不健康或滞后状态,并可能给容灾计划带来风险。

CloudEndure 复制速度同样取决于复制服务器接收数据块并将块写入附加 Amazon EBS 卷的能力。 除了默认 I/O 和文件系统缓冲之外,CloudEndure 在复制实例端没有任何形式的队列或缓存。 这意味着直到前一个数据块已写入暂存区,否则要复制的下一个数据块将不会离开源系统。 如果复制实例由于网络瓶颈、CPU 利用率问题或磁盘 I/O 瓶颈而无法跟上更改速度,则复制将开始滞后,RPO 将增长。

实现On-prem至AWS中国区的云上灾备的具体步骤

CloudEndure可以支持多种源机器向云端进行备份, 本文以Windows Hyper V虚拟机向AWS中国区进行云上灾备为例说明具体步骤:

CloudEndure账号申请及相关软件的下载及安装

  • 账号注册: https://console.awscloudendure.cn/#/register/register
  • Console: https://console.awscloudendure.cn/
  • Failback客户端下载: https://console.awscloudendure.cn/api/v5/failback_livecd.iso
  • 配置准备

  • 端口要求:为了进行连接,应打开以下 TCP 端口:
  • 端口 443 用于源服务器和 CloudEndure Console 之间的通信。
  • 端口 443 用于暂存区域子网和 CloudEndure 之间通信。
  • 在每个源服务器上应允许出站 443 端口。
  • 暂存区域子网和 CloudEndure 之间通过 TCP 端口 443 进行通信。
  • 源服务器和暂存区域子网之间通过 TCP 端口 1500 进行通信。
  • 外网访问设置

防火墙需要允许本地服务器访问https://console.awscloudendure.cn/ (ip = 54.223.37.239, port = 443)

  • S3访问需求:

下载 CloudEndure 复制软件需要Failback client启动后可以访问 Amazon S3 存储桶,因此 AWS Replication Agent 应能够访问与 CloudEndure 结合使用的 AWS 区域的 S3 存储桶 URL 和暂存区域子网。

CloudEndure项目创建及初始配置

  • 在AWS控制台创建CloudEndure需要的IAM user

可参考如下json创建 IAM 角色, 并且记录Access KeyID和Secret access key,后续需要使用。

  • 登录CloudEndure Console: https://console.cloudendure.com。在左上角,点击Create New Project,输入项目名称,选择项目类型(容灾),目标端只能是AWS,下面会显示License信息。
  • 在Setup & Info → AWS Credentials中输入上一步获取的IAM User的 Access Key ID /Secret Access Key
  • 在Setup & Info → Replication Setting中,选择源和目标的AWS区域。
  • 在Replication Servers中,对复制服务器进行配置

a. 选择复制服务器实例类型为“Default”,缺省为small;

b. 如勾选Dedicated Replication Servers,则每台源服务器会配置一个xlarge的复制服务器,缺省为“空”表示系统会根据每15块源数据盘配置一个复制服务器;

c. 输入复制服务器所在的子网段和安全组;

d. 在Network Bandwidth Throttling选项中,选择Disabled,如果需要让复制不占用太多网络带宽,可以取消Disabled并设置允许的最大复制带宽。

  • 在Setup & Info tab → OTHER SETTINGS → Installation Token 中点击 GENERATE NEW TOKEN 来获取在源机器中安装agent时所需要的installation token
  • 参考下图进行replication设置
  • 源服务器(Windows HyperV)配置

  • Agent下载: https://console.awscloudendure.cn/installer_win.exe
  • 在源机器(windows Hyper-V)上进行安装
  • 输入之前步骤中获取的installation token
  • 初次数据全量复制

  • 在源机器安装完Agent后,会发起初次全同步,可以在Console主界面的Machines里面查看数据同步的进程。
  • CE服务会自动在AWS账户中创建复制实例, 每个复制实例最多可以承载15个盘的复制。复制实例默认为small规格, 根据复制数据量可以进行调整。
  • 最终会显示Continuous Data Protection的状态。同时,在AWS Seoul区里会出现一台复制服务器实例。
  • 故障切换 (FailOver)

切换是指在AWS目标区域生成容灾服务器的过程。CE服务器会通过API将复制服务器上存储的时间点快照生成EBS卷,并根据用户定义的Blueprint 启动Target Instances 。切换方式可以分为Test Mode (测试模式)和Recovery Mode(恢复模式)。测试模式可以多次启动。恢复模式切换是指灾难发生或者进行灾难演练,将应用切换到AWS云端服务器。此时,应用已不在本地源服务器运行,源端(HyperV)和目标端(AWS)的连续数据复制会停止。

  • 参考下图进行blueprint设置。其中Blueprint的IP设置,取决于failover后aws上的机器是否需要用到public ip。如果都是内网,不需要public ip。假定需要public IP的话,可以设定使用elastic IP或者public IP(ephemeral)。
  • 在Console右上角,选择Initiate Recovery Plan → Test Mode开始进行测试模式切换。
  • 系统会跳出一个菜单让你选择恢复时间点。通常选择“latest”时间点恢复容灾实例。当发生数据误删除、服务器中病毒等情况,你可能会需要选择某一个时间点恢复服务器。
  • 故障回切 (FailOver)

Failback指的是在故障切换后将操作恢复到原始源基础架构的过程。此过程涉及将数据复制的方向从目标基础架构(灾难恢复站点)恢复到原始源基础架构。在达到CDP(持续数据复制)状态后,用户可以执行Failover故障切换。可以选择一个时间点(PIT)的快照进行启动,CloudEndure服务随后将启动一个转换实例,在所选时间点的快照上执行卷的转换,并将转换后的快照作为输出。

  • 准备Failback:
  • 确保CloudEndure项目中的所有源机器都已经在测试或恢复模式下启动了目标机器(即Failover成功)。
  • 在CloudEndure用户控制台的PROJECT ACTIONS菜单下启动“准备Failback”操作。
  • Project将显示“准备恢复到原始源”,机器将在DATA REPLICATION PROGRESS列下显示“启动数据复制”。
  • Failback客户端下载和设置:
  • 从CloudEndure用户控制台的Replication Settings部分下载Failback客户端。
  • 在Hyper-V中将目标机器(VM)引导到CloudEndure Failback客户端镜像(iso)。
  • 在提示时输入CloudEndure安装令牌。
  • Failback客户端流程:
  • Failback客户端将经历多个步骤:
  • 认证Failback客户端和确定要恢复的EC2实例。
  • 在机器上映射卷,如果需要,可以自动或手动进行。
  • 下载CloudEndure Replication Software并进行配置。
  • 验证EC2实例与CloudEndure Service Manager的连接。
  • 与运行在EC2实例上的CloudEndure Agent配对。
  • 通过端口1500与CloudEndure Agent建立连接。
  • 初始数据复制开始。
  • Failback客户端将经历多个步骤:
  • 启动目标机器:
  • 一旦初始复制完成,为失败的机器启动新的目标机器。
  • 选择最新的恢复点,然后点击“CONTINUE WITH LAUNCH”。
  • Failback完成:
  • 在测试或恢复完成后,Failback客户端将指示Failback已完成,并将重新启动机器。
  • 目标机器将弹出Failback客户端并重新引导到新的操作系统。
  • 返回正常运行:
  • 在所有机器都恢复后,选择Project Actions并点击“Return to Normal Operation”。
  • Failback项目已配置为再次复制到目标基础架构,从原始源复制到原始目标。
  • 注意事项

  • Failback启动新的机器时,CloudEndure不会删除源VM,旧的源VM需要手动清理。
  • 如果使用源VM,failback时会进行block level的校验,只回传delta变量数据,速度较快,建议对源VM先在Hypervisor做快照;相反若使用一台新VM引导failback client,则会failback全部recovery instance的数据。
  • 如果在Other Infrastructure(非AWS)源上启动Failback客户端,暂不支持Failback自动化。
  • 停机时间考虑

  • Failback期间的停机时间受多种因素的影响,例如完成Failback客户端过程、启动新目标机器以及恢复正常操作的时间。
  • 为了最小化停机时间,关键是确保每个Failback过程步骤的顺利执行,包括在没有中断的情况下运行Failback客户端。
  • 为了减小停机时间,请确保在Failback过程中的每个步骤中都能够平稳无阻地执行,包括在不同步之间运行Failback客户端。
  • 小结

本文介绍了CloudEndure的功能和特点,并着重介绍了如何对本地源服务器进行云上灾备的步骤和注意事项

参考资料

CloudEndure官方文档: https://docs.cloudendure.com

*前述特定亚马逊云科技生成式人工智能相关的服务目前在亚马逊云科技海外区域可用。亚马逊云科技中国区域相关云服务由西云数据和光环新网运营,具体信息以中国区域官网为准。


Amazon Bedrock助力飞书深诺电商广告分类

AWS账单代付阅读(39)

亚马逊AWS官方博客

Amazon Bedrock助力飞书深诺电商广告分类

项目背景

飞书深诺是中国领先的出海数字营销企业,专注为中国企业提供一站式海外数字营销解决方案,每年管理300亿人民币广告预算,服务近10万家企业出海,产品销往全球230多个国家和地区。其中Datahub 是飞书深诺技术产品事业群数据中台部门,依托飞书深诺独家资源构建的行业大数据底座,多年来为公司多部门提供支撑服务。电商广告行业分类作为数据基础能力建设的一部分,在行业benchmark、账户/站点/签约主体的行业判断等场景中起到关键作用。

Amazon Bedrock 是一项完全托管的服务,通过 API 提供来自Amazon、 AI21 Labs、Anthropic、Cohere、Meta、Mistral AI、Stability AI 等领先人工智能公司的高性能基础模型(FM),并提供通过安全性、隐私性和负责任的人工智能构建生成式人工智能应用程序所需的一系列广泛功能。

2024年以前,飞书深诺广告分类的技术方案主要依托于自行训练的深度学习模型。为提升模型学习效率并降低模型迭代成本,2024年起,从传统深度学习模式切换为多模态大语言模型识别模式,采用由 AWS 提供的 Claude Sonnet 3.5/3.7 以及Nova模型,达成了同步降本和准确识别的目标。

解决方案设计

广告分类任务

广告分类任务涉及分析各种广告素材(图像、视频、文本)并将其分类到特定的行业类别中。这有助于更好地理解市场细分、竞争对手分析和有针对性的广告策略。

而广告素材来源于不同的广告客户,有着不同的类型与风格。广告素材由于投放的渠道,投放的展示位置不同,有着不同的类型和尺寸大小。为了方便下游业务系统进行分析,需要对这些不同的广告素材进行统一处理,因此需要引入统一的分类类目,然后使用多模态模型对广告素材进行处理,归类到统一的分类类目中。

详细解决方案

我们的解决方案采用三阶段流水线架构,充分发挥AWS生成式AI服务的优势,实现从原始素材到精准分类的全流程自动化处理。这种三阶段架构设计既保证了处理效率,又确保了分类精度,为飞书深诺的广告业务提供了强有力的技术支撑。

第一阶段:数据输入与预处理

广告系统的入口环节,系统首先接收来自客户的多样化广告素材,包括视频、图片和文本等不同类型。随后,通过智能路由技术自动识别并分类这些素材的类型,为每种素材确定最合适的处理路径。接下来,系统对各种格式的素材执行标准化预处理操作,如视频长度调整、格式转换、尺寸调整、或文本规范化等,最终将所有素材转化为统一的数据格式,为后续的分析和处理阶段奠定基础。

Amazon Nova模型系列对于图片和视频的要求

Amazon Nova 模型配备了新颖的视觉功能,使该模型能够理解和分析图像和视频。提供的图像或视频质量越高,模型准确理解媒体文件中信息的机会就越大。确保图像或视频清晰,且没有过多的模糊或像素化,以保证更准确的结果。如果图像或视频帧包含重要的文本信息,请确认文本清晰且不要太小。避免仅仅为了放大文本而剪掉关键视觉上下文。

Amazon Nova 模型允许您在有效载荷中包含多张图像。总有效载荷大小不能超过 25 MB。Amazon Nova 模型可以分析传递的图像并回答问题、对图像进行分类以及根据提供的说明汇总图像。

Amazon Nova 模型允许您在有效载荷中包含单个视频,可采用 base64 格式提供,也可以通过 Amazon S3 URI 提供。使用 base64 方法时,总有效载荷大小必须在 25 MB 以内。但是,您可以指定 Amazon S3 URI 来理解图像、视频和文档。使用 Amazon S3 让您能够利用该模型处理更大的文件和多个媒体文件,而不受整体有效载荷大小限制约束。Amazon Nova 可以分析输入视频并回答问题、对视频进行分类,并根据提供的说明汇总视频中的信息。

针对不满足Nova处理条件的图片或视频,可先进行预处理,将其格式化为Nova可接受的媒体格式和大小。例如,使用FFmpeg对本地文件进行预处理的示例代码如下:

第二阶段:多模态理解

在第一阶段,使用多模态大语言模型对广告素材内容进行描述,接收视频、图片、文本三种主要类型的素材。大语言模型能够处理并理解这些内容,并生成内容描述与总结文本。

Amazon Nova模型能够处理文本、图像、视频等多种模态的数据,可以直接输出综合描述。系统能够识别这些不同类型的素材,并进行初步的内容理解和特征提取。我们可以将广告素材直接输入到Nova模型对视频、图像内容进行理解。

Nova通过sdk可以能够直接处理视频片段,例如针对本地视频理解,使用到的参考提示词和示例代码如下:

针对视频文件过大(大于25MB),或者文件已保存在AWS S3中的视频,可直接指定其来源为S3,无须本地再下载,直接读取S3并理解的示例代码如下:

第三阶段:多模态分类

系统对预处理完成的素材进行深度分析,将广告图片内容与相应的广告语文本进行智能关联和联合分析,从而获取更全面的语义理解。随后,这些关联数据通过标”四级分类模型”的精细化处理流程,层层递进地进行类别划分和特征提取,最终生成详尽的视频理解内容文本,完成对广告素材的全方位分类标注 ,为后续的精准投放奠定数据基础。

四级分类模型

电商广告素材存在多种品类,以及大类中包含多级子分类的嵌套分类结构,为了跟各主流电商平台衔接,同时便于SKU管理,现将所有素材统一归为四级分类:

|category_level1_name_ch

|category_level2_name_ch

|category_level3_name_ch

|category_level4_name_ch

|商品

|服装

|女装

|女装裙装

|商品

|服装

|女装

|女装T恤

|商品

|服装

|女装

|女装外套/大衣

|商品

|服装

|女装

|女装裤装/牛仔裤

|商品

|服装

|女装

|女装西服/套装

|商品

|服装

|女装

|女装衬衫

|商品

|服装

|女装

|女装毛衣/卫衣

|商品

|服装

|女装

|女装睡衣/家居服

|商品

|服装

|女装

|女装丝袜/袜子

|商品

|服装

|女装

|女装-其他

|商品

|服装

|男装

|男装T恤

|商品

|服装

|男装

|男装西服/套装

|商品

|服装

|男装

|男装衬衫

|商品

|服装

|男装

|男装裤装/牛仔裤

|商品

|服装

|男装

|男装外套/大衣

|商品

|服装

|男装

|男装毛衣/卫衣

|商品

|服装

|男装

|男装睡衣/家居服

|商品

|服装

|男装

|男装袜子

|商品

|服装

|男装

|男装-其他

针对原始的分类,需要对其格式化,以便于后续输入给LLM进行处理。以下为两种常见的处理方式:

多级分类-带ID号

多级分类-不带ID号

由于LLM已具备很强的理解能力,以上两种方式对于LLM的理解精度无较大差异。”多级分类-带ID号”的方式,由于保留了ID号,便于同除LLM之外的其他业务代码相衔接;”多级分类-不带ID号”的方式则更简洁,便于节省LLM input token数。可按照实际需求灵活选择。

因Claude Sonnet系列模型具备更强的逻辑推理能力,因此使用Claude 3.7 Sonnet模型做最后的分类处理。同时,考虑到四级分类在每次调用LLM时,都不会变,因此可以考虑利用Bedrcok Prompt Caching功能,将其分类列表进行缓存,以便加快推理速度,同时节省大量的input token消耗。

使用Claude 3.7 Sonnet模型做分类的参考提示词和示例代码如下:

结果评估

通过以上方案,我们进行了一系列实验验证,使用多模态Nova Pro模型进行视频理解 + Claude 3.7 Sonnet进行标签分类,并与之前传统的机器学习方法进行了对比。在探索大型模型能力边界的过程中,我们得出了一个关键结论:大型模型并非无所不能。它们能够将成绩较差的偏科学生提升至中上等水平,使他们的表现更加均衡,但不能直接将差学生转变为顶尖学生。

实验数据显示,在图像处理方面,同样的图像和视频样本,在Claude 3.7模型下的识别准确性从传统机器学习方法的44.5%提升至85%。此外,Claude 3.7在推理任务上也表现出明显的准确性提升,特别是在复杂推理能力方面。

为验证这些发现的稳定性,我们收集了一个月内的 1.1万条数据进行验证,这些数据包括了各种各样的商品细分品类。在随机抽取的103个分类中,约90.3%(93个)呈现上升趋势,仅9.7%(10个)呈现下降趋势,进一步证实了大型模型在涉及众多商品品类的分类任务中,无须任何提前训练,在绝大部分的分类任务中,表现都优于传统机器学习方法,表现出很好的准确率与稳定性。

|

准确率(60%以上) |

准确率(30%~60%) |

准确率(低于30%)

|

四级分类 |

旧模型 |

新模型 |

四级分类 |

旧模型 |

新模型 |

四级分类 |

旧模型 |

新模型

|

准确率 |

76.39% |

86.79% |

准确率 |

49.50% |

76.81% |

准确率 |

16.90% |

65.34%

|健康检测设备

|100.00%

|80.36%

|耳环/耳钉/耳挂

|58.75%

|91.67%

|男装外套/大衣

|29.82%

|65.45%

|情趣/计生用品

|100.00%

|92.31%

|办公家具

|58.67%

|95.24%

|卡车/货车

|29.76%

|78.95%

|假发

|95.56%

|95.00%

|面部护肤

|58.46%

|50.63%

|男装西服/套装

|29.37%

|80.95%

|婴童鞋

|93.33%

|97.22%

|普通眼镜

|57.83%

|78.69%

|女装裤装/牛仔裤

|29.27%

|73.02%

|亲子套装

|93.10%

|94.12%

|女装睡衣/家居服

|57.69%

|88.71%

|工具配件

|28.57%

|45.61%

|香水

|91.11%

|84.09%

|泳衣

|57.53%

|80.36%

|女装西服/套装

|28.57%

|94.74%

|滑雪装备

|90.63%

|95.65%

|卫浴装置/配件

|56.25%

|91.80%

|手提包

|28.57%

|63.49%

|男装袜子

|88.89%

|66.67%

|钱包/手包/腰包

|55.17%

|88.46%

|婴儿日用品

|28.57%

|89.80%

|卡牌玩具

|87.50%

|100.00%

|婴儿服饰

|54.29%

|72.73%

|本册纸张

|28.17%

|88.46%

|纹身

|82.86%

|91.67%

|女鞋

|53.85%

|71.11%

|男装睡衣/家居服

|26.92%

|90.00%

|塑形/塑身衣

|82.50%

|73.44%

|男鞋

|53.52%

|76.74%

|其他男士运动服

|26.89%

|71.43%

|墨镜

|82.46%

|97.87%

|面部彩妆

|52.50%

|77.08%

|男装T恤

|25.89%

|62.86%

|美甲

|80.77%

|95.74%

|项链/吊坠

|52.33%

|75.00%

|联网设备

|25.00%

|94.00%

|婴童家具

|78.26%

|86.05%

|户外灯饰

|51.35%

|82.35%

|女装毛衣/卫衣

|25.00%

|54.17%

|腰带/腰带配件

|77.19%

|100.00%

|办公收纳

|51.22%

|81.82%

|专业照明

|23.26%

|64.29%

|婴儿车

|76.19%

|94.44%

|电瓶车/摩托车

|50.94%

|78.57%

|供水/供暖配件

|22.58%

|85.71%

|发饰

|75.61%

|100.00%

|客厅家具

|50.91%

|64.52%

|相机/单反

|20.81%

|63.49%

|模型玩具

|72.73%

|88.24%

|平板电脑

|50.67%

|88.00%

|卫浴用品

|20.00%

|62.50%

|餐厨家具

|71.15%

|84.62%

|家用纺织品

|50.00%

|77.78%

|其他特种车辆

|16.67%

|100.00%

|游泳/潜水装备

|71.05%

|87.23%

|室内健身器材

|50.00%

|91.43%

|手持加工工具

|16.67%

|76.60%

|女装丝袜/袜子

|70.91%

|60.61%

|照明灯具-其他

|50.00%

|60.00%

|其他女士运动服

|15.25%

|60.98%

|彩妆工具

|70.21%

|87.80%

|户外家具

|49.33%

|60.00%

|女装T恤

|14.29%

|61.36%

|毛绒玩具

|68.09%

|94.74%

|耳机

|45.57%

|88.00%

|首饰套装

|10.00%

|81.82%

|运动鞋

|68.09%

|47.62%

|电脑配件

|45.00%

|41.07%

|DIY玩具

|7.69%

|38.24%

|笔记本电脑

|67.92%

|97.30%

|餐厨用品

|44.19%

|53.57%

|车载安全座椅

|0.00%

|60.00%

|卧室家具

|66.13%

|85.00%

|婴童床品

|44.07%

|91.67%

|灯具配件

|0.00%

|25.00%

|文具

|66.10%

|77.59%

|口腔护理

|43.56%

|62.50%

|高尔夫车

|0.00%

|60.00%

|投影仪

|66.07%

|96.08%

|桌面灯

|43.33%

|78.38%

|家电配件

|0.00%

|22.22%

模型可持续性保障

在模型上线后,我们需要持续关注模型的运行状况,要达到如下目标:

自动化监控:减少人工干预,通过机器实时检测异常。 长期稳定性:确保线上结果的可靠性,避免因数据更新造成偏差。 快速响应:发现异常时能自动告警或触发回滚机制。

我们采用ABB(A-B-B)监控策略,通过部署一个主模型(A)和两个次模型(B1、B2)来确保分类结果的可靠性。这种策略基于模型集成的思想,通过多模型一致性检查来提高整体系统的准确性和稳定性。

|

情况名称 |

条件 |

含义描述 |

准确性级别 |

推荐行动

|完全一致

|A = B1 = B2

|所有模型输出相同,高度可靠。

|高 (准确性①)

|无需操作

|主次部分一致

|A = B1 ≠ B2 或 A = B2 ≠ B1

|主模型与一个次模型一致,但另一个次模型不同;部分可靠。

|中 (准确性②)

|可选人工审查

|次一致但主不同

|A ≠ B1 = B2

|次模型一致,但与主模型不同;主模型可能错误。

|低 (不准确③)

|人工排除(必须审查)

|完全不一致

|A ≠ B1 ≠ B2(所有输出互异)

|所有模型输出都不同,高度不一致;主模型可能错误或数据问题。

|低 (不准确④)

|人工排除(必须审查)

通过以上策略,实现不同类型素材,可以调用在各自类型上表现最佳之模型,以达到强强联合的效果。

总结与展望

飞书深诺通过引入基于 Amazon Bedrock平台提供的Claude与Nova多模态生成式AI解决方案,成功实现了电商广告分类的技术升级。实验数据验证了基于生成式AI解决方案的卓越性能,准确率从传统机器学习方法的44.5%提升至85%,在1.1万条数据的验证中,90.3%的分类呈现上升趋势。特别是Amazon Nova模型在视频理解方面的出色表现,以及Claude 3.7 Sonnet在复杂推理任务上的优异能力,为项目成功提供了关键支撑。通过ABB监控策略,系统运行稳定性得到了有效保障,同时实现了降本增效的双重目标。

未来,飞书深诺将继续深化与AWS的合作,探索Amazon Bedrock平台更多前沿AI能力,进一步打造垂直行业专家模型,完善基于AWS的MLOps流程,增强多模态内容理解能力,为客户提供更高性价比、可扩展、少干预的智能内容理解中台,助力中国企业在全球市场取得更大成功。

*前述特定亚马逊云科技生成式人工智能相关的服务目前在亚马逊云科技海外区域可用。亚马逊云科技中国区域相关云服务由西云数据和光环新网运营,具体信息以中国区域官网为准。


Amazon OpenSearch 助力高效 RAG 系统落地

AWS账单代付阅读(44)

亚马逊AWS官方博客

Amazon OpenSearch 助力高效 RAG 系统落地

随着生成式 AI 的快速发展,检索增强生成(Retrieval Augmented Generation,RAG)已成为构建高质量 AI 应用的关键技术。RAG 通过将大型语言模型(LLM)与外部知识库相结合,有效解决了 LLM 的幻觉问题,提高了回答的准确性和可靠性。

在众多RAG解决方案中,知识库作为核心组件至关重要。Amazon OpenSearch凭借其卓越的全文检索能力、语义搜索支持和高度可扩展的分布式架构,已成为企业构建高性能RAG知识库的首选技术平台,能够有效应对海量数据检索的挑战。

本文将深入探讨 Amazon OpenSearch 在 RAG 场景中的独特优势,并结合 Amazon Bedrock 生态系统,展示如何构建快速构建可扩展的 RAG 应用。我们还将介绍 Amazon OpenSearch 的 Serverless 版本的特性,以及如何使用 Serverless 架构进一步简化 RAG 解决方案的部署和管理。

RAG常规流程

RAG 工作流程主要包含五个关键步骤:

数据准备(Data Preparation)

  • 将外部知识库中的文档、表格或其他数据进行预处理,转成适合构建知识库的格式,如文本、稠密/稀疏向量表示。
  • 通过ETL(提取Extract、转换Transform、加载Load)过程清洗和整理数据,也可能会涉及到文档切分,并对每个数据块进行处理(例如向量化、分词、稀疏索引化等),存储到知识库中(例如Amazon OpenSearch),方便后续快速检索
  • 检索(Retrieval)

  • 用户输入查询后,系统将查询进行处理,例如查询改写、分词、转为向量表示等
  • 检索器使用检索索技术(例如文本检索、向量检索等)从向量数据库中找到与查询最相关的文档片段或数据块。
  • 检索不仅依赖关键词匹配,还采用语义级别的匹配,确保对复杂或模糊查询也能找到准确的支持信息
  • 增强(Augmentation)

  • 将检索到的相关文档片段与用户查询结合,形成增强的提示(prompt)。
  • 这个增强的提示通常通过模板或特定格式组织,确保生成模型能够充分利用检索信息,提供更丰富且上下文相关的输入
  • 生成(Generation)

  • 生成模型(如Claude、GPT等系列的大型语言模型)接收增强后的提示,生成自然语言回答。
  • 生成的内容不仅语言流畅,还基于外部知识库的信息,保证回答的准确性和权威性。
  • 多轮交互与反馈(可选)

  • 在对话系统中,RAG支持多轮交互,每轮的查询和生成结果可以作为下一轮的输入。
  • 系统根据用户反馈不断优化检索和生成策略,提升回答质量和用户体验

Amazon OpenSearch 作为一个功能全面的搜索和分析引擎,为构建 RAG知识库提供了全面的支持。它不仅支持传统的全文搜索,还提供了稠密与稀疏向量搜索能力,使其成为构建 RAG 应用的理想选择。

Amazon OpenSearch ** **在** ** RAG ** **中的核心** **优势** **Amazon OpenSearch** **在** **RAG** **中的核心** **优势

1. ** **强** **大的向量检索能力** **1.** **强** **大的向量检索能力

Amazon OpenSearch 提供强大的 ANN(Approximate Nearest Neighbor,近似最近邻)检索能力,这得益于其深度集成的 KNN 插件。该插件支持多种先进的ANN算法实现,包括 HNSW(Hierarchical Navigable Small World)、IVF(Inverted File),以及 Faiss、NMSLIB 和 Lucene 等高效搜索库。这些算法和库提供了不同的优化路径,使得用户可以根据具体的应用场景精细调整参数配置,以达到检索速度与准确率之间的最优平衡。

利用 method 参数配置项,开发者可以精确指定所使用的算法类型(例如 HNSW 或 IVF)、向量空间度量标准(如 L2 范数、内积、余弦相似性等),以及特定引擎的具体参数设置。这种灵活性确保了不同应用场景下对性能和效果的不同需求都能得到满足。对于希望深入了解 Amazon OpenSearch 中 KNN/ANN 功能及其参数配置的用户,官方文档[1]提供了详尽的技术说明和指导。

在向量检索能力方面,Amazon OpenSearch 展现出了卓越的性能与高度可扩展的架构,能够高效支持从数百万到数十亿级别甚至百亿级的向量数据快速检索。这种灵活的扩展性使其能够适应从小规模实验到大规模生产环境的各种应用场景。根据 Amazon 官方发布的测试数据[2],在使用行业广泛认可的 BIGANN 数据集(包含 10 亿个 128 维向量)进行的实验中,OpenSearch 在保证召回率达到 99% 的前提下,展现出极为优异的响应延迟表现:p50 延迟仅为 23.1 毫秒,p90 延迟为 27.1 毫秒,p99 延迟也仅上升至 32.2 毫秒。

这样的低延迟、高召回率的表现,充分体现了 Amazon OpenSearch 在向量检索领域的强大技术实力。无论是推荐系统、图像检索、语义搜索,还是其他对实时性和准确度有较高要求的 AI 应用场景,OpenSearch 都能够提供稳定、可靠且高效的底层支撑,足以应对绝大多数对性能敏感的业务需求。

2. 向量量化技术降低成本

随着向量数据规模的迅速增长,尤其是在数据量达到千万甚至亿级别以上的场景中,传统基于内存的近似最近邻(ANN)算法(如 HNSW)在性能方面面临挑战:由于所有向量必须常驻内存,系统的内存消耗迅速攀升,导致向量检索的硬件成本和扩展难度显著增加。

为了解决这一问题,Amazon OpenSearch 在向量检索场景中引入了量化(Quantization)技术。通过对高维浮点向量进行压缩,OpenSearch 能在显著降低存储和计算资源消耗的同时,保持较高的检索准确率和响应速度。

其中,Binary Quantization(BQ,二进制量化) 是 OpenSearch 提供的一种高效向量压缩方案,特别适用于如 LLM Agent Memory 构建、语义搜索、推荐系统等大规模向量检索应用。BQ 技术将原始的高维浮点向量压缩为低位二进制表示,支持将每个向量维度编码为 1、2 或 4 位,分别对应约 32 倍、16 倍和 8 倍的压缩率,从而大幅度降低内存占用。此外,BQ 在 OpenSearch 中的训练与索引构建过程是自动完成的,用户无需单独进行预处理或模型训练,这大大简化了向量检索系统的开发和运维流程。

尽管量化压缩本质上会带来一定的精度损失,但 OpenSearch 在实现 BQ 功能时,提供了灵活的参数配置,使用户可以在

召回率、准确率与系统成本之间进行有效权衡。在实际生产环境中,OpenSearch 能够在资源利用率与检索效果之间实现平衡,满足各类企业级应用的性能需求。

在过去某客户测试案例中,面对

亿级规模向量数据集,OpenSearch 采用 HNSW 算法结合 Binary Quantization 技术,在保持 1500 QPS 高并发的同时,P50、P90、P99 均在百毫秒内。与未使用量化的系统相比, 整体成本降低约 50%,这充分证明了 BQ 技术在高性能、低成本向量检索中的实用价值。

在应用 BQ 量化时,有如下经验可以分享:

  • shard 数量并不是越多越好,基于总体数据量,预估每个 shard 数据量,30GB左右是一个比较合适的值
  • 首批数据写入后,做 force merge,提升后续的检索效果
  • 使用最新版本的7g 实例系列(例如 c7g)
  • 在需要高 QPS 的情况下,使用 C系列机器
  • 3. ** **混合搜索:** **结** **合** **语义** **和关** **键词** **搜索** **3.** **混合搜索:** **结** **合** **语义** **和关** **键词** **搜索

在 RAG 场景下,混合检索 + 重排序的流程已经几乎是一个业内标准,用来提升知识召回效果。混合检索结合了关键词搜索(如 BM25)和语义搜索(如向量检索)的优点,弥补了各自的不足,从而提高了检索的准确性和效率。关键词搜索在精确匹配方面表现出色,适用于特定术语的检索;而语义搜索基于数据语义进行搜索,对拼写错误和同义词具有一定的鲁棒性,能够捕捉到更广泛的上下文信息。通过将这两种搜索方式融合,可以显著提升检索结果的相关性和多样性。

在混合检索得到多个相关结果后,如何从中选择最相关、最有价值的信息进行生成,是另一个需要解决的问题。这时,重排序模型(Rerank模型)就发挥了重要作用。重排序模型通过对不同检索模型返回的文档片段列表和用户问题语义匹配度进行重新排序,改进检索返回的结果。它计算用户问题与检索召回的每一个候选文档之间的相关性分数,并返回按照相关性排序的文档列表。这样,模型在生成过程中就可以优先选择高质量的信息,从而提高生成结果的准确性和可靠性。常见的重排序模型包括 Cohere Rerank、BGE-Reranker 等。这些模型可以在单路或多路的召回结果中挑选出和问题最接近的文档,进一步提升生成答案的精确度。

在构建混合搜索(如向量检索 + 关键词检索)系统时,通常需要解决以下两个关键问题:

查询向量化处理复杂:用户输入通常为自然语言文本,这就要求系统既要对文本进行分词处理以支持关键词检索,又要通过嵌入模型将其向量化以支持语义检索。这一过程涉及模型加载与推理,增加了系统的处理复杂度。 相关性分数尺度不一致:关键词检索(如 BM25)和语义检索(如向量匹配)返回的相关性分数处于不同的评分体系中,直接融合可能导致评分失衡。因此,必须对它们进行标准化处理,将结果统一到可比较的评分尺度。

Amazon OpenSearch 的一大优势在于,其原生支持混合检索,能够轻松集成语义搜索与关键词搜索。它不仅支持灵活对接外部嵌入模型,还提供了内置机制(如搜索管道和标准化处理器)用于调整不同检索通路的权重和相关性分数的统一,大幅简化了混合搜索系统的构建与优化过程。

3.1. 集成嵌入模型

在向量数据库中,无论是文本的写入还是检索,都需要先将文本转换为对应的向量表示。因此,向量化模型的部署是实现语义检索的关键步骤。在亚马逊云平台上,主要有两种方式可以实现向量化模型的集成:

使用 Amazon Bedrock 提供的内置向量化模型:Amazon Bedrock 支持多种主流的向量化模型,例如 Cohere 和 Amazon Titan(稠密向量模型)。通过直接调用 Bedrock 提供的 API,即可实现文本的向量化处理,无需自行部署模型。 通过 Amazon SageMaker 部署自定义向量化模型:支持将如 bge-m3 等开源嵌入模型部署到 SageMaker 平台,部署后即可通过 SageMaker Endpoint 实现模型的调用和推理,适用于需要定制或优化模型的场景。

对于上述两种方式,Amazon OpenSearch 都提供了统一的对接能力:可以将这两类模型的推理服务抽象为一个“连接器”(Connector)进行调用。在 OpenSearch 中,通过连接器可以直接调用模型进行文本嵌入推理,并结合工作流自动化机制,将推理结果写入索引或用于实时的向量检索,从而实现端到端的语义索引流程。

整个配置过程支持图形化操作,部署简单、流程清晰。具体的配置步骤和使用示例,可参考文档 [4]。

3.2. hybrid检索

在 Amazon OpenSearch 中,实现混合检索(例如将关键词检索与向量检索相结合)非常简便,可以通过配置 OpenSearch 的自动化搜索工作流来完成。其中,第一步通常是配置一个包含归一化处理器(Normalization Processor)的搜索管道(Search Pipeline),其主要目的是对来自不同检索通路(如 BM25 和向量搜索)的相关性分数进行标准化处理。

由于关键词搜索与语义搜索返回的分值通常处于不同的尺度,若不进行归一化处理,融合后的排序可能会严重偏向某一路结果。通过归一化处理器,可以将多路查询结果的分数映射到统一的数值范围(如 [0, 1]),从而确保后续的结果融合更加合理和可控。

  • normalization.technique:可选值包括 min-max、l2 用于标准化分数。
  • combination.technique:可选值包括 arithmetic_mean、geometric_mean、harmonic_mean 等,用于组合分数。

您还可以为每个查询子句设置权重,以调整其对最终评分的影响。

在配置好模型连接器和搜索管道后,即可直接运行混合检索:

可以看到,应用侧只需获取用户的文本输入,后续的关键词检索与语义检索即可在 Amazon OpenSearch 内部自动完成。整个过程无需额外开发复杂的检索逻辑,大幅降低了混合检索的实施成本与技术门槛。

4. ** **丰富的** **过滤能力** **4.** **丰富的** **过滤能力

在基于 RAG 的应用中,具备基于元数据进行过滤与聚合的能力至关重要。通过元数据过滤,可以在向量搜索前显著缩小搜索空间,排除与用户查询意图无关的内容,从而提升生成结果的精度和相关性。

在实际应用中,结合元数据的检索是非常常见的需求。例如,在一个多用户共享的知识库系统中,不同用户只能访问和查询各自上传或被授权的数据内容,这就需要基于“用户 ID”或“组织标识”等元数据字段进行过滤,确保不同用户根据其权限仅访问其有权查看的数据,满足企业在数据安全和合规性方面的要求。同样,在某些特定的知识问答或问诊类场景中,仅需要检索与某个专业领域相关的文档,此时基于领域标签、文档来源等元数据进行预过滤,可以大幅减少无效数据的干扰。

在过滤维度方面,元数据过滤可以应用于多个常见维度。时间过滤允许系统仅在某个时间区间内进行文档搜索,比如只检索“2023 年第一季度”的数据;类别过滤可以限制检索范围在特定的产品线、项目组或业务单元内,避免跨部门数据混淆;来源过滤则帮助系统优先选择来自权威数据源的内容,比如会议纪要、技术手册、API 文档等。通过这些结构化过滤手段,可以在原始向量相似度排序基础上进一步精炼结果,提升整体系统的输出质量与稳定性。

对于一些复杂查询场景,尤其是在用户采用自然语言表达意图时,人工手动构造元数据过滤条件不仅繁琐,而且容易出现歧义或遗漏。为此,目前也有方案是结合大语言模型的能力,实现自动从用户输入中提取出与元数据相关的结构化查询条件。这种“智能元数据过滤”模式极大提升了检索过程的灵活性与适应性。例如,用户输入“展示 2022 年发布的 Project A 的相关文档”,系统可以自动解析出两个关键过滤字段:时间为 2022 年,项目为 Project A,并据此执行精准的文档向量检索,显著提升返回结果的针对性和命中率。

Amazon OpenSearch 提供了强大的元数据过滤能力,使得用户可以通过时间、类别、来源等元数据维度精准控制检索范围,有效提高系统整体的检索质量。它主要提供 3 种过滤方法[5]:

高效 k-NN 过滤(Efficient k-NN Filtering):自 OpenSearch 2.9 起,支持在向量检索过程中同时应用过滤条件,避免了传统的预过滤或后过滤方式可能导致的结果数量不足或性能下降的问题。这种方法确保在满足过滤条件的文档中返回准确的 k 个最近邻结果 布尔后过滤(Boolean Post-Filtering):此方法在向量检索后应用过滤条件,适用于过滤条件不太严格的场景。但在过滤条件较严格时,可能导致返回的结果少于预期的 k 个 评分脚本过滤(Scoring Script Filtering):此方法先对文档集应用过滤条件,然后在过滤后的子集上执行精确的 k-NN 检索。适用于对精度要求高的场景,但在处理大型数据集时可能面临高延迟和扩展性问题。

需要注意的是,即使在大规模向量检索的应用场景中,也并非所有情况下都必须采用近似最近邻(ANN)检索。在某些特定场景下,预过滤(pre-filter)结合精确 k-NN 检索的方式,相较于 ANN 更具优势,既能降低资源成本,又能实现更高的召回率。

这类场景的典型特征是:尽管全局向量池的规模非常大(如千万级甚至上亿条向量),但在应用元数据过滤条件后,实际参与向量检索的数据子集相对较小(通常在几千到几万条之间)。在这种情况下,如果仍使用全局 ANN 索引(如 HNSW)并将其完全加载至内存以实现低延迟查询,将带来较高的内存开销。而采用 pre-filter + 精确 k-NN 的检索模式,则无需构建和维护大型 ANN 索引,显著降低了内存消耗。此外,在过滤后的数据集较小的情况下,即使采用暴力计算方式进行精确 k-NN 也不会产生明显的计算负担。这种方式既能确保检索结果的完整性(即 100% 召回),又避免了 ANN 引入的近似误差,对于对召回率要求较高的场景尤为适用。

在使用 Amazon OpenSearch 进行向量检索的实际客户案例中,已有多个项目选择了 pre-filter + 精确 k-NN 的方案。例如,在某个基于摄像头采集的画面进行向量检索的场景中,系统总共维护着约 1400 万条向量。尽管向量总量庞大,但每次检索前都会通过“设备 ID”以及其他业务相关字段进行预过滤,最终参与计算的向量规模通常仅为 3000 至 4000 条。在这种条件下,采用精确 k-NN 而非 ANN,不仅大幅降低了系统资源占用,同时还能确保检索的召回率达到 100%,实现了更高的性价比。

5. 稀疏向量检索能力

稀疏向量检索(Sparse Vector Search)是一种结合了传统关键词匹配和神经网络语义理解的检索方法。它并非简单地替代关键词或稠密向量检索,而是是为了解决传统关键词检索和稠密向量检索各自的局限性,提升搜索的语义理解能力,同时兼顾计算效率和响应速度,在特定场景下提供更优的解决方案。或作为混合检索策略的一部分,与其他方法协同工作。

为什么需要稀疏向量检索?我们从目前关键词检索和稠密向量检索存在的挑战,以及稀疏向量如何解决的角度来看:

关键词检索:传统关键词检索(基于倒排索引的词法搜索)依赖词汇匹配,难以处理词汇不匹配、同义词、多义词等语义问题,导致相关性不足。稀疏向量检索通过神经网络模型(如 SPLADE)将文本编码为高维稀疏向量,每个维度对应一个词或子词,并赋予权重。这种表示方式不仅保留了关键词的重要性,还引入了语义扩展能力,能够识别与查询相关的同义词或相关词汇,从而提高召回率。 稠密向量检索:稠密向量检索(Dense Vector Search)通过高维向量捕捉语义,但计算和存储开销较大,尤其在海量数据和高维度下,延迟和成本显著增加。Sparse Search 通过稀疏向量表示(只包含少量非零项及其权重),显著减少计算量和内存占用,同时保持较好的语义相关性。 这使得稀疏向量检索在处理大规模数据集时具有较高的效率,尤其适用于资源受限的环境。

所以,稀疏向量检索是一种介于关键词检索和稠密向量检索之间的创新技术,旨在提升语义理解和检索效率。它既不是单纯替代关键词检索,也不是单纯替代稠密向量检索,而是作为两者的有效补充,帮助构建更高效、更准确的搜索系统。

Amazon OpenSearch 自 2.11 版本起引入了神经稀疏检索(Neural Sparse Search)功能,为语义搜索提供了一种高效、低资源消耗的替代方案。稀疏向量检索结合了传统倒排索引的高性能和神经网络模型的语义理解能力,特别适用于对召回率、可解释性和成本控制有较高要求的场景。在这个过程中,文本首先通过稀疏编码模型(如 OpenSearch 提供的预训练模型)转换为稀疏向量,即由非零权重的 token:weight 键值对组成的向量。这些向量被索引到 Lucene 的倒排索引中,利用

FeatureField 存储结构。查询时,输入文本同样被编码为稀疏向量,并通过倒排索引进行匹配和打分,从而实现语义级的检索[6]。

目前 Amazon OpenSearch 支持两种稀疏检索模式:

Doc-only 模式:仅在索引阶段对文档进行语义扩展,查询阶段不进行扩展。该模式延迟低,性能接近传统 BM25 检索,适用于对响应速度要求高的场景 Bi-encoder 模式:在索引和查询阶段均进行语义扩展,能够更全面地捕捉查询意图,提高检索相关性,但相应地计算开销和延迟也更高

在 Amazon OpenSearch 中使用稀疏向量检索的操作非常简便,其配置流程与第 3.1 节所介绍的步骤基本一致。根据官方发布的测试结果[7],稀疏与稠密向量结合的混合检索方法在整体检索效果上优于传统 BM25 与稠密向量的组合。然而,需要特别注意的是,稀疏向量检索的性能高度依赖于所使用的稀疏编码器(Sparse Encoder)模型的质量。如果模型在扩展词汇上的语义相关性较弱,将直接影响最终的召回能力。

此外,由于大多数稀疏编码器是在通用语料上进行预训练的,在面对特定垂直领域中的专业术语时,其召回效果可能甚至不如传统的关键词匹配。这意味着在特定业务场景中,是否适合使用稀疏检索仍需结合实际数据进行评估。必要时,可能还需对稀疏编码器进行微调,以优化其在目标领域中的检索效果。

Amazon OpenSearch Serverless

除了传统的集群部署模式,Amazon OpenSearch 还提供了 Serverless 模式,具备无需运维、自动弹性扩缩的优势,为向量存储与检索提供了一种高效便捷的解决方案。OpenSearch Serverless 是专为生成式人工智能(Generative AI)和检索增强生成(RAG)应用设计的无服务器向量数据库,具备高性能、可扩展的向量检索能力,能够在毫秒级延迟内完成搜索,适用于语义搜索、推荐系统、聊天机器人等多种智能应用场景。

其核心优势在于完全托管的无服务器架构,用户无需预置、配置或管理底层集群资源。系统会根据实际负载自动完成资源的扩展与回收,在访问模式或应用需求波动时,依然能够保持高吞吐率和低延迟响应。同时,OpenSearch Serverless 与 Amazon S3 深度集成,具备与 S3 相同级别的数据持久性,确保数据的高可用与强一致性。

在 RAG 应用中,OpenSearch Serverless 支持向量检索与文本关键词检索的无缝融合,进一步提升语义相关性的匹配效果。它内置与传统集群模式一致的近似最近邻(ANN)算法,例如 HNSW(分层可导航小世界图),可在大规模向量数据集上实现快速、准确的相似性搜索。借助与 Amazon Bedrock 的原生双向集成,OpenSearch Serverless 可与如 Amazon Titan Embeddings 等基础模型无缝协作,简化嵌入生成、检索调用等 RAG 工作流开发流程。

在安全方面,OpenSearch Serverless 原生集成 AWS Identity and Access Management(IAM),支持细粒度的权限控制,同时支持通过 AWS Key Management Service(KMS)进行数据加密,确保数据在传输与存储过程中的完整性与机密性。

目前,OpenSearch Serverless 已在多个实际客户场景中得到落地应用。例如 riskCanvas——一款基于 SaaS 的金融犯罪合规解决方案产品,充分利用大数据、自动化与机器学习等先进技术,帮助客户提升合规效率与业务智能化水平。riskCanvas 通过与 OpenSearch Serverless 向量引擎集成,结合 AWS 生成式 AI 能力,将客户操作数据转化为可搜索、可理解的语义向量,为金融领域的风控和合规提供了强大的支持[8]。

Amazon OpenSearch ** **与** ** Amazon AI 服务** **的** **强** **大** **组** **合** **Amazon OpenSearch** **与** **Amazon AI 服务** **的** **强** **大** **组** **合

Amazon OpenSearch 与 Amazon Bedrock 的深度集成为企业级 RAG(Retrieval-Augmented Generation)应用构建提供了端到端的完整解决方案。Amazon Bedrock 让开发者可以轻松接入多种主流基础模型,而 Amazon OpenSearch 则提供了高性能、可扩展的向量检索能力。这种强强联合,使企业能够更高效地构建并部署高质量的生成式 AI 应用,加速智能化转型。

例如在前文第 3.1 节所介绍的嵌入集成流程中,Amazon OpenSearch 与 Amazon Bedrock 之间的集成极为简便,仅需几行代码即可实现向量生成与检索的完整闭环。开发者可以使用 Amazon Bedrock 提供的嵌入模型(如 Amazon Titan Embeddings)将文档和用户查询编码为向量,然后将这些向量存入 Amazon OpenSearch,进一步实现高效语义检索。

此外,对于部分简单的业务场景,也可以借助 Amazon OpenSearch 本身的机器学习能力与 Amazon AI 服务中的模型能力,快速搭建 RAG 应用。例如,利用 OpenSearch 内置的 Retrieval-Augmented Generation Processor(RAG 处理器),结合部署在 Amazon SageMaker 上的 DeepSeek 模型和嵌入模型,即可快速构建语义增强的问答系统[9]。更进一步,Amazon Bedrock Knowledge Bases 还支持通过控制台“一键集成”到 Amazon OpenSearch,无需编写复杂代码即可完成 RAG 流程配置,提供极致简洁的托管化使用体验[10]。

这一整套生态系统的协同工作,不仅显著降低了构建 RAG 应用的门槛,还在性能、灵活性与可维护性方面为企业用户带来可观的优势。无论是面向终端客户的智能问答系统,还是企业内部的知识库检索应用,OpenSearch 与 Bedrock 的协同都为生成式 AI 的落地提供了坚实技术支撑。

OpenSeach 与开源生态

除了广泛应用于亚马逊内部系统以及亚马逊云服务客户构建的企业级应用中,OpenSearch 作为向量数据库的能力也被开源社区和第三方开发者认可,已在多个主流项目中得到实际应用。例如 Mem0、Dify 和 LangChain 等项目,均在生产环境中采用 OpenSearch 来满足对高性能语义检索和横向扩展能力的需求。

Mem0 是一个专注于构建记忆系统的框架,支持多种向量数据库作为后端存储,其中就包括 OpenSearch。通过抽象统一的接口和模块化工厂模式,Mem0 允许开发者灵活地选择最适合当前场景的向量存储引擎,并在配置中自定义集合名称、节点地址、端口号、向量维度等参数,从而实现快速集成与部署。

LangChain 则将 OpenSearch 深度集成进其语言模型应用开发框架中,利用 OpenSearch 支持近似最近邻(k-NN)搜索和语义检索的能力,配合 LangChain 提供的文档加载、文本切分与嵌入生成模块,开发者能够快速构建出高效的检索增强生成(RAG)系统,实现自然语言理解与响应的智能化。

Dify 作为一个开源的 LLMOps 平台,也支持将 OpenSearch 作为向量存储后端,适配多种部署环境,包括本地开发、私有化部署和云原生架构,使其在性能、灵活性和可维护性方面均具备良好的扩展潜力。这些项目的实践表明,OpenSearch 在构建大规模、低延迟、可水平扩展的语义检索系统中表现出色,已经成为生产级向量数据库解决方案的重要选项之一。

总结

可以看到,Amazon OpenSearch 凭借其全面的搜索能力、灵活的向量检索机制、原生混合搜索支持以及强大的元数据过滤功能,为构建企业级 RAG(检索增强生成)系统提供了坚实的技术基础。从底层的 KNN 插件与量化优化,到与 Amazon Bedrock、SageMaker 等服务的深度集成,再到 Serverless 架构下的简化部署,Amazon OpenSearch 在性能、扩展性与易用性方面展现出卓越优势。无论是面向大规模向量数据检索、高并发响应,还是满足复杂多样的企业级检索需求,Amazon OpenSearch 都能提供稳定、高效且具成本效益的解决方案,是打造高质量 RAG 应用的首选平台。

参考文档

[1] OpenSearch KNN Search Methods and engines

[2] Choose the k-NN algorithm for your billion-scale use case with OpenSearch

[3] 基于大语言模型知识问答应用落地实践 – 知识召回调优(下)

[4] OpenSearch 基于 ML Commons 插件实现自动 embedding

[5] OpenSearch KNN Filtering data

[6] A deep dive into faster semantic sparse retrieval in OpenSearch 2.12

[7] Integrate sparse and dense vectors to enhance knowledge retrieval in RAG using Amazon OpenSearch Service

[8] Amazon OpenSearch Service as a Vector Database

[9] 基于 Amazon OpenSearch Service 与 DeepSeek 构建知识库问答应用

[10] Knowledge Bases now delivers fully managed RAG experience in Amazon Bedrock


AWS代付、代充值免实名

联系我们阿里云国际免实名