powered by TechFeed
表示モード
Amazon

Amazon BedrockがWeb検索をネイティブ機能として統合 — SerpAPIなどサードパーティ不要で、LLMの「知識の鮮度」問題をAWSがインフラレベルで解決

8月5日、AWSが「Introducing Web Search on Amazon Bedrock for foundation model grounding」と題した記事を公開した。Amazon Bedrockにファウンデーションモデルのグラウンディングを行うWeb検索機能が一般提供(GA)となったことを詳しく解説した内容だ。

8月5日、AWSが「Introducing Web Search on Amazon Bedrock for foundation model grounding」と題した記事を公開した。Amazon Bedrockにファウンデーションモデルのグラウンディングを行うWeb検索機能が一般提供(GA)となったことを詳しく解説した内容だ。


サードパーティ不要のWeb検索が、Bedrockのネイティブ機能に

LLMの根本的な弱点の一つが「知識のカットオフ」だ。先週の決算発表、昨日の規制変更、今朝の天気——これらはモデルの学習データに含まれていない。これを補う手法として「グラウンディング」(外部知識をモデルの回答に注入する手法)が広く使われているが、従来の実装ではSerpAPIやBrave Searchといったサードパーティのウェブ検索APIを自前で統合・運用する必要があり、導入コストやデータの社外流出リスクが課題だった。

Amazon BedrockのWeb検索はこの問題をAWS側でインフラレベルで引き受ける。サードパーティベンダーの契約もAPIキー管理も不要で、既存のAWS認証情報とIAMロールだけで動作する。元記事によれば、データはAWS環境の外に出ない設計(ゼロデータエグレス)となっており、コンプライアンス要件を持つ企業でも導入しやすい。

なお本機能は、AWS New York Summit 2026で先行発表されたAgentCore向けWeb Searchを、Amazon Bedrock全体に拡張する形で提供されている。AgentCoreはBedrockのエージェント実行基盤であり、そこで先行導入されたWeb検索機能が今回のGAによってBedrock全体のAPIから利用可能になったという関係性だ。Bedrockのエージェント機能全体については公式ドキュメントも参照されたい。


技術的な仕組み:検索からグラウンディングまで、すべてサーバーサイドで完結

Web Searchが有効なAPIコールでは、Bedrockがサーバーサイドで検索ライフサイクル全体を処理する。

  1. モデルがクエリに最新情報が必要と判断
  2. Bedrockが検索クエリを生成し、Amazonが運営するWebインデックスとナレッジグラフから関連コンテンツを取得
  3. 関連スニペット・ソースURL・タイトルをモデルのコンテキストウィンドウに注入
  4. モデルが取得コンテンツを元に回答を生成し、引用付きで返却

特筆すべきは「セマンティックスニペット抽出」だ。ページ全体をモデルに渡すのではなく、クエリに関連する段落だけを抽出して渡す。トークン効率が高く、レイテンシも低い。

また、Amazonが独自に運営するWebインデックス(継続的に更新)に加えてナレッジグラフを組み合わせている点もユニークだ。「この本の著者は誰か」「このイベントは何年か」といった事実確認系の質問は、ページテキストの断片を組み合わせるのではなくナレッジグラフから直接回答するため、細かい事実誤りを減らせる。


有効化はAPIパラメータ1つ

OpenAI互換のResponses APIを使っており、tools配列に1エントリ追加するだけで済む。

設定手順は3ステップ:

① AWS認証情報の設定とIAMパーミッション付与

別途APIキーは不要。既存のIAMロールやAWS CLIプロファイルを使う。必要なパーミッションは以下の通り:

  • AmazonBedrockMantleInferenceAccess(推論用マネージドポリシー)
  • bedrock-websearch:InvokeSearch(最低限必要)
  • bedrock-websearch:InvokeFetch(全文取得が必要な場合)
  • bedrock-websearch:ExternalWebAccess(ライブWeb取得を使う場合)

エンドポイントへのリクエストはAWSのベアラートークンで認証される。aws-bedrock-token-generatorパッケージで既存のIAM認証情報からSigV4ベースの短期トークン(最長12時間)を生成し、OpenAIクライアントのapi_keyパラメータにセットする形だ。

② Web Searchの有効化

tools=[{"type": "web_search", "external_web_access": False}]

external_web_accessはAmazonの事前インデックス済みコーパスを使うか、ライブWebから直接取得するかを選ぶフラグだ。現時点ではインデックス済みコーパスのみ提供されており、ライブWeb取得は将来のアップデートで有効化される予定。パラメータ自体はすでにAPIに存在するため、有効化時にコード変更は不要。

③ 引用付きレスポンスの取得

サンプルコードと出力例を以下に示す。コード中のmodel="openai.gpt-5.4"は元記事に記載されているBedrock上のモデル識別子をそのまま使用している。利用可能なモデルの最新一覧はBedrockの対応モデル一覧で確認されたい。

from openai import OpenAI
from aws_bedrock_token_generator import provide_token

REGION = "us-east-1"

client = OpenAI(
    base_url=f"https://bedrock-mantle.{REGION}.api.aws/openai/v1",
    api_key=provide_token(region=REGION),
)

response = client.responses.create(
    model="openai.gpt-5.4",
    input="What were the key announcements at AWS re:Invent 2025?",
    tools=[{"type": "web_search", "external_web_access": False}],
)

searches = [item for item in response.output if item.type == "web_search_call"]
print(f"Retrieval steps: {len(searches)}")
for call in searches:
    if call.action.type == "search":
        print(f"  search: {call.action.queries}")
    elif call.action.type == "open_page":
        print(f"  open_page: {call.action.url}")

for item in response.output:
    if item.type == "message":
        for content in item.content:
            if content.type == "output_text":
                print(content.text)
                for citation in content.annotations or []:
                    if citation.type == "url_citation":
                        print(f"  [{citation.title}] {citation.url}")

実行すると以下のような出力が得られる。検索ステップが2回走り、最終的な回答に引用URLが付与されている点を確認できる:

Retrieval steps: 2
  search: ['AWS re:Invent 2025 key announcements official AWS blog keynote recap']
  open_page: https://aws.amazon.com/blogs/aws/top-announcements-of-aws-reinvent-2025
The biggest AWS re:Invent 2025 announcements clustered around **AI agents, custom
silicon/infrastructure, and developer productivity**. ...
  [Top announcements of AWS re:Invent 2025 | AWS News Blog] https://aws.amazon.com/...
  [AWS re:Invent 2025: Amazon announces Nova 2, Trainium3, frontier agents] https://...

引用はurl_citationオブジェクトとして返され、start_indexend_indexで出力テキスト内の対応箇所を文字オフセットで指定できる。インライン脚注やハイライト表示の実装に活用できる:

{
  "type": "url_citation",
  "start_index": 120,
  "end_index": 303,
  "title": "Top announcements of AWS re:Invent 2025 | AWS News Blog",
  "url": "https://aws.amazon.com/blogs/aws/top-announcements-of-aws-reinvent-2025"
}

監査・可観測性

Web SearchはAWS CloudTrailと統合されており、bedrock-websearch:InvokeSearchおよびbedrock-websearch:InvokeFetchの呼び出しが管理イベントとして記録される。アクセス拒否(AccessDeniedException)は常にログに残り、拒否の原因となった条件キーも記録されるため、IAM設定ミスの診断が容易だ。

なお設計上、クエリテキストや取得URLの内容はCloudTrailに記録されない。クエリは推論プロンプトと同様に扱われ、ログには「誰がいつ使ったか」のみが残る仕組みだ。CloudTrailの管理イベント全般については公式ドキュメントも参照されたい。


提供状況

現在、米国リージョン(us-east-1、us-east-2、us-west-2)で一般提供中。対応モデルは現時点でBedrock上で提供されるOpenAIモデル(次世代推論エンジン経由)。料金はAmazon Bedrockの料金ページを参照のこと。

詳細はIntroducing Web Search on Amazon Bedrock for foundation model groundingを参照していただきたい。