「Amazon LexとAmazon Kendra、そして大規模な言語モデルを搭載したAWSソリューションのQnABotを使用して、セルフサービス型の質問応答を展開してください」
Deploy self-service question answering using AWS solutions QnABot with Amazon Lex, Amazon Kendra, and large language models.
Amazon Lexを搭載したQnABot on AWSソリューションは、オープンソースのマルチチャネル、マルチ言語の対話型チャットボットです。QnABotを使用すると、コンタクトセンターやウェブサイト、ソーシャルメディアチャネルに自己サービス型の対話型AIを迅速に展開することができます。これにより、コストを削減し、保留時間を短縮し、顧客体験とブランドの評価を向上させることができます。顧客は、大規模言語モデル(LLM)のパワーを活用して、生成的AIの機能によって顧客体験をさらに向上させたいと考えています。これには、既存の企業文書や知識ベースから正確な回答を自動生成し、自己サービス型のチャットボットをより対話的にすることが含まれます。
最新のQnABotリリース、v5.4.0以上では、LLMを使用して会話の文脈を考慮して顧客の質問を曖昧さを解消することができます。関連するFAQやAmazon Kendraの検索結果や文書の断片から動的に回答を生成することも可能です。また、回答を構築するためにLLMが使用した参照文書や文脈の断片へのリンクを表示することで、帰属と透明性も提供します。
QnABotを展開する際には、Amazon SageMakerエンドポイント上に最新のオープンソースのLLMモデル(Falcon-40B-instruct)を自動的に展開するか選択することができます。LLMの状況は常に変化しており、新しいモデルが頻繁にリリースされています。お客様は、さまざまなモデルやプロバイダを試して、自分のユースケースに最適なものを見つけたいと考えています。このため、QnABotは、提供されたAWS Lambda関数を使用して、他のどのLLMとも統合することができます。始めるのを支援するために、Amazon BedrockサービスやサードパーティのプロバイダであるAnthropicやAI21など、主要なLLMプロバイダと統合するためのサンプルのワンクリック展開可能なLambda関数(プラグイン)もリリースしています。
この投稿では、QnABotの新しい生成的AI機能を紹介し、これらの機能を使用してQnABotを作成、展開、カスタマイズするためのチュートリアルを説明します。また、関連するユースケースについても議論します。
新しい生成的AI機能
LLMを使用することで、QnABotにはこのセクションで説明する2つの重要な新機能が追加されました。
Amazon Kendraの検索結果やテキストの断片から質問に回答を生成する
QnABotは、Amazon Kendraの検索結果や直接作成またはインポートされたテキストの断片から、質問に簡潔な回答を生成することができます。これにより、以下の利点が得られます。
- 既存のドキュメントから即座に簡潔な回答を合成できるため、維持し、QnABotにインポートする必要があるFAQの数が減ります。
- 生成された回答は、対象のチャネルに最適な体験を作成するために変更できます。例えば、回答を短く、簡潔にし、音声チャネルのコンタクトセンターボットに適したものに設定したり、ウェブサイトやテキストボットではより詳細な情報を提供することができます。
- 生成された回答は、QnABotのマルチ言語サポートと完全に互換性があります。ユーザーは選択した言語で対話し、同じ言語で生成された回答を受け取ることができます。
- 生成された回答には、LLMが回答を構築するために使用した参照文書と文脈の断片へのリンクが含まれており、帰属と透明性を提供します。
例えば、「Amazon Lexとは何ですか?」と尋ねられた場合、QnABotはAmazon Kendraのインデックス(AWSのドキュメントを含む)から関連する断片を取得することができます。その後、QnABotはLLMに対して質問に回答するように促します。以下のスクリーンショットは、その例を示しています。
以前の会話の文脈に依存する追加の質問を明確化する
進行中の会話の方向と文脈を理解することは、自然で人間らしい対話インターフェースを構築する上で重要です。ユーザーのクエリは、会話の記憶と文脈に基づいてリクエストを解釈するため、ボットによる追加の質問を明確化する必要があります。QnABotは、LLMに対して会話の履歴に基づいて明確化された質問を生成するように要求します。これは、ユーザーの質問に回答するためにFAQ、断片、またはAmazon Kendraの検索結果を取得するための検索クエリとして使用することができます。以下は、例のチャット履歴です。
ユーザー: Amazon Lexとは何ですか?
AI: "Amazon Lexは、声やテキストを使用してアプリケーションの対話型インターフェースを構築するためのAWSのサービスです..."
ユーザー: CRMと統合できますか?
QnABotはLLMを使用して追加の質問を書き換えて「それ」を曖昧にしないようにします。例えば、「Amazon Lexは私のCRMシステムと統合できますか?」これにより、ユーザーは人間の会話のように対話することができ、QnABotは明確な検索クエリを生成して関連するFAQやドキュメントの一部を見つけ、ユーザーの質問に答える情報を持っています。
これらの新機能により、QnABotはより対話的になり、知識ベースに基づいて動的な応答を生成する能力を提供します。これはまだ大いに可能性を秘めた実験的な機能です。ユーザーには、最適なLLMとそれに対応するプロンプトやモデルパラメータを見つけるために実験することを強くお勧めします。QnABotは実験を簡単にするようになっています!
チュートリアル
試してみる時間です!最新のQnABot(v5.4.0以降)をデプロイし、新しい生成型AI機能を有効にします。高レベルの手順は次のとおりです:
- Amazon Kendraインデックスを作成してデータを入力します。
- LLMプラグインを選択してデプロイします(オプション)。
- QnABotをデプロイします。
- 使用するLambdaプラグインのQnABotを構成します(プラグインを使用する場合)。
- QnABotのWebクライアントにアクセスして実験を開始します。
- QnABot設定を使用して動作をカスタマイズします。
- 知識ベースにキュレーションされたQ&Aとテキストパッセージを追加します。
Amazon Kendraインデックスの作成とデータの入力
以下のAWS CloudFormationテンプレートをダウンロードして使用して、新しいAmazon Kendraインデックスを作成します。
このテンプレートには、Amazon Kendra、Amazon Lex、およびSageMakerのAWSオンラインドキュメントを含むサンプルデータが含まれています。スタックのデプロイには約30分、インデックスへのデータの同期には約15分かかります。
Amazon Kendraインデックススタックが正常にデプロイされたら、スタックのOutputsタブに移動し、後でQnABotをデプロイする際に使用するIndex Id
をメモしておきます。
または、独自のコンテンツを持つAmazon Kendraインデックスがすでにある場合は、チュートリアルで独自の例の質問を使用することもできます。
LLMプラグインの選択とデプロイ(オプション)
QnABotは、組み込みのLLM(SageMakerのFalcon-40B-instruct)をデプロイするか、選択した他のLLMを呼び出すためにLambda関数を使用することができます。このセクションでは、組み込みのLLMを使用する場合は次のステップに進んでください。
まず、使用するプラグインLLMを選択します。 qnabot-on-aws-plugin-samples
リポジトリのREADMEからオプションを確認します。現時点では、Amazon Bedrock(プレビュー版)およびAI21、AnthropicのサードパーティAPI用のプラグインが利用可能です。今後もサンプルプラグインを追加する予定です。
選択したプラグインをデプロイするには、Deploy a new Plugin stackセクションでLaunch Stackを選択します。これにより、デフォルトでus-east-1
リージョンにデプロイされます(他のリージョンにデプロイするには、「Build and Publish QnABot Plugins CloudFormation artifacts」を参照してください)。
プラグインスタックが正常にデプロイされたら、スタックのOutputsタブ(以下のスクリーンショットを参照)に移動し、その内容を確認します。これらの内容を使用して、次の手順でQnABotをデプロイおよび構成します。このタブをブラウザで開いたままにしておいてください。
QnABotのデプロイ
最新のQnABotテンプレートをAWS CloudFormationを介してデプロイするために、QnABotの実装ガイドからLaunch Solutionを選択します。次のパラメータを指定します:
DefaultKendraIndexId
には、先に収集したAmazon KendraインデックスID(GUID)を使用します。EmbeddingsApi
(Text Embeddingsを使用したセマンティックサーチを参照)から次のいずれかを選択します:SAGEMAKER
(デフォルトの組み込みEmbeddingsモデル)LAMBDA
(BEDROCK-EMBEDDINGS-AND-LLM
プラグインを使用したAmazon Bedrock Embeddings APIを使用する場合)EmbeddingsLambdaArn
には、BEDROCK-EMBEDDINGS-AND-LLM
プラグインスタックのEmbeddingsLambdaArn
出力値を使用します。
LLMApi
(Conversational RetrievalのQuery DisambiguationおよびGenerative Question Answeringを参照)から次のいずれかを選択します:SAGEMAKER
(デフォルトの組み込みLLMモデル)LAMBDA
(前にデプロイしたLLMプラグインを使用する場合)LLMLambdaArn
には、プラグインスタックのLLMLambdaArn
出力値を使用します。
その他のパラメータについてはデフォルト値を受け入れ(パラメータの定義については実装ガイドを参照)、QnABotスタックを起動してください。
プラグインを使用している場合は、Lambdaプラグイン用にQnABotを設定します
異なるLLMにアクセスするためにサンプルのLLM Lambdaプラグインを使用してQnABotをデプロイした場合、選択したプラグインに推奨されるように、QnABotモデルパラメータとプロンプトテンプレートの設定を更新してください。詳細については、「QnABotの設定の更新」を参照してください。SageMaker(組み込み)LLMオプションを使用した場合は、すでに設定が行われているため、次の手順に進んでください。
QnABotのWebクライアントにアクセスして実験を開始する
AWS CloudFormationコンソールで、QnABot CloudFormationスタックのOutputsタブを選択し、ClientURL
リンクを選択します。または、コンテンツデザイナーツールメニューからQnABot on AWS Clientを選択してクライアントを起動します。
これで、AWSのサービスに関連する質問をしてみてください。例えば:
- Amazon Lexとは何ですか?
- SageMakerは推論ワークロードをどのようにスケールアップしますか?
- Kendraは検索サービスですか?
その後、以下のようなコンテキストや以前に言及されたサービスを指定しないフォローアップの質問もできます:
- それは安全ですか?
- スケールしますか?
QnABotの設定を使用して動作をカスタマイズする
QnABotのコンテンツデザイナーの設定ページで多くの設定をカスタマイズできます。関連する設定の完全なリストについては、README-LLM設定を参照してください。例えば、以下を試してみてください:
-
ENABLE_DEBUG_RESPONSES
をTRUE
に設定して設定を保存し、前の質問を再試行します。すると、各レスポンスの上部にLLMがチャット履歴に基づいてAmazon Kendraの検索クエリを生成する方法、LLMの推論の実行にかかる時間などを示す追加のデバッグ出力が表示されます。例:[ユーザー入力:"速いですか?"、LLM生成クエリ(1207ミリ秒):"Amazon Kendraは検索結果を迅速に提供しますか?"、検索文字列:"速いですか? / Amazon Kendraは検索結果を迅速に提供しますか?"["LLM:LAMBDA"]、ソース:KENDRA RETRIEVE API
-
ENABLE_DEBUG_RESPONSES
をFALSE
に戻し、LLM_QA_SHOW_CONTEXT_TEXT
およびLLM_QA_SHOW_SOURCE_LINKS
をFALSE
に設定し、例を再試行します。すると、コンテキストやソースのリンクが表示されず、出力にはLLMが生成した応答のみが含まれます。 -
冒険心を持っている場合は、LLMプロンプトテンプレートの設定も試してみてください-
LLM_GENERATE_QUERY_PROMPT_TEMPLATE
およびLLM_QA_PROMPT_TEMPLATE
。ランタイムの値(チャット履歴、コンテキスト、ユーザー入力、クエリなど)のプレースホルダを使用する方法については、README-LLM設定を参照してください。デフォルトのプロンプトはおそらく改善され、カスタマイズされる可能性が高いため、実験することを躊躇しないでください!何かを壊してしまった場合は、設定ページのRESET TO DEFAULTSオプションを使用してデフォルトの設定に戻すことができます。
キュレーションされたQ&Aおよびテキストパッセージをナレッジベースに追加する
QnABotは、もちろん、キュレーションされたQ&Aに基づいて質問に答え続けることができます。さらに、Amazon Kendraインデックスに加えて、QnABotに直接作成またはインポートされたテキストパッセージから回答を生成するためにLLMを使用することもできます。
QnABotは、次のシーケンスで曖昧なユーザーの質問に適切な回答を見つけようとします:
- QnAアイテム
- テキストパッセージアイテム
- Amazon Kendraインデックス
いくつかの例を試してみましょう。
QnABotのコンテンツデザイナーツールメニューでImportを選択し、次の2つの例のパッケージをロードしてください:
TextPassages-NurseryRhymeExamples
blog-samples-final
QnABotはテキスト埋め込みを使用して意味検索機能を提供できます(QnABotの組み込みOpenSearchインデックスをベクトルストアとして使用)これにより、標準のOpenSearchキーワードベースのマッチングと比較して、精度が向上し、質問の調整が減少します。これを示すために、次のような質問を試してみてください:
- 「画面のあるAlexaデバイスについて教えてください」
- 「Amazonのビデオストリーミングデバイスについて教えてください」
これらの質問は、理想的にはインポートしたサンプルQNAに一致するはずです。質問するために使用される単語はキーワードの一致ではありませんが、構成されたQnAアイテムでの意味的な一致は良いです。 Alexa.001
(Amazon Echo Showとは何ですか)とFireTV.001
(Amazon Fire TVとは何ですか)。
Amazon Kendraを(まだ)使用していない場合でも、QnABotはContent Designerで作成またはインポートされたパッセージに基づいて質問に答えることができます。次の質問(および追加の質問)は、ナーサリーライム0.HumptyDumpty
を含むインポートされたテキストパッセージアイテムからすべて回答されます:
- 「Humpty Dumptyが落ちる前にどこに座っていましたか?」
- 「彼が落ちた後、何が起こりましたか?彼は大丈夫でしたか?」
埋め込みを使用する場合、良い回答は、対応するしきい値設定で定義されるしきい値以上の類似性スコアを返す回答です。しきい値設定のテストとチューニングの詳細については、大規模言語モデルテキスト埋め込みを使用した意味的な質問のマッチングを参照してください。
良い回答がない場合、またはLLMの応答がLLM_QA_NO_HITS_REGEX
で定義された正規表現に一致する場合、QnABotは設定可能なカスタム「わかりません」(no_hits
)の動作を呼び出します。デフォルトでは、「私は困りました」というメッセージを返します。
QnABotでQ&Aまたはテキストパッセージアイテムを作成し、Amazon Kendraインデックスをフォールバック生成回答に使用することで、いくつかの実験を試してみてください。デザイナーのTESTタブを使用して、望む動作を得るために埋め込みのしきい値設定に使用する最適な値を見つけてください。完璧なバランスを得るのは難しいですが、ほとんどの場合に有用な回答を得るための十分に良いバランスを見つけることができるかどうか試してみてください。
クリーンアップ
もちろん、QnABotを実験や同僚に紹介するために実行し続けることもできます!ただし、一部のコストがかかります。詳細については、「展開を計画する-コスト」を参照してください。リソースを削除してコストを回避するには、次のCloudFormationスタックを削除してください:
- QnABotスタック
- LLMプラグインスタック(該当する場合)
- Amazon Kendraインデックススタック
ユースケースの例
これらの新機能により、QnABotはセルフサービスの顧客サービスおよびサポートボットや自動化されたWebベースのQ&Aボットなど、多くの顧客ユースケースに関連するものになります。このセクションでは、2つのユースケースについて説明します。
コンタクトセンターとの統合
QnABotの自動化された質問回答機能により、コンタクトセンターの着信音声通話に効果的なセルフサービスが提供され、魅力的な結果が得られます。例えば、ケンタッキー州交通キャビネットは、Amazon ConnectとAmazon Lexを使用してセルフサービス仮想エージェントを使用した呼び出しの保留時間を短縮し、顧客エクスペリエンスを向上させました。新しい生成AI機能を統合することで、既存のドキュメント、ナレッジベース、ウェブサイトなどのコンテンツから信頼性のある回答を動的に生成できるようになります。これにより、ボットデザイナーはユーザーが可能な質問に対して事前に予測して手動で回答を作成する必要がなくなります。Amazon Connectとの統合については、「AWS上のQnABotをAmazon Connectコールセンターに接続する」を参照してください。他のコンタクトセンターとの統合については、「Amazon Chime SDKを使用してAmazon Lex音声ボットをSIPRECを介してサードパーティのコンタクトセンターに接続する方法」および「QnABotとAmazon Lexを使用してGenesys Cloud用のAIパワード仮想エージェントを構築する」を参照してください。
LLMパワードQnABotは、自動的なリアルタイムエージェントアシスタントとしても重要な役割を果たすことができます。このソリューションでは、QnABotは会話を受け取り、特定の手がかりに基づいて人間のエージェントにリアルタイムの提案を生成するためにLLMを使用します。設定して試すことは簡単です-やってみてください!このソリューションは、Amazon Connectおよび他のオンプレミスおよびクラウドコンタクトセンターの両方で利用できます。詳細については、「Amazon言語AIサービスを使用したコンタクトセンターのライブコール分析およびエージェントアシスト」を参照してください。
ウェブサイトに統合する
ウェブサイトやアプリケーションにQnABotを埋め込むことで、ユーザーは自然な対話で自動的なサポートを受けることができます。詳細については、「ChatbotのためのWeb UIをデプロイする」を参照してください。品質の高いQ&Aコンテンツには、マークダウン構文とUIボタンを使用し、リンク、画像、動画などの動的な要素を組み込んでユーザーに情報を提供し、喜ばせることができます。QnABot Amazon LexのWeb UIをAmazon Connectのライブチャットと統合することで、自動アシスタントだけではユーザーの問い合わせに完全に対応できない場合に、素早く人間のエージェントへのエスカレーションを容易にすることができます。
AWSプラグインサンプルリポジトリのQnABot
この記事では、QnABot v5.4.0+では、SageMakerにホストされた埋め込みとLLMモデルの組み込みサポートだけでなく、Lambda関数を使用して他のLLMと簡単に統合する機能も提供されていることを紹介しました。独自のカスタムLambda関数を作成するか、私たちが新たに提供したqnabot-on-aws-plugin-samplesリポジトリのサンプルのいずれかを使ってすぐに始めることができます。
このリポジトリには、埋め込みとテキスト生成リクエストの両方をサポートするAmazon Bedrockの即時デプロイプラグインが含まれています。執筆時点では、Amazon Bedrockはプライベートプレビューで利用可能ですので、プレビューアクセスをリクエストすることができます。Amazon Bedrockが一般に利用可能になると、QnABotと直接統合する予定ですが、なぜ待つ必要がありますか?プレビューアクセスを申請し、サンプルプラグインを使用して実験を開始してください!
現在のLLMイノベーションサイクルでは、新しいモデルのリリースが次々と行われ、常に前回を超えることを目指しています。このリポジトリは、時間の経過とともにさらに多くのQnABotプラグインサンプルを追加していく予定です。現時点では、AnthropicとAI21の2つのサードパーティモデルプロバイダーに対応しています。さらに、Lambdaフックとナレッジベースを使用した一般的なユースケース例に関する統合や、埋め込みなどの追加のLLMに対応する予定です。これらのプラグインは、利便性のために「現状のまま」提供されており、デプロイ後のサポートとメンテナンスはユーザーの責任です。
QnABotプラグインリポジトリが繁栄するオープンソースコミュニティプロジェクトに成長することを願っています。qnabot-on-aws-plugin-samples GitHubリポジトリをウォッチして、新しいプラグインや機能の更新情報を受け取り、問題の報告やフィードバックを提供するためのIssuesフォーラムを使用し、改善点をプルリクエストで貢献してください。貢献は歓迎されます!
結論
この記事では、QnABotの新しい生成AI機能を紹介し、これらの機能を使用してQnABotを作成、デプロイ、カスタマイズするためのソリューションを説明しました。また、関連するユースケースについても議論しました。繰り返しの問い合わせを自動化することで、人間の作業者の時間を確保し、生産性を向上させることができます。豊かな応答は魅力的な体験を創出します。LLMパワードQnABotをデプロイすることで、顧客と従業員のセルフサービス体験を向上させることができます。
この機会を逃さず、今日から始めてQnABotデプロイメントのユーザーエクスペリエンスを革新してください!
We will continue to update VoAGI; if you have any questions or suggestions, please contact us!
Was this article helpful?
93 out of 132 found this helpful
Related articles