跳到主要内容

createBedrockKBTool()

createBedrockKBTool() 函数会创建一个 Tool,用于从 Amazon Bedrock Knowledge Base 检索相关文档。它既支持托管搜索配置,也支持 Agentic Retrieval(查询分解和托管重排序),并可自动回退到标准检索。

使用示例
使用示例的直接链接

import { createBedrockKBTool } from '@mastra/rag'

const kbTool = createBedrockKBTool({
knowledgeBaseId: 'YOUR_KB_ID',
region: 'us-west-2',
numberOfResults: 5,
useAgenticRetrieval: true,
})

与 Agent 配合使用
与 Agent 配合使用的直接链接

import { Agent } from '@mastra/core/agent'
import { createBedrockKBTool } from '@mastra/rag'

const kbTool = createBedrockKBTool({
knowledgeBaseId: 'YOUR_KB_ID',
})

const agent = new Agent({
name: 'KnowledgeAssistant',
instructions: 'Use the knowledge base tool to answer questions.',
model: myModel,
tools: { kb: kbTool },
})

参数
参数的直接链接

knowledgeBaseId:

string
要查询的 Amazon Bedrock Knowledge Base ID。

region?:

string
部署 Knowledge Base 的 AWS 区域。默认为 AWS_REGION 环境变量的值或 us-east-1。

numberOfResults?:

number
返回结果的最大数量。默认为 5。

useAgenticRetrieval?:

boolean
对复杂查询使用 AgenticRetrieveStream,以支持查询分解和托管重排序。失败时回退到标准 Retrieve。默认为 true(可通过 USE_AGENTIC_RETRIEVAL=false 环境变量禁用)。

userId?:

string
用于文档级访问控制的默认 AWS 用户 ID。Mastra 请求上下文中的 userId 优先级更高。

输入 Schema
输入 Schema的直接链接

由 Agent 调用时,该 Tool 接受以下输入:

queryText:

string
用于在 Knowledge Base 中查找相关文档的搜索查询。

输出 Schema
输出 Schema的直接链接

该 Tool 返回一个包含以下内容的对象:

results:

BedrockKBResult[]
检索结果数组。Bedrock 提供来源和分数时,标准检索会包含这些字段;Agentic Retrieval 可能省略这些字段。

BedrockKBResult
BedrockKBResult的直接链接

字段类型描述
contentstring检索到的段落文本内容。
sourcestring | undefinedBedrock 提供的来源 URI。仅当结果元数据包含 _source_uri 时,Agentic Retrieval 才会包含此字段。
scorenumber | undefined标准检索返回的相关性分数。Agentic API 不会为结果项返回分数。
metadataRecord<string, unknown>检索结果中的其他元数据。

检索模式
检索模式的直接链接

Agentic Retrieval(默认)
Agentic Retrieval(默认)的直接链接

useAgenticRetrievaltrue(默认)时,该 Tool 使用 AgenticRetrieveStreamCommand,它会:

  • 将复杂查询分解为子查询
  • 通过多轮检索获取结果
  • 应用托管重排序以获得更好的结果

如果 Agentic Retrieval 失败(例如 SDK 版本较旧或权限不足),它会自动回退到标准托管检索。

标准托管检索
标准托管检索的直接链接

useAgenticRetrievalfalse 时,该 Tool 使用带有 managedSearchConfigurationRetrieveCommand 进行直接的单轮检索。

基于用户的访问控制
基于用户的访问控制的直接链接

在 Mastra 请求上下文中设置 userId,以将其作为 Bedrock userContext.userId 转发。这适用于实施文档级访问控制的 Knowledge Base。请求上下文中的值会覆盖在该 Tool 上配置的默认 userId

import { RequestContext } from '@mastra/core/request-context'

const requestContext = new RequestContext()
requestContext.set('userId', 'user-123')

await agent.generate('Find my private documents', { requestContext })

所需 IAM 权限
所需 IAM 权限的直接链接

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": ["bedrock:Retrieve", "bedrock:AgenticRetrieveStream"],
"Resource": "arn:aws:bedrock:*:*:knowledge-base/*"
}
]
}

SDK 要求
SDK 要求的直接链接

  • @aws-sdk/client-bedrock-agent-runtime >= 3.1000(AgenticRetrieveStreamCommand 需要 ~3.1000+)