はじめに
はい、皆さん大好き RAG。今回 Amazon Bedrock に managed Knowledge Base という選択肢が加わりました。
ざっくりいうと、「RAG に必要なベクトルストアや埋め込み・チャンキングの設定を自分で組まなくても、データソースを指定するだけで AWS がフルマネージドで検索基盤を用意してくれる」新しい選択肢です。
気になったので概要の整理とコンソールでの作成、そして AgentCore Gateway 経由でエージェントから引くところまで試してみました。
なお、他の方も書かれていると思うので、ポイントだけ押さえて書きます。
忙しい人のための要約
- Amazon Bedrock の Knowledge Bases に「フルマネージド」な作成方式が追加され、ベクトルストア・取り込み・検索の最適化などを AWS がいい感じに面倒を見てくれる
- 目玉は解析戦略を自動選択する Smart Parsing と複数ステップの検索を計画して回答まで生成する Agentic Retrieval
- 既存の Knowledge Bases API(
Retrieveなど)を利用している場合でも互換性があり、ナレッジベース ID を差し替えるだけで移行可能 - AgentCore Gateway の組み込みコネクタとして登録すれば、MCP 経由でエージェントからそのまま呼べる
- 料金は従量課金で、主な課金軸は「インデックス保存量」と「実行したクエリ数」の 2 つ
managed Knowledge Base とは
これまでの Knowledge Bases for Amazon Bedrock は、検索基盤として OpenSearch Serverless や Pinecone などのベクトルストアを自分で用意し、埋め込みモデルやチャンキングを設定する必要がありました。
managed Knowledge Base は、この検索インフラを AWS 側がフルマネージドで持ってくれる方式とのことです。ベクトルストアのプロビジョニングやリランキングのチューニングも、こちらでは意識しなくてよくなります。
「とりあえず精度の出る RAG を最短で立てたい」というケースにかなり向いている印象です。
押さえておきたい 2 つの機能
Smart Parsing
コンテンツの種類に応じて最適な解析戦略を自動で選択してくれるとのことです。画像や動画を含むマルチモーダルなコンテンツの検出・処理や、基盤モデルを使った賢いチャンキングも担ってくれるようです。
逆に言ってしまえばユーザー側で細かい設定をすることはできないということなんですかね。
Agentic Retrieval
単発の検索で終わらず、質問を「タスク」として扱い、検索戦略を立て、複数ステップの検索を回し、必要に応じて全文へ展開したうえで、引用付きの回答まで合成して返してくれます。あいまいだったり複数の論点をまたぐ質問に強い、という位置づけのようです。
既存 API との互換性
すでに Knowledge Bases の Retrieve / RetrieveAndGenerate を使っている場合、コードはほぼそのままで、参照するナレッジベースIDを差し替えるだけで移行できるとされています。
aws bedrock-agent-runtime retrieve \
--knowledge-base-id "<managed-kb-id>" \
--retrieval-query '{"text": "経費精算の上限はいくらですか?"}'
従来方式と managed 方式
| 観点 | 従来の Knowledge Bases | managed Knowledge Base |
|---|---|---|
| ベクトルストア | 自分で用意・管理 | AWS がマネージド |
| 埋め込み / 再ランキング | 設定が必要 | 最適化済みのデフォルト |
| スケール対応 | 設計が必要 | 数百万文書規模まで自動 |
| 複雑なクエリ | 基本は単発検索 | Agentic Retrieval で多段検索 |
料金
- 従量課金で事前コミット不要
- 主な課金軸は「インデックス化したデータの保存量」と「実行したクエリ数」の 2 つ
- Agentic Retrieval は多段検索は 1 リクエストで複数回の検索と回答生成が走り、単発の
Retrieveより処理が重くなるため、課金は高くなる傾向がある
個人で検証される方は「インデックス化したデータの保存量」として、$5.00 per GB of raw data / month がかかるようですので注意しましょう。
試してみた
ここでは (1) コンソールで managed Knowledge Baseを作成し、(2) AgentCore Gateway のターゲットとして登録して、エージェントから MCP 経由で引く、という流れを試します。
managed Knowledge Base を作成する
Knowledge Base を今まで作ったことがある方は、UI の流れはほぼ見慣れていると思いますので画面は省きます。
-
Amazon Bedrock コンソールを開き、左メニューの Knowledge Bases へ移動します
-
Create Managed KB を選択します
-
データソースのコネクタをドロップダウンから選びます(今回は手軽な Amazon S3 を選択)
-
対象の S3 バケット/プレフィックスを指定します
-
IAM ロールが自動で作成されます
-
最適化済みのデフォルト設定のまま作成します
作成後、データの取り込み(同期)が走ります。
コンソールのテストパネルで質問を投げて手応えを確認してみます。なお、データソースには S3 にこちらの AWS blogs を html 形式で保存しています。
こちらが Agentic retrieval with answer generation で回答まで生成させた場合です。

こちらが Agentic retrieval only で回答までは生成させず、関連する文章のみが返された場合です。

AgentCore Gateway のターゲットとして登録する
managed Knowledge Base は AgentCore Gateway の組み込みコネクタとして登録でき、エージェントは MCP の標準的な呼び出しとして利用できます。むしろ、この AgentCore Gateway から managed Knowledge Base を呼び出せることになったのが今回のアップデートのポイントかと思います。
ここではコンソールから Gateway を作り、ターゲットとして managed Knowledge Base を登録していきます。AgentCore を今まで作ったことがある方は、UI の流れはほぼ見慣れていると思いますので画面は掻い摘む程度にします。
1.AgentCore コンソールを開き、左メニューの ゲートウェイ へ移動後 ゲートウェイを作成 を選択します
2.【Define gateway details】: ゲートウェイ名 を入力します
3.【Configure Inbound Identity】: JSON Web Tokens (JWT) を使用します。試すだけなら Cognito を利用した設定のクイック作成 - recommended を選ぶと、Cognito の認可リソースをまとめて作ってくれて手軽です
4.【Add targets】: ここが本題です。
ターゲットタイプで Connectors を選択し、Pre-configured targets に Knowledge Bases (KB)、Runtime retrieval type に Agentic retrieval を選択しましょう。

Knowledge Base (KB) に先ほど作成した Knowledge Base を選択します。

5.【Review and create】: 設定項目に問題がないことを確認し、「ゲートウェイを作成」をクリックします。
エージェントから呼び出してみる
ここまでで、Gateway 上に AgenticRetrieveStream などのツールが MCP 経由で公開されました。あとはエージェントから繋ぐだけです。今回は Strands Agents を使って、Gateway をそのまま MCP サーバとして接続してみます。
まずは必要なライブラリを入れます。
pip install strands-agents mcp requests
Gateway の Inbound Identity を JWT(Cognito)にしているので、まず Cognito の client_credentials フローでアクセストークンを取得し、それを Authorization: Bearer ヘッダーに乗せて MCP 接続します。
client_id / client_secret はシークレットです。コードに直書きせず、環境変数などから読み込みましょう。以下では os.environ から取得しています。
from strands import Agent
from strands.models import BedrockModel
from strands.tools.mcp.mcp_client import MCPClient
from mcp.client.streamable_http import streamablehttp_client
import os
import requests
# シークレットは環境変数から読み込む(直書きしない)
CLIENT_ID = os.environ["COGNITO_CLIENT_ID"]
CLIENT_SECRET = os.environ["COGNITO_CLIENT_SECRET"]
TOKEN_URL = os.environ["COGNITO_TOKEN_URL"] # https://<your-domain>.auth.<region>.amazoncognito.com/oauth2/token
GATEWAY_URL = os.environ["GATEWAY_URL"] # https://<gateway-id>.gateway.bedrock-agentcore.<region>.amazonaws.com/mcp
def fetch_access_token() -> str:
response = requests.post(
TOKEN_URL,
data={
"grant_type": "client_credentials",
"client_id": CLIENT_ID,
"client_secret": CLIENT_SECRET,
},
headers={"Content-Type": "application/x-www-form-urlencoded"},
)
return response.json()["access_token"]
def create_transport(mcp_url: str, access_token: str):
return streamablehttp_client(mcp_url, headers={"Authorization": f"Bearer {access_token}"})
def run_agent(mcp_url: str, access_token: str):
mcp_client = MCPClient(lambda: create_transport(mcp_url, access_token))
with mcp_client:
tools = mcp_client.list_tools_sync()
print(f"Found tools: {[t.tool_name for t in tools]}")
model = BedrockModel(
model_id="jp.amazon.nova-2-lite-v1:0",
region_name="ap-northeast-1",
)
agent = Agent(model=model, tools=tools)
agent("Amazon Bedrock managed Knowledge Base について教えて")
run_agent(GATEWAY_URL, fetch_access_token())
実行すると、エージェントが AgenticRetrieveStream ツールを呼び出し、Knowledge Base から引いた内容をもとに回答を生成してくれます。

S3 に入れておいた AWS Blogs の内容をきちんと引いて、コンソールのテストパネルで見たのと同じ回答がエージェントからも MCP 経由で素直に使えています。
まとめ
- managed Knowledge Base は、検索インフラの運用を手放して RAG を最短で立ち上げられる選択肢
- Agentic Retrieval と AgentCore Gateway 連携により、エージェントから「根拠付きの回答」を MCP 経由で素直に引ける
既存 API と互換で ID 差し替えだけで移行できるとのことなので、いま自前のベクトルストアで運用している方も、移行候補として一度試してみると良いかもしれないですね。
参考リンク

