概要
QnABot on AWS は、複数の言語とプラットフォームで顧客からの問い合わせに応える生成人工知能 (AI) ソリューションであり、チャット、音声、SMS、Amazon Alexa による会話を可能にします。この多用途なアシスタントは、コーディングを必要とせずに、さまざまなコミュニケーションチャネルで即時かつ一貫した対応を行うことで、組織がカスタマーサービスを向上させるのに役立ちます。
メリット
インテリジェントなマルチパートインタラクションで、パーソナライズされたチュートリアルや質疑応答サポートを提供します。QnABot 設定から質問を簡単にインポートおよびエクスポートできます。
Amazon Kendra の自然言語処理 (NLP) 機能を使用して、人間の質問をより良く理解できます。高性能な基盤モデルを提供するマネージドサービスである Amazon Bedrock を利用して、会話型アプリケーションを構築しましょう。
カスタマーサポートワークフローを自動化します。コスト削減を実現し、カスタマーサービスを改善して、顧客が正確な回答とサポートを迅速に得られるようにしましょう。
インテントとスロットのマッチングを利用して、さまざまな質疑応答ワークフローを実現します。大規模言語モデル (LLM) と検索拡張生成 (RAG) を通じて、自然言語理解、コンテキスト管理、マルチターンダイアログを活用します。
技術的な詳細情報
このアーキテクチャは、実装ガイドと適切な AWS CloudFormation テンプレートを使用して自動的にデプロイできます。VPC を使用してデプロイする場合は、まず 2 つのアベイラビリティーゾーンにまたがる 2 つのプライベートサブネットと 2 つのパブリックサブネットを持つ VPC をデプロイしてから、QnABot VPC AWS CloudFormation テンプレートを使用します。それ以外の場合は、QnABot Main AWS CloudFormation テンプレートを使用します。
ステップ 1
管理者はソリューションを AWS アカウント内にデプロイし、コンテンツデザイナーユーザーインターフェイス (UI) または Amazon Lex ウェブクライアントを開いた後、Amazon Cognito を利用して認証します。
ステップ 2
認証が完了すると、Amazon API Gateway と Amazon Simple Storage Service (Amazon S3) がコンテンツデザイナー UI のコンテンツを配信します。
ステップ 3
管理者がコンテンツデザイナーで質問と回答を設定すると、UI は API Gateway に質問と回答を保存するようリクエストを送信します。
ステップ 4
コンテンツデザイナーの AWS Lambda 関数が Amazon OpenSearch Service の質問バンクインデックスに入力を保存します。テキスト埋め込みを使用する場合、これらのリクエストは Amazon SageMaker または Amazon Bedrock でホストされている LLM を通過して、OpenSearch Service の質問バンクに保存される前に埋め込みを生成します。
さらに、コンテンツデザイナーはデフォルト設定とカスタム設定を Amazon Dynamo DB に保存します。
ステップ 5
アシスタントのユーザーは、Amazon Lex (ウェブクライアント UI を通じて)、Amazon Alexa、または Amazon Connect とインタラクションします。
ステップ 6
Amazon Lex は、リクエストをボットフルフィルメント Lambda 関数に転送します。ユーザーは、Amazon Alexa デバイスからでも、リクエストをこの Lambda 関数に送信できます。
注:ストリーミングが有効になっている場合、チャットクライアントは Amazon Lex セッション識別子 (セッション ID) を使用して API ゲートウェイ V2 経由の WebSocket 接続を確立します。
ステップ 7
ユーザーとチャットの情報は、以前の質疑応答のコンテキストからのフォローアップの質問を明確にするために、DynamoDB に保存されます。
ステップ 8
ボットフルフィルメントの Lambda 関数は、Amazon Comprehend と、必要に応じて Amazon Translate を使用して、非母国語のリクエストをユーザーがデプロイ時に選択した母国語に翻訳します。次に、この関数は OpenSearch Service に問い合わせて適切な回答を取得します。
ステップ 9
テキスト生成やテキスト埋め込みなどの大規模言語モデル (LLM) 機能を使用する場合、これらのリクエストはまず Amazon Bedrock でホストされているさまざまな基盤モデルを通過します。これにより、検索クエリと埋め込みが生成され、OpenSearch Service の質問バンクに保存されているものと比較されます。
ステップ 9A
前処理ガードレールが有効になっている場合、有害な可能性のあるユーザー入力が QnABot アプリケーションに到達する前にスキャンしてブロックします。これは、悪意のあるクエリや不適切なクエリが処理されるのを防ぐための最初の防衛線の役割を果たします。
ステップ 9B
LLM 用の Amazon Bedrock ガードレールまたは Amazon Bedrock のナレッジベースを使用する場合、LLM 推論中にコンテキストガードと安全制御を適用して、適切な回答が生成されるようにします。
ステップ 9C
後処理ガードレールが有効になっている場合、フルフィルメント Lambda を介してクライアントに送信される前に、最終応答で潜在的に有害なコンテンツをスキャン、マスク、またはブロックします。これは、個人を特定できる情報 (PII) などの機密情報を適切にマスクし、不適切なコンテンツをブロックするための最後の防衛線となります。
ステップ 10
OpenSearch Service のバンクまたはテキストパッセージから一致が返されない場合、ボットフルフィルメント Lambda 関数は、次のようにリクエストを転送します:
ステップ 10A
Amazon Kendra インデックスがフォールバック用に設定されており、OpenSearch Service の質問バンクから一致するものが返されなかった場合、ボットフルフィルメント Lambda 関数はリクエストを Amazon Kendra に転送します。オプションで、テキスト生成 LLM を使用して、検索クエリを作成したり、返されたドキュメントの抜粋からの応答を合成したりできます。
ステップ 10B
Amazon Bedrock ナレッジベース ID が設定されている場合、ボットフルフィルメント Lambda 関数はリクエストを Amazon Bedrock ナレッジベースに転送します。ボットフルフィルメント Lambda 関数は、RetrieveAndGenerate API または RetrieveAndGenerateStream API を活用して、ユーザークエリに関連する結果を取得し、基盤モデルのプロンプトを拡張して、応答を返します。
ステップ 11
ストリーミングを有効にすると、テキストパッセージまたは外部データソースからの LLM 応答が検索拡張生成 (RAG) によって強化されます。応答は同じ Amazon Lex セッション ID を使用して WebSocket 接続を介してストリーミングされ、最終応答はフルフィルメント Lambda 関数によって処理されます。
ステップ 12
ボットフルフィルメント機能とのユーザーインタラクションはログに記録され、結果のメトリクスデータは Amazon Data Firehose に送信され、後でデータ分析できるように Amazon S3 に転送されます。
ステップ 13
OpenSearch Dashboards を利用すると、使用履歴、ログ記録された発話、結果がない発話、肯定的なユーザーフィードバック、否定的なユーザーフィードバックなど、さまざまな分析を表示できます。また、カスタムレポートを作成する機能も提供されます。
ステップ 14
Amazon CloudWatch を使用すると、管理者はサービスログをモニタリングし、QnABot が作成した CloudWatch ダッシュボードを使用してデプロイの運用状況をモニタリングできます。