Amazon Connect AIエージェントで質問内容に応じて複数のナレッジベースを使い分ける(選択的クエリ)方法

Amazon Connect AIエージェントで質問内容に応じて複数のナレッジベースを使い分ける(選択的クエリ)方法

2026.03.19

はじめに

Amazon ConnectのオーケストレーションAIエージェントでは、複数のナレッジベースを統合して回答させることができます。

以前の記事では、プロンプトで「常にすべてのナレッジベースを同時に検索する」ように強制する方法を紹介しました。

しかし、実際の運用では「人事(HR)に関する質問なら人事用ナレッジベースを」「ITに関する質問ならIT用ナレッジベースを」といったように、ユーザーの質問内容に応じてAIに適切なナレッジベースを判断させたいケースも多いはずです。

本記事では、以下のドキュメントをもとにAIエージェントが文脈を理解し、複数のナレッジベースから適切なものを「選択的にクエリ(Querying knowledge bases selectively)」する設定手順を紹介します。

https://docs.aws.amazon.com/ja_jp/connect/latest/adminguide/multiple-knowledge-base-setup-and-content-segmentation.html

前提条件(テスト用データの準備)

今回は「人事(HR)」と「ITサポート」の2つのナレッジベースを使い分ける検証を行います。
事前に以下の内容をテキストファイルとして保存し、それぞれ別のS3バケットにアップロードして、Amazon ConnectAIエージェントで2つのナレッジベース(統合)を作成しておきます。

cm-hirai-screenshot 2026-03-13 17.39.00

1. 人事(HR)用ナレッジベース

  • 統合名: cm-hirai-s3
  • 保存ファイル: hr_faq.txt
【人事部 FAQ】
Q. 有給休暇の申請方法を教えてください。
A. 有給休暇の申請は、社内ポータルサイトの「勤怠管理システム」から行います。取得希望日の3営業日前までに上長の承認を得る必要があります。

Q. 交通費の精算スケジュールを教えてください。
A. 毎月月末までに「経費精算システム」で申請された交通費は、翌月の給与支払い日に合算して振り込まれます。

2. ITサポート用ナレッジベース

  • 統合名: cm-hirai-s3-2
  • 保存ファイル: it_faq.txt
【ITサポート FAQ】
Q. 社外から社内ネットワーク(VPN)に接続する方法を教えてください。
A. 会社貸与のPCにインストールされている「AnyConnect」アプリを起動し、社員IDとパスワードを入力してください。その後、スマートフォンに届くMFA(多要素認証)を承認すると接続されます。

Q. 社内システムのパスワードを忘れました。
A. パスワードリセットポータル(https://password-reset.example.com)にアクセスし、社員IDと登録済みの予備メールアドレスを入力して再設定を行ってください。

【Tips】ナレッジベースIDの特定方法

AIエージェントのツール設定画面では、ナレッジベースを選択するプルダウンに 「アシスタント関連付けID(Assistant Association ID)」という英数字の羅列しか表示されません
そのため、設定前にAWS CloudShellを開き、以下のコマンドを実行して「ナレッジベース名」と「関連付けID」の紐付けを確認しておきましょう

以下のスクリプトをコピーし、CloudShellに貼り付けて実行してください。(DOMAIN_NAME="cm-hirai" の部分はご自身の環境に合わせて変更してください)

実行コマンド:

DOMAIN_NAME="cm-hirai"
ASSISTANT_ID=$(aws qconnect list-assistants --query "assistantSummaries[?name=='$DOMAIN_NAME'].assistantId" --output text)

(
echo -e "AssociationId\tKnowledgeBaseName"
echo -e "------------------------------------\t-------------------"
aws qconnect list-assistant-associations \
  --assistant-id $ASSISTANT_ID \
  --query 'assistantAssociationSummaries[?associationType==`KNOWLEDGE_BASE`].[assistantAssociationId, associationData.knowledgeBaseAssociation.knowledgeBaseId]' \
  --output text | while read assoc_id kb_id; do
    kb_name=$(aws qconnect list-knowledge-bases --query "knowledgeBaseSummaries[?knowledgeBaseId=='$kb_id'].name" --output text)
    echo -e "$assoc_id\t$kb_name"
done
) | column -t

出力例:

AssociationId                         KnowledgeBaseName
------------------------------------  -------------------
2102f376-6538-4e04-a93e-65c948e114bf  cm-hirai-s3-2
4ca0a4dd-62b6-456a-9f03-923773e8109d  cm-hirai-s3

この結果から以下が分かります。

  • 人事用(cm-hirai-s3)の画面で選ぶべきIDは 4ca0a4dd...
  • IT用(cm-hirai-s3-2)の画面で選ぶべきIDは 2102f376...

これをメモしておき、次の設定に進みます。

AIプロンプトの作成

AIエージェントが「質問内容に応じて適切なツールを1つだけ選ぶ」ように指示するためのプロンプトを作成します。

Amazon Connectの管理画面から、オーケストレーションタイプのデフォルトAIプロンプトである SelfServiceOrchestration をコピーして新規作成します。

cm-hirai-screenshot 2026-03-11 11.39.34

プロンプト内で <core_behavior> セクションを見つけ、その直下に以下の CRITICAL(重要) なルールを追記します。ツールの説明部分には、ユーザーが実際に使うであろう日本語のキーワードを含めます。

  <core_behavior>
  CRITICAL - Retrieve Tool Selection: You have multiple Retrieve tools. Each queries a different knowledge base. You MUST select only ONE tool per question based on the topic. 
  - Retrieve_HR: 従業員の福利厚生、給与、休暇、会社のポリシーに関する情報が含まれています。
  - Retrieve_IT: ソフトウェアのトラブルシューティング、ハードウェアの要求、VPN、ネットワークの問題に関する情報が含まれています。
  Evaluate the question, match it to the most relevant tool, and invoke only that tool.

cm-hirai-screenshot 2026-03-13 17.44.33

このプロンプトの意図

この指示は、「複数のRetrieveツールがあるが、トピックに基づいて質問ごとに1つのツールだけを選択しなければならない」とAIに強制するものです。
さらに、各ツールにどのような日本語の情報が含まれているかを明記し、ユーザーの質問(日本語)と直接マッチングしやすくしています。

なお、このプロンプト文は独自に考えたものではなく、AWS公式ドキュメントに「複数のナレッジベースをセットアップする際のベストプラクティス」としてそのまま記載されているものです。

cm-hirai-screenshot 2026-03-13 17.41.48

その他のプロンプト内容はデフォルトのまま使用します。

モデルはデフォルトの global.anthropic.claude-haiku-4-5-20251001-v1:0 を選択し、プロンプトを保存します。

AIエージェントの作成とツールの設定

次に、オーケストレーションタイプのAIエージェントを作成し、検索ツールを設定します。
デフォルトの SelfServiceOrchestrator をコピーして作成を開始します。
cm-hirai-screenshot 2026-03-11 11.45.07

次に、AIが「どのツールをいつ使うべきか」を正確に判断できるように、各ツールの「指示テキスト(Instruction)」と「例(Examples)」を、ユーザーが実際に使う日本語に合わせて書き換えます。

1つ目のツール(人事用)の設定

デフォルトの「Retrieve」ツールを編集し、先ほどメモした 人事(HR)用のナレッジベースID(4ca0a4dd... を選択して関連付けます。

cm-hirai-screenshot 2026-03-11 12.02.55

  • 名前: Retrieve_HR
  • 指示テキスト(Instruction)
    具体的なトピックと、想定される日本語の質問例(Example questions)を含めます。
    従業員の福利厚生、給与、休暇、会社のポリシーに関する情報を見つけるために人事ナレッジベースを検索します。
    想定される質問例: "有給休暇の申請方法は?", "交通費はいつ振り込まれますか?"
    RETRIEVEツールの結果を使用して、顧客の質問に情報に基づいた回答を提供してください。
    
  • 例(Examples)
    デフォルトのテキストを消去し、人事に関する日本語の回答例に変更します。
    Good example:
    <message>
    有給休暇の申請は、社内ポータルサイトの「勤怠管理システム」から行います。取得希望日の3営業日前までに上長の承認を得る必要があります。
    </message>
    
    Example for no results:
    <message>
    その人事に関する具体的な情報は見つかりませんでした。
    </message>
    

2つ目のツール(IT用)の追加

「ツールの追加(Add Tool)」から「Retrieve」タイプを選択し、 ITサポート用のナレッジベースID(2102f376... を選択して関連付けます。

cm-hirai-screenshot 2026-03-11 12.03.50

  • 名前: Retrieve_IT
  • 指示テキスト(Instruction)
    IT関連のトピックと質問例を含めます。
    ソフトウェアのトラブルシューティング、ハードウェアの要求、VPN、ネットワークの問題に関する情報を見つけるためにITナレッジベースを検索します。
    想定される質問例: "自宅からVPNに繋ぐには?", "社内システムのパスワードを忘れた"
    RETRIEVEツールの結果を使用して、顧客の質問に情報に基づいた回答を提供してください。
    
  • 例(Examples)
    ITに関する日本語の回答例に変更します。
    Good example:
    <message>
    社外から社内ネットワーク(VPN)に接続するには、会社貸与のPCにインストールされている「AnyConnect」アプリを起動し、社員IDとパスワードを入力してください。
    </message>
    
    Example for no results:
    <message>
    そのITサポートに関する具体的な情報は見つかりませんでした。
    </message>
    

最後に、先ほど作成したAIプロンプトを設定し、ロケールを日本語(ja_JP)にしてAIエージェントを保存します。

cm-hirai-screenshot 2026-03-11 12.03.59

Connectフローの設定

利用するコンタクトフローはシンプルです。
「顧客の入力を取得する」ブロックを配置し、作成したAIエージェントを指定するだけです。

cm-hirai-screenshot 2026-03-06 13.35.36

動作確認とログの解説

実際にチャットでテストし、AIが正しくツールを選択しているか確認します。

テスト1:人事系の質問

顧客: 「今月の電車代の精算って、いつの給料に入りますか?」
AI: 「毎月月末までに経費精算システムで申請された交通費は、翌月の給与支払い日に合算して振り込まれます。ですので、今月申請された電車代は、来月の給料に含まれて支給されることになります。」

【裏側の動き(ログの確認)】
CloudWatch Logsの TRANSCRIPT_AGENTIC_MESSAGE を確認すると、AIがどのように考えて回答を生成したのか、3つのステップで確認できます。

① ツールの選択とクエリ生成(completion フィールド)
AIは「電車代の精算」という言葉から「これは人事(HR)の話題だ」と文脈を理解し、Retrieve_HR ツールを選択しています。また、検索クエリもAIが自律的に最適なキーワードに変換しています。

{
  "toolUseList": [
    {
      "toolName": "Retrieve_HR",
      "toolUseId": "tooluse_f5O06dX6oiQ5pMHZyLUfY9",
      "toolInput": "{\"assistantId\": \"d28ddb7e-edee-4655-a8d3-02cf659d80f6\", \"retrievalQuery\": \"交通費精算給料支給タイミング\", \"retrievalConfiguration\": {\"knowledgeSource\":{}}}"
    }
  ]
}

※LLM自身はナレッジベースIDを知らないため、この時点では knowledgeSource は空({})になっています。

② システムによるID補完と検索実行(parsed_response フィールド)
Connectのシステム側で、自動的に Retrieve_HR ツールに紐づくナレッジベースID(4ca0a4dd...)が補完され、実際の検索APIが実行されます。

ToolUseBlock(ToolUseId=tooluse_f5O06dX6oiQ5pMHZyLUfY9, Name=Retrieve_HR, Input="{\"assistantId\":\"d28ddb7e-edee-4655-a8d3-02cf659d80f6\",\"retrievalQuery\":\"交通費精算給料支給タイミング\",\"retrievalConfiguration\":{\"knowledgeSource\":{\"assistantAssociationIds\":[\"4ca0a4dd-62b6-456a-9f03-923773e8109d\"]}}}")

③ 検索結果の取得(ツール実行結果の parsed_response フィールド)
検索の結果、人事用ナレッジベースから該当するFAQのテキストデータが取得され、AIに渡されます。

{
    "status": "success",
    "output": "{\"results\":[{\"sourceId\":\"...\",\"contentText\":\"【人事部 FAQ】 ... Q. 交通費の精算スケジュールを教えてください。 A. 毎月月末までに「経費精算システム」で申請された交通費は、翌月の給与支払い日に合算して振り込まれます。\"}]}"
}

AIは、この取得した contentText の内容を読み取り、ユーザーの質問に対する最終的な回答を生成しています。

テスト2:IT系の質問

続けて、同じセッション内でITに関する質問を投げてみます。

顧客: 「ログイン用の暗証番号がわからなくなりました。どうすればいいですか?」
AI: 「社内システムのパスワードを忘れた場合は、パスワードリセットポータルでリセットしていただけます。https://password-reset.example.com にアクセスして、社員IDと登録済みの予備メールアドレスを入力すれば、新しいパスワードを再設定できます。

もし予備メールアドレスを登録していない場合や、リセットポータルにアクセスできない場合は、ITサポートまでお問い合わせください。何かご不明な点はございますか?」

【裏側の動き(ログの確認)】
同様にログを確認すると、今度はAIが「ログイン」「暗証番号」という言葉からITサポートの文脈であると推論し、Retrieve_IT ツールを選択しています。

① ツールの選択とクエリ生成

{
  "toolUseList": [
    {
      "toolName": "Retrieve_IT",
      "toolUseId": "tooluse_NznlNhQ54ipHGGZEMnUiUa",
      "toolInput": "{\"assistantId\": \"d28ddb7e-edee-4655-a8d3-02cf659d80f6\", \"retrievalConfiguration\": {\"knowledgeSource\":{}}, \"retrievalQuery\": \"ログインパスワード暗証番号忘れた リセット\"}"
    }
  ]
}

② システムによるID補完と検索実行

ToolUseBlock(ToolUseId=tooluse_NznlNhQ54ipHGGZEMnUiUa, Name=Retrieve_IT, Input="{\"assistantId\":\"d28ddb7e-edee-4655-a8d3-02cf659d80f6\",\"retrievalConfiguration\":{\"knowledgeSource\":{\"assistantAssociationIds\":[\"2102f376-6538-4e04-a93e-65c948e114bf\"]}},\"retrievalQuery\":\"ログインパスワード暗証番号忘れた リセット\"}")

③ 検索結果の取得
IT用ナレッジベースから、パスワードリセットに関するFAQが取得されています。

{
    "status": "success",
    "output": "{\"results\":[{\"sourceId\":\"...\",\"contentText\":\"【ITサポート FAQ】 ... Q. 社内システムのパスワードを忘れました。 A. パスワードリセットポータル(https://password-reset.example.com)にアクセスし、社員IDと登録済みの予備メールアドレスを入力して再設定を行ってください。\"}]}"
}

このように、プロンプトの例と一言一句同じでなくても、AIが質問の意図を汲み取り、適切なナレッジベース(ツール)を自律的に選択して回答を生成できていることが確認できました!

まとめ

AIエージェントに複数のナレッジベースを選択的にクエリさせるためには、以下の設定が重要です。

  1. AIプロンプトの <core_behavior> に、質問のトピックに基づいて1つのツールだけを選択するよう指示を追記する
  2. 各Retrieveツールの「指示テキスト(Instruction)」と「例(Examples)」に、そのナレッジベースがどのような情報を含んでいるかをユーザーの言語(日本語)で具体的に記述し、ツール間の役割の重複を避ける

これにより、LLM(Claude)の推論能力を活かして、ユーザーの意図に最も適したナレッジベースだけをピンポイントで検索させることができます。無駄な検索を減らすことで、回答精度の向上や処理速度の改善が期待できるため、用途の異なるナレッジベースを複数統合する際には非常におすすめの設定です。

この記事をシェアする

FacebookHatena blogX

関連記事