メインコンテンツへ移動

createBedrockKBTool()

createBedrockKBTool() 関数は、Amazon Bedrock Knowledge Base から関連ドキュメントを取得する Tool を作成します。マネージド検索設定と 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 が優先されます。

入力スキーマ
入力スキーマへの直接リンク

Agent から呼び出されるとき、この Tool は次の入力を受け取ります。

queryText:

string
Knowledge Base 内の関連ドキュメントを検索するための検索クエリ。

出力スキーマ
出力スキーマへの直接リンク

この Tool は、次のプロパティを持つオブジェクトを返します。

results:

BedrockKBResult[]
検索結果の配列。標準検索では、Bedrock から提供された場合に source と score が含まれます。Agentic Retrieval では、これらのフィールドが省略されることがあります。

BedrockKBResult
BedrockKBResultへの直接リンク

フィールド説明
contentstring取得した一節のテキストコンテンツ。
sourcestring | undefinedBedrock から提供された場合のソース URI。Agentic Retrieval では、結果のメタデータに _source_uri が含まれる場合にのみこのフィールドが含まれます。
scorenumber | undefined標準検索から返される関連度スコア。Agentic API は結果項目のスコアを返しません。
metadataRecord<string, unknown>検索結果に含まれる追加のメタデータ。

検索モード
検索モードへの直接リンク

Agentic Retrieval(デフォルト)
Agentic Retrieval(デフォルト)への直接リンク

useAgenticRetrievaltrue(デフォルト)の場合、この Tool は AgenticRetrieveStreamCommand を使用して次の処理を行います。

  • 複雑なクエリをサブクエリに分解する
  • 複数のパスにわたって検索する
  • マネージド再ランキングを適用して結果を改善する

Agentic Retrieval が失敗した場合(古い SDK や権限不足など)、標準のマネージド検索へ自動的にフォールバックします。

標準のマネージド検索
標準のマネージド検索への直接リンク

useAgenticRetrievalfalse の場合、この Tool は managedSearchConfiguration を指定した RetrieveCommand を使用し、1 回のパスで直接検索します。

ユーザー単位のアクセス制御
ユーザー単位のアクセス制御への直接リンク

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 以降が必要です)