View a markdown version of this page

エージェント型検索を使用してナレッジベースをクエリする - Amazon Bedrock

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

エージェント型検索を使用してナレッジベースをクエリする

エージェント取り出しは、基盤モデルを使用して複雑なクエリをインテリジェントにサブクエリに分解し、ナレッジベースから関連情報を繰り返し取得し、取得した結果が元のクエリに回答するのに十分かどうかを評価します。このアプローチにより、1 回の取り出しパスで完全には対処できない複雑な複数ステップの質問に対する取り出し精度が向上します。

例えば、クエリ「最初に開始されたのはどのマガジン、アーサーズの"、または女性向けの最初の?」を考慮すると、エージェント検索はこれを「アーサーズの" がいつ設立された?」などの個別のサブクエリに分割します。と「First for women founded?」は、それぞれの結果を取得し、組み合わせた結果で十分かどうかを評価します。

エージェント取り出しの仕組み

AgenticRetrieveStream API にリクエストを送信すると、次のプロセスが発生します。

  1. セッション履歴のロード – memoryConfigurationを含む を指定するとsessionBinding、Amazon Bedrock はエージェントが作業を開始する前に、そのセッションの以前の履歴を AgentCore Memory 短期メモリから復元します。復元された履歴は、リクエストの会話コンテキストになります。

  2. 計画 – 基盤モデルはクエリを分析し、1 つ以上のサブクエリに分解する計画を作成します。各サブクエリは、ナレッジベースリトリーバーまたは AgentCore Memory 長期メモリのいずれか、設定した特定のソースを対象とします。取得結果が収集されると、基盤モデルは元のクエリに回答するのに十分かどうかを評価します。そうでない場合、設定された最大値まで追加の取得反復を計画して実行します。

  3. 取得 — サブクエリは、設定されたソースに対して実行されます。結果は各取得から収集されます。

  4. 完全なドキュメント拡張 – 基盤モデルがドキュメントの完全なコンテンツが必要であると判断した場合 (要約、完全性の検証、特定のセクションへのアクセスなど)、GetDocumentContent API を呼び出して完全なドキュメントコンテンツを取得します。

  5. レスポンスの生成 – generateResponseが true (デフォルト) に設定されている場合、基盤モデルは取得した結果から自然言語の回答を合成します。Amazon Bedrock はresponseEvent、イベントを通じて回答をストリーミングします。sessionBinding が設定され、 persistenceModeが の場合DEFAULT、Amazon Bedrock はセッションに対する質問と生成された回答を保持します。

  6. 結果イベント – 重複排除された取得は、すべての反復の結果であり、完全に合成された自然言語の回答と引用が返されます。トレースイベントは、オブザーバビリティのためにプロセス全体でストリーミングされます。

前提条件

エージェント取り出しを使用する前に、次のものが必要です。

  • フルマネージド型の Amazon Bedrock ナレッジベース。エージェント取り出しは現在、マネージドナレッジベースのみをサポートしています。

  • クエリの計画と評価に使用する Amazon Bedrock の基盤モデルへのアクセス。

  • 必須の IAM アクセス権限 詳細については、「エージェントの取得に必要なアクセス許可」を参照してください。

エージェント取り出しを使用してナレッジベースをクエリする

エージェント取り出しを使用するには、 AgenticRetrieveStreamリクエストを送信します。レスポンスは、取得結果とトレースイベントを含むストリームです。

次の表に、キーリクエストフィールドを示します。

必須フィールド
フィールド 説明
messages 入力クエリと会話履歴。各メッセージには、text値を持つroleフィールドとcontentフィールド (user または ) が含まれますassistant。
リトリーバー データを取得するナレッジベースリトリーバー。最大 5 つのリトリーバーを指定できます。各リトリーバーは、ID でマネージドナレッジベースを指します。各リトリーバーには、オプションでメタデータフィルターと最大結果数を含めることができます。
agenticRetrieveConfiguration クエリの計画と評価に使用する基盤モデル、およびオプションで再ランク付けモデルとエージェントの最大反復数を含む、エージェント取り出し設定。
任意フィールド
フィールド 説明
policyConfiguration エージェントの取得中に適用する Amazon Bedrock ガードレールを設定します。guardrailId と を指定しますguardrailVersion。
userContext アクセスコントロールフィルタリングのユーザーコンテキストを提供します。
memoryConfiguration 取得で使用する AgentCore Memory リソースを設定します。を指定しmemoryId、セッションを復元して続行するsessionBindingか、エージェントが長期メモリ、またはその両方から取得retrievalConfigsできるようにします。詳細については、「エージェント取り出しで AgentCore メモリを使用する」を参照してください。
generateResponse (デフォルト) true に設定すると、取得した結果から自然言語の回答を生成するように基盤モデルに指示するブール型フィールド。回答はテキストチャンクとしてストリーミングされ、結果イベントに含まれます。

リクエストとレスポンスの完全な構文については、 API リファレンスAgenticRetrieveStreamの「」を参照してください。

エージェント取り出しレスポンス

AgenticRetrieveStream レスポンスは、次のイベントタイプを含むストリームです。

  • 結果イベント (AgenticRetrieveResultEvent) – 処理の完了時に配信される最終イベント。取得結果と、レスポンス生成が有効になっている場合に生成されたレスポンスが含まれます。結果イベントには以下が含まれます。

    • 取得結果 (results) – すべての反復で取得されたソースチャンク。各結果には、コンテンツ、ソースリトリーバー識別子、およびオプションのメタデータが含まれます。同じチャンクが複数のサブクエリによって取得されると、最終結果に 1 回だけ表示されます。

    • 生成されたレスポンス (generatedResponse) – generateResponseが true (デフォルト) に設定されている場合、結果イベントには以下を含むgeneratedResponseオブジェクトが含まれます。

      • answer – 合成された完全な自然言語回答テキスト。

      • citations – 回答の範囲をサポートの取得結果にマッピングするオプションのリスト。各引用には以下が含まれています。

        • startIndex – 引用された文章がanswer文字列内で始まる文字オフセット。

        • endIndex – 引用されたパッセージが終了する文字オフセット (排他的 — 引用されたテキストは から startIndex まで実行されますが、 は含まれませんendIndex)。

        • references – 各参照に、同じ結果イベントのresults配列にインデックスを作成するresultIndexフィールドがあり、どの取得結果が引用されたスパンをサポートしているかを示すリスト。

  • レスポンスイベント (AgenticRetrieveResponseEvent) – generateResponseが true (デフォルト) に設定されている場合、responseEventイベントはレスポンスの生成中にストリーミングされます。各イベントには、合成された自然言語回答の増分部分を含むtextフィールドが含まれます。

  • トレースイベント (AgenticRetrieveTraceEvent) – エージェント取り出しプロセス中にストリーミングされ、各ステップを可視化するイベント。トレースイベントのタイプは次のとおりです。

    • 計画 – 基盤モデルがクエリを分析し、サブクエリを作成していることを示します。計画されたアクションとターゲットソースが含まれます。各アクションは、ナレッジベースをターゲットとするretrieveアクション、または構成されたクエリと を含む長期メモリをターゲットとするmemoryRetrieveアクションのいずれかですmemoryId。

    • 取得 — 設定されたソースに対して取得が実行されていることを示します。取得の入力、出力、警告または失敗が含まれます。retrievalMetadata エントリは、 BedrockKnowledgeBaseまたは のいずれかのソースタイプを報告しますBedrockAgentCoreMemory。

    • 投機的取り出し – レイテンシーを減らすために最初の計画ステップの前に実行される最初の取り出し。単一のナレッジベースの場合、raw ユーザークエリを使用して結果を取得します。複数のナレッジベースの場合、クエリを適切なリトリーバーにルーティングするのに役立つプローブ検索を実行します。を設定するとretrievalConfigs、このステップは長期メモリから を取得することもできます。

    • ドキュメントの完全拡張 – エージェントが特定のドキュメントの完全なコンテンツを取得していることを示します。ドキュメント ID、ソースリトリーバー、ステータス (InProgress、失敗) が含まれます。

    • セッション履歴のロード – エージェントが作業を開始する前に、Amazon Bedrock が AgentCore Memory 短期メモリから以前のセッションの履歴を復元していることを示します。

エージェント取り出しで AgentCore メモリを使用する

Amazon Bedrock AgentCore Memory リソースへのエージェント取り出しアクセスを許可できます。メモリアクセスを使用すると、取得は以前のセッションを続行し、エージェントが以前のセッションで学習したことを活用できます。ACTIVE 状態のアカウントのメモリリソースmemoryIdの を memoryConfigurationフィールドに入力します。

メモリはオプションです。のみmemoryConfigurationを設定する memoryIdは有効ではありません。を指定するときはmemoryConfiguration、次の 2 つの方法の少なくとも 1 つでメモリリソースを使用する必要があります。

  • 短期メモリ (sessionBinding) - 以前のセッションの履歴を復元して、リクエストが新しいセッションを開始するのではなく、そのセッションを継続するようにします。actorId および を使用してセッションを特定しますsessionId。は履歴をactorIdスコープするため、あるアクターの履歴が別のアクターに返されることはありません。sessionBinding が設定されている場合、 は現在のクエリのみを roleで実行messagesする必要がありますuser。セッションを復元し、同じリクエストで messagesに以前の会話履歴を指定することはできません。復元は、 USERまたは のロールを持つ会話イベントをロードしますASSISTANT。

  • 長期メモリ (retrievalConfigs) — AgentCore Memory が以前のセッションから抽出したメモリレコードをエージェントが使用できるようにします。レコードをnamespaceプレフィックスで識別するか、親の下にあるすべての名前空間で取得namespacePathする で識別します。と を使用して結果を絞り込むことができますstrategyIdmetadataFilters。エージェントは、独自のクエリを取得して構成するかどうかを決定します。

プレースホルダーがすでに解決されている状態で、メモリ戦略で設定されているとおりに名前空間を指定します。たとえば、 戦略が名前空間 を定義する場合は/strategy/{memoryStrategyId}/actor/{actorId}、テンプレートではなく解決された値を指定します。名前空間、戦略、メモリレコードの詳細については、「Amazon Bedrock AgentCore デベロッパーガイド」の「メモリの用語」を参照してください。

注記

正しい memoryId、sessionBinding、および retrievalConfigs値を指定するのはお客様の責任です。エージェント取り出しでは、セッションまたは指定した名前空間が、続行する会話に対応していることは検証されません。誤った値を指定すると、予期しない結果が表示されます。

sessionBinding が設定されている場合、 を使用して、現在の交換がセッションに書き戻されるかどうかpersistenceModeを制御します。

  • DEFAULT (デフォルト) — 質問と生成された回答を 1 つのイベントとしてセッションに貼り付けます。この値は generateResponseである必要がありますtrue。

  • NONE— セッションは変更されません。この値を使用して、 を追加せずにセッション履歴を読み取ります。

次の例では、以前のセッションを復元し、エージェントにそのアクターの長期メモリへのアクセスを許可し、交換をセッションに保持します。

{ "messages": [ { "content": { "text": "What did we decide about the migration timeline?" }, "role": "user" } ], "retrievers": [ { "configuration": { "knowledgeBase": { "knowledgeBaseId": "KB12345678" } } } ], "agenticRetrieveConfiguration": { "foundationModelType": "MANAGED", "rerankingModelType": "MANAGED" }, "memoryConfiguration": { "memoryId": "projectAssistantMemory-1a2b3c4d5e", "sessionBinding": { "actorId": "user-123", "sessionId": "session-456" }, "retrievalConfigs": [ { "namespace": "/strategy/summarization-1a2b3c4d5e/actor/user-123" } ], "persistenceMode": "DEFAULT" } }

レスポンスストリームはメモリアクティビティを報告します。復元はセッション履歴ロードトレースイベントとして表示されます。長期メモリが返すレコードは、ソースタイプが BedrockAgentCoreMemoryのいずれかのステップで取得トレースイベントに表示されます。

取得自体がどのように表示されるかは、いつ表示されるかによって異なります。基盤モデルがメモリの検索を選択すると (通常は継続的なセッションで)、取得は Planning トレースイベントのmemoryRetrieveアクションとして表示されます。新しいセッションでは、エージェントは代わりに、最初の計画ステップの前に、投機的取得中に長期メモリを取得できます。この場合、エージェントはmemoryRetrieve何も実行しません。詳細については、「エージェント取り出しレスポンス」を参照してください。

エージェントの取得に必要なアクセス許可

AgenticRetrieveStream API を使用するには、呼び出し元の IAM ID に次のアクセス許可が必要です。

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

エージェント取り出しでガードレールを使用する場合は、次のアクセス許可を追加します。

{ "Effect": "Allow", "Action": [ "bedrock:GetGuardrail", "bedrock:ApplyGuardrail" ], "Resource": "*" }

エージェント取り出しで AgentCore Memory リソースを使用する場合は、次のアクセス許可を追加します。

{ "Effect": "Allow", "Action": [ "bedrock-agentcore:GetMemory", "bedrock-agentcore:ListEvents", "bedrock-agentcore:RetrieveMemoryRecords", "bedrock-agentcore:CreateEvent" ], "Resource": "arn:aws:bedrock-agentcore:region:account-id:memory/memory-id" }

bedrock-agentcore:ListEvents は を設定した場合にのみ必要ですsessionBinding。 bedrock-agentcore:RetrieveMemoryRecordsは を設定した場合にのみ必要ですretrievalConfigs。 bedrock-agentcore:CreateEventは persistenceModeが の場合にのみ必要ですDEFAULT。

メモリリソースがカスタマーマネージドキーで暗号化されている場合は、そのキーに次のアクセス許可を追加します。

{ "Effect": "Allow", "Action": "kms:Decrypt", "Resource": "arn:aws:kms:region:account-id:key/key-id" }

考慮事項

エージェント取り出しを使用するときは、次の点に注意してください。

  • エージェント取り出しは、マネージド Amazon Bedrock ナレッジベースのみをサポートします。

  • リクエストあたりのリトリーバーのクォータ、取得呼び出しごとの結果、およびエージェントの最大反復数については、「」を参照してくださいマネージドナレッジベースのサービスクォータ。

  • 最大反復回数を減らすと、エージェントが早期に停止し、複雑なクエリの精度が低下する可能性があります。

  • ガードレールを設定する場合、 BLOCKアクションのみがサポートされます。MASK アクションは、エージェント取り出しではサポートされていません。

  • お客様は、提供された場合、エージェント取り出し中に使用される基盤モデル、埋め込みモデル、再ランク付けモデルを提供して所有します。IAM 認証情報は、これらのモデルを呼び出すために使用されます。

  • AgentCore Memory リソースを使用する場合、リソースはナレッジベースと同じアカウントにあり、 ACTIVE状態である必要があります。

  • を設定するとsessionBinding、 は現在のクエリのみを roleで実行messagesする必要がありますuser。セッションを復元し、同じリクエストで messagesに以前の会話履歴を指定することはできません。

  • セッションを復元すると、 USERまたは のロールを持つ会話イベントがロードされますASSISTANT。AgentCore Memory は、復元がロードされない ロールTOOLと OTHERロールも受け入れます。詳細については、「Amazon Bedrock AgentCore API リファレンスConversational」の「」を参照してください。

  • retrievalConfigs は現在、最大 1 つのエントリを受け入れ、各エントリは最大 5 つのmetadataFilters式を受け入れます。

  • セッションは生成された回答を保持するためtrue、 persistenceModeの は DEFAULTgenerateResponseである必要があります。