在 Amazon Bedrock AgentCore 上推出 Web Search 功能
在 Amazon Bedrock AgentCore 上推出 Web Search 功能
AI 代理正在改变组织查找和处理信息的方式,但它们共享一个结构性限制:它们的知识在训练时就已经固化。当你向一个仅依赖训练数据的代理询问今天的股价、体育比分或一小时前发布的版本时,它无法回答。
现已正式发布的 Amazon Bedrock AgentCore 上的 Web Search 功能解决了这一缺口。这项完全托管、兼容 Model Context Protocol (MCP) 的网络搜索能力,让你的代理能够从网络获取信息,而无需承担基础设施开销。它作为一个托管目标或连接器提供,你可以将其连接到你的 AgentCore 网关。代理通过标准的 tools/list 调用发现它,并像其他 MCP 工具一样调用它。无需配置搜索 API,无需管理出站凭证,也无需维护结果解析的胶水代码。
在这个单一连接器背后,是一个由 Amazon 维护的专用网络索引,涵盖数百亿份文档。Amazon 持续刷新索引,新内容在几分钟内即可反映出来。隐私模型确保查询不会离开 AWS。检索可以结合知识图谱和针对模型上下文调优的语义片段提取。
在这篇文章中,我们将介绍 Amazon Bedrock AgentCore 上的 Web Search 有何不同,为什么它很重要,以及如何用几行代码将其接入。
图 1:你的应用程序连接到 AgentCore 网关(AWS Identity and Access Management (IAM) 或 JSON Web Token (JWT) 入站认证),网关通过托管连接器将查询路由到 AWS 服务账户中的 Web Search 工具。查询流量保持在 AWS 内部。
将代理基于网络信息进行 grounding 是解决知识陈旧问题的方法,但这也是许多团队卡住的地方。自己构建意味着:
- 采购第三方搜索 API,并管理密钥、配额和速率限制。
- 解析不同提供商不一致的结果格式。
- 思考客户查询流向何处,以及这些数据如何被保留或重用。
- 构建片段提取逻辑,使模型获得相关段落,而非原始 HTML。
- 长期维护新鲜度、覆盖范围和质量。
其中每一项本身就是一个项目。Amazon Bedrock AgentCore 上的 Web Search 解决了所有这些挑战。
专用构建的网络索引
许多“为你的代理添加网络搜索”的解决方案都是第三方搜索引擎的封装。Amazon Bedrock AgentCore 上的 Web Search 由 Amazon 直接运营的网络索引支持,涵盖数百亿份文档。这样的规模对覆盖范围很重要。例如,当索引广泛而非仅限于最受欢迎的页面时,关于一个小众库或模糊产品规格的长尾问题可以更有效地得到回答。
持续更新
Amazon 持续刷新索引,新内容在几分钟内即可反映出来。对于回答价格变动或最近发布的公告等问题的代理来说,这种更新时效性是获得基于事实的响应与自信地给出错误答案之间的区别。当你的代理搜索“今天发生了什么”时,结果反映的是今天实际发生的事情。
用于高置信度事实的知识图谱
Amazon Bedrock AgentCore 上的 Web Search 包含一个内置的知识图谱,用于 grounding 实体及其关系。对于事实性问题(如谁担任某个角色,或某事物何时成立),知识图谱提供高置信度的响应,而不是让模型从提取的页面文本中推断。这减少了当代理仅从片段拼接响应时可能出现的微妙事实漂移。
针对模型上下文优化的语义片段提取
该工具并非向模型提供原始 HTML 转储或整个页面,期望模型自行找到相关部分,而是执行语义相关的片段提取。它从每个网页中提取与查询相关的段落,然后以针对模型上下文窗口优化的形式返回。模型看到的是重要的部分,而样板文件和导航元素消耗的 token 更少。这有助于提高引用响应的精度。
设计上注重隐私
对于许多企业来说,阻碍网络搜索部署的问题不是“它有效吗?”而是“我的用户查询去了哪里,它们会怎样?”Amazon Bedrock AgentCore 上的 Web Search 的设计使得这些问题的答案变得简单。
查询不会离开 AWS
当你的代理发出搜索请求时,查询完全在 AWS 基础设施内处理。客户查询不会被发送到第三方搜索引擎,也不会离开 AWS。网关向 AWS 拥有的连接器进行认证,并在内部路由请求,因此数据路径端到端都保持在 AWS 内部。对于有数据驻留或第三方出站顾虑的团队来说,这消除了整个审查类别。
操作指南
要开始使用 Web Search 工具,你需要创建一个 AgentCore 网关(如果你不想使用现有网关),添加 web search 工具目标,然后通过 MCP 从代理调用它。
前提条件
要遵循本文中的设置步骤,你需要以下内容:
- 一个具有创建 IAM 角色和 Amazon Bedrock AgentCore 资源权限的 AWS 账户。
- 安装并配置了 AWS 命令行界面 (AWS CLI) v2,或者能够访问 AWS 管理控制台。
- Python 3.10 或更高版本(用于 SDK 和 Strands 示例)。
- 更新到最新版本的
boto3SDK。 - 一个 Amazon Bedrock AgentCore 网关。你可以将 Web Search 工具作为目标添加到现有网关,或者创建一个新的。关于创建网关的说明,请参阅开发者指南中的 创建 Amazon Bedrock AgentCore 网关。
注意:执行这些步骤会创建 AWS 资源,从而产生费用。Amazon Bedrock AgentCore 网关和 Web Search 调用都是计费的。详情请参见下面的定价部分,完成后记得清理资源以避免持续收费。
设置
为代理添加网络搜索功能归结为使用 connectorId: "web-search" 将 Web Search 工具目标附加到你的网关。网关会快照工具架构、配置集成,并为你处理架构管理、参数治理、端点解析和服务认证。
通过调用 describe_gateway_target 或 list_gateway_targets 来验证你已添加目标,并确认响应中出现 Web Search-tool。
出站角色和权限
注意上面的 credentialProviderConfigurations。这就是完整的出站授权故事:无需你配置 API 密钥或管理搜索凭证,网关使用自己的 IAM 服务角色向 Web Search 后端进行认证。
该角色需要一个信任策略(以便 AgentCore 可以承担它,范围限定在你的账户和区域)和一个包含两个操作的权限策略:
InvokeWebSearch 资源 ARN 由 AWS 拥有(账户 = aws)。每次调用都会针对该 ARN 强制执行授权,因此授予 bedrock-agentcore:InvokeWebSearch 权限,才能让网关代表你调用 web search。
需要明确几个边界:
- 此角色仅用于出站认证(网关访问 Web Search 后端)。入站认证(谁可以调用你的网关)是分开处理的,通常使用 OAuth 或 JWT 授权器,例如 Amazon Cognito。
- 该角色不包含
bedrock:InvokeModel。模型访问权限属于运行代理的实体,而非网关服务角色。
从兼容 MCP 的框架调用
由于 Web Search 通过 MCP 暴露,因此兼容 MCP 的框架(如 Strands、LangChain、LangGraph、CrewAI 或你自己的框架)可以发现并调用它。年龄