Amazon Bedrock 将知识库作为连接器目标进行管理
Amazon Bedrock 托管知识库提供完全托管的检索增强生成 (RAG):Amazon Bedrock 负责处理矢量存储、数据摄取和检索优化,因此您无需配置或操作检索基础设施。Amazon Bedrock AgentCore 将托管知识库作为原生网关连接器公开,您可以将其附加到 AgentCore 网关,然后您的代理使用标准模型上下文协议 (MCP) 调用来发现和查询它,无需构建自定义检索集成。有关创建和管理托管知识库的详细信息,请参阅《亚马逊 B edrock 用户指南》中的 Amazon Bedrock 知识库。
连接器暴露了两个工具。第一个是AgenticRetrieveStream。它不是单一查找,而是计划检索策略,在托管的知识库中运行多个检索步骤,可以选择扩展到完整文档,并流式传输支持结果和综合的、有引文支持的答案。 Retrieve执行单次混合搜索并返回最相关的段落。
注意
此连接器仅支持 Amazon Bedrock 托管知识库。
以下各节将介绍连接器的工作原理、代理检索的深度、常见用例、如何设置目标以及这两种工具的输入和响应架构。
主题
工作原理
Amazon Bedrock AgentCore 提供了指向亚马逊 Bedrock 托管知识库的内置连接器。网关负责架构管理、端点解析和服务身份验证。该连接器公开了两个工具,您的代理使用这些工具来发现这些工具:tools/list
-
AgenticRetrieveStream— 一种多步骤、流式代理检索,可返回结果、计划和检索跟踪事件,以及带引文的合成答案(默认返回;禁用)。generateResponse: false -
Retrieve— 单一混合搜索,可返回最相关的段落和来源参考文献。
单次Retrieve调用遵循以下流程:
-
网关设置-创建网关并添加 Amazon Bedrock 托管知识库目标,引用您要公开的托管知识库。网关会对工具架构进行快照并配置集成。
-
工具发现-您的代理调用
tools/listGateway 端点并发现检索工具及其输入架构。 -
检索调用-您的代理使用自然语言查询
tools/call进行呼叫。Gateway 向后端进行身份验证,并将请求路由到托管知识库,该知识库会对你摄取的内容进行混合搜索。 -
结果 — 该工具在工具结果的文本内容中以 JSON 形式返回最相关的段落,其源引用为 JSON。
-
有@@ 根据的回应-您的代理使用结果撰写带有引用来源的回复。
有关代理检索流程,请参阅代理检索。
代理检索
AgenticRetrieveStream将问题视为一项任务:它不是针对一个查询Retrieve运行的单一混合搜索,而是计划检索策略,在托管知识库中运行多个检索步骤,并流式传输支持结果和综合的、有引文支持的答案,所有这些都可以在一个工具调用中完成。默认情况下返回合成答案;设置generateResponse为仅false返回结果。
您的代理通过对话调用它 () messages。它查询的检索器(每个检索器都指向托管知识库)由目标上的管理员配置,而不是由代理提供。通过 MCP 进行规划和检索进度流notifications/message,结果和答案将在工具结果中返回。
有关代理检索工作原理的更多信息,请参阅《亚马逊 B edrock 用户指南》中的 Amazon B edrock 知识库。
有关请求和事件架构,请参阅AgenticRetrieveStream 输入架构和AgenticRetrieveStream 响应格式。
使用案例
-
企业知识助手 — 内部 wiki、运行手册和政策文件中的地面代理回复,这些文档已纳入托管知识库。
-
文档问答 — 无需建立或运营矢量存储库即可回答有关大型文档集的问题。
-
Multi-source RAG — 在一次检索调用中查询来自多个数据源的内容,这些内容合并到单个托管知识库中。
-
Multi-step 规划 — 用于回答
AgenticRetrieveStream需要计划和多个检索步骤的多部分或模棱两可的问题,在一次通话中返回一个综合的、有引文支持的答案。 -
Tool-augmented 代理 — 将托管知识库检索与您的其他 Gateway 工具相结合,这样代理既可以查找有根据的事实,又可以采取行动。
设置托管知识库
有关如何使用 Amazon Bedrock 托管知识库连接器配置创建网关目标的说明,包括使用 Python SDK 和 CLI 的设置示例,请参阅目标配置指南中的设置托管知识库。
配置网关服务角色
Gateway 需要一个 AgentCore 服务角色,允许该服务代表您对托管知识库执行检索操作。有关所需的 IAM 权限和策略配置,请参阅目标配置指南中的配置网关服务角色。
调用工具
创建目标后,您的代理会发现带有的工具tools/list并使用调用tools/call它们。每个工具名称都以目标名称为前缀,形式为 managed-kb___Retrieve (<target-name>_<tool-name>_AgenticRetrieveStream或)。
因为AgenticRetrieveStream,您的代理只会通过对话。检索器由管理员在目标上配置,因此代理不会发送知识库 ID:
{ "jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": { "name": "managed-kb___AgenticRetrieveStream", "arguments": { "messages": [ { "role": "user", "content": { "text": "How do I configure a knowledge base target?" } } ] } } }
对于Retrieve,托管知识库标识符绑定到目标,因此您的代理仅通过查询:
{ "jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": { "name": "managed-kb___Retrieve", "arguments": { "retrievalQuery": { "text": "What is Amazon Bedrock AgentCore?" } } } }
如果您向代理公开了检索参数(请参阅控制代理可以设置哪些参数),则代理可以在呼叫时覆盖管理员配置的默认值:
{ "jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": { "name": "managed-kb___Retrieve", "arguments": { "retrievalQuery": { "text": "insurance benefits" }, "retrievalConfiguration": { "managedSearchConfiguration": { "numberOfResults": 2 } } } } }
AgenticRetrieveStream 输入架构
返回的架构tools/list是您的代理在调用时可以设置的一组字段AgenticRetrieveStream。默认情况下,代理可见的唯一字段是。messages要查询的检索器和所有检索配置均由管理员在目标上设置,请参阅设置托管知识库。要向代理显示更多字段,请在目标parameterOverrides上进行配置-请参阅控制代理可以设置的参数。
{ "type": "object", "properties": { "messages": { "description": "The messages for the agentic retrieval conversation. Contains the user query and conversation history.", "type": "array", "items": { "type": "object", "properties": { "role": { "description": "The role of the message sender (user or assistant).", "type": "string", "enum": ["user", "assistant"] }, "content": { "description": "The content of the message.", "type": "object", "properties": { "text": { "description": "The text content of the message.", "type": "string" } } } }, "required": ["content", "role"] } } }, "required": ["messages"] }
| 字段 | 类型 | 必需 | 说明 |
|---|---|---|---|
|
|
array |
是 |
代理检索对话。每条消息都有 |
AgenticRetrieveStream 响应格式
AgenticRetrieveStream流式传输一系列事件。通过 MCP,跟踪事件按实时进度传送,检索结果和综合答案在工具结果中传送。notifications/message直播会发出以下事件类型:
| 事件 | 说明 |
|---|---|
|
|
计划或检索步骤,包含 |
|
|
生成的答案文本的一部分。默认情况下发出;仅当设置 |
|
|
检索 |
result事件具有以下结构:
{ "result": { "results": [ { "content": { "text": "Amazon Bedrock AgentCore manages the storage, indexing, and retrieval infrastructure for a managed knowledge base...", "mimeType": "text/plain" }, "sourceRetriever": { "identifier": "kb-retriever-1" }, "metadata": { "x-amz-bedrock-kb-source-uri": "s3://example-bucket/docs/overview.pdf" } } ], "generatedResponse": { "answer": "A managed knowledge base lets Amazon Bedrock AgentCore handle the vector store, ingestion, and retrieval for you.", "citations": [ { "startIndex": 0, "endIndex": 98, "references": [ { "..." : "references to supporting results" } ] } ] } } }
| 字段 | 类型 | 必需 | 说明 |
|---|---|---|---|
|
|
array |
是 |
检索结果。每个项目都有 |
|
|
object |
否 |
默认情况下存在。仅当设置 |
|
|
字符串 |
否 |
用于检索下一组结果的令牌(如果有)。 |
检索输入架构
返回的架构tools/list是您的代理在调用时可以设置的一组字段Retrieve。默认情况下,代理可见的唯一字段是。retrievalQuery.text托管知识库标识符和所有检索设置均由管理员在目标上设置。要向代理公开检索设置(例如numberOfResults或元数据filter),请在目标parameterOverrides上进行配置,请参阅控制代理可以设置的参数。
{ "type": "object", "properties": { "retrievalQuery": { "description": "Contains the query to send the managed knowledge base.", "type": "object", "properties": { "text": { "description": "The text of the query made to the managed knowledge base.", "type": "string" } } } }, "required": ["retrievalQuery"] }
| 字段 | 类型 | 必需 | 说明 |
|---|---|---|---|
|
|
对象 |
是 |
要发送到托管知识库的查询。 |
|
|
字符串 |
是 |
查询的文本。 |
有关管理员设置和可覆盖的字段(元数据numberOfResultsfilter、重排序和多模态overrideSearchType图像查询),请参阅配置参考。
检索响应格式
该Retrieve工具返回封装在 JSON-RPC 信封中的 MCP tools/call 结果。isError和content字段在里面result,该text字段包含序列化的retrievalResults有效负载:
{ "jsonrpc": "2.0", "id": 1, "result": { "isError": false, "content": [ { "type": "text", "text": "{\"retrievalResults\":[{\"content\":{\"type\":\"TEXT\",\"text\":\"Amazon Bedrock AgentCore manages the storage, indexing, and retrieval infrastructure for a managed knowledge base...\"},\"location\":{\"type\":\"S3\",\"s3Location\":{\"uri\":\"s3://example-bucket/docs/overview.pdf\"}},\"score\":0.87,\"metadata\":{\"x-amz-bedrock-kb-source-uri\":\"s3://example-bucket/docs/overview.pdf\"}}]}" } ] } }
中的每个项目都retrievalResults具有以下结构:
| 字段 | 类型 | 必需 | 说明 |
|---|---|---|---|
|
|
对象 |
是 |
检索到的区块的内容。包括 |
|
|
object |
否 |
源数据的位置。包括 |
|
|
数字 |
否 |
结果与查询的相关性。 |
|
|
object |
否 |
数据源中源文件的元数据属性及其值。 |
配置参考
在创建目标时parameterValues,以下字段由管理员在中设置或向代理公开。parameterOverrides有关在何处设置它们,请参阅设置托管知识库和控制代理可以设置哪些参数。
AgenticRetrieveStream — agenticRetrieveConfiguration
| 字段 | 有效值 | 注意 |
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
何时 |
|
|
integer |
限制计划和检索迭代的次数。 |
|
|
|
附上 Amazon Bedrock 护栏。 |
Retrieve — managedSearchConfiguration
| 字段 | 有效值 | 注意 |
|---|---|---|
|
|
整数 (1—100) |
要检索的源区块数。 |
|
|
|
|
|
|
|
和 for 一样 |
|
|
|
使用自定义重新排名时为必填项。 |
|
|
|
控制将哪些元数据字段传递给重新排名者。 |
|
|
|
元数据过滤器。只提供一个操作员。 |
访问控制过滤
如果您的托管知识库使用访问控制来筛选每个用户或组的结果,则调用的应用程序必须在请求中userContext通过 a。网关userContext传递到知识库,知识库基于它应用访问控制过滤。网关不是通过调用者的 IAM 身份填充userContext的,您的应用程序必须明确提供该身份。
要使用它,请执行以下操作:
-
通过在目标
parameterOverrides上进行配置$.userContext向代理公开 — 请参阅控制代理可以设置的参数。 -
让调用应用程序(不是模型)包含
userContext在tools/call参数中:
{ "arguments": { "retrievalQuery": { "text": "insurance benefits" }, "userContext": { "userId": "user@example.com" } } }