COLUMN

AWSを使ってノーコードでナレッジベースのAIチャットボットを作ってみた

生成AIを活用したAIチャットボットやコンタクトセンターへのご相談などNTT東日本のクラウドエンジニアがお応えします。お気軽にお問い合わせください。

こんにちは、荒井です。

突然ですがみなさん、業務の中でドキュメントを開いて調べものをすることって結構多いですよね。その業務って地味に大変ではないですか?

そこで今回は、Amazon Bedrockのナレッジベース機能やAmazon Lexの組み込みインテントであるQnAIntentを使ってノーコードでナレッジベースのチャットボットを作り、この地味に時間がかかる作業をAIに任せられるようにしてみました。

きっかけ

ドキュメントを読んで調べるのが面倒!

みなさんも経験があると思いますが、例えば問い合わせがあった際にドキュメントを開いて該当箇所を調べて回答を作成する・・・といったことは面倒ですよね。

ちなみに、ある調査ではこの「ドキュメントを調べている時間」というのは1週間あたり7時間らしく、人によりますが仕事全体10~20%程度を占めているといっても過言ではないと思われます。

週5日の勤務形態の場合、そのうち1日はドキュメントを調べている時間ということに・・・。この地味に大変な業務が少しでも削れたら、本当にやりたい生産的な業務に集中できますよね!

ということで、今回はAWSのサービスを使ってナレッジベースのチャットボットを作成し、この課題を解決していきたいと思います!

生成AIを活用したAIチャットボットやコンタクトセンターへのご相談などNTT東日本のクラウドエンジニアがお応えします。お気軽にお問い合わせください。

イメージ

最終的なイメージはざっくりこんな感じの図です。

知りたいことをチャットボットに投げると、AIがドキュメントを参照して回答をチャット上に生成してくれるイメージです。

生成AIを活用したAIチャットボットやコンタクトセンターへのご相談などNTT東日本のクラウドエンジニアがお応えします。お気軽にお問い合わせください。

今回のナレッジベースチャットボット作成時のポイント

できればノーコードで作りたい!

ドキュメントを調べる時間を削減するために多くの時間を費やすというのは本末転倒なので、あまり作りこまずにさくっと作りたいと思います。そのため、AWS側で用意されている仕組みを駆使しながらノーコードで作っていきたいと思います。

できればチャットボットとして置けるようにしたい!

わざわざAWSのマネジメントコンソールにログインしないと使えないのは面倒なので、チャットボットとしてどこかに置けるようにし、ログイン不要でさっと調べられるようにしたいと思います。

あまり作りこみすぎない!

今回はあくまで内部用(ほぼ個人用)なので細かいところはこだわらずにいきたいと思います。

生成AIを活用したAIチャットボットやコンタクトセンターへのご相談などNTT東日本のクラウドエンジニアがお応えします。お気軽にお問い合わせください。

Amazon LexのQnAIntentって何?

2024年3月1日から一般提供開始された機能で、簡単に言うとAmazon BedrockとAmazon Lexをいい感じに連携してくれる機能です。

通常、Amazon BedrockとAmazon Lexを連携させるには間にLambdaなどを挟む必要があり、情報の受け渡しのためのコーディングするなど結構面倒な作業が発生します。

Amazon Lexの組み込みインテントであるQnAIntentを利用するとその連携を自動的に組んでくれるため、作業者は本当にやりたいことに集中することができるようになります。

今回はこのQnAIntentを利用してノーコードで進めていきたいと思います。

ざっくりのイメージ図は以下です。

生成AIを活用したAIチャットボットやコンタクトセンターへのご相談などNTT東日本のクラウドエンジニアがお応えします。お気軽にお問い合わせください。

構成

使用するAWSサービス

ノーコードでナレッジベースのチャットボットを作るうえで使用するAWSサービスは以下です。

  • Amazon Bedrock
  • Amazon Lex
  • Amazon Connect

この3つだけです!それではそれぞれどういった仕組みで構築するかを考えていきましょう

Amazon Bedrock

言わずと知れた生成AIです。今回は、このBedrockの中でも「ナレッジベース」という機能を使っていきます。

ナレッジベースというのは、質問に対して一般的な回答をするのではなく、任意のドキュメントを基に生成AIが回答してくれるようになる機能です。

例えば、「このサービスにおける社内の問い合わせ先は誰ですか?」といったような一般的ではないような質問に対しても、事前に学習したドキュメントを基に回答を作成することが可能です。また、根拠となるドキュメントおよびページ番号なども提示することができるので、通常の生成AIと比べて信頼性の高い情報を得ることが可能になります。

なお、こうした生成AIとドキュメント検索を組み合わせたフレームワークをRAG(Retrieval Augmented Generation)といいます。

RAGに関しては以下のコラムで記載していますので、よろしければご参考ください。

RAGとは?仕組みと導入メリット、使用の注意点をわかりやすく解説

Amazon Lex

会話型インターフェイスを構築するためのサービスであり、簡単に言うとAlexaです。「Alexa、電気を消して」といったようなことを言うとAlexaが電気を消してくれると思いますが、その中身で動いているもの、というイメージでしょうか。今回はチャットボットの中身として使用します。

上記に記載している通り、Amazon BedrockとAmazon Lexを連携する際には通常AWS Lambdaを挟むことで情報の受け渡しをする必要があります。しかし、今回は上記に記載した通り「ノーコードで作る!」というのがポイントなのでLambdaのコードを書きたくありません。そこで、最近リリースされた組み込みインテントであるQnAIntentを利用したいと思います。

Amazon Connect

クラウド上でコールセンターを構築するサービスです。今回は、この機能の中でもコミュニケーションウィジェットの部分をチャットボットの外身として使用します。

なお、今回はAmazon Connectで電話を行うことは想定しないため電話番号の取得は行いません。

構成のイメージとしては以下です。

生成AIを活用したAIチャットボットやコンタクトセンターへのご相談などNTT東日本のクラウドエンジニアがお応えします。お気軽にお問い合わせください。

構築

Amazon Bedrockを設定する

今回の主な機能となるナレッジベースのBedrockを作成していきます。

AWSコンソールにおけるBedrockのページから「ナレッジベース」を選択し、「ナレッジベースを作成」を選択してスタートします。

ナレッジベース名は適当に記入し、IAMについては「新しいサービスロールを作成して使用」を選択します。データソースは今回はS3にしています。

ナレッジベースの元となるドキュメントを格納したS3の情報を入れます。今回はあらかじめ作成しておいたS3バケットを選んでいます。

なお、今回はこのS3バケットにNTT東日本が提供しているサービスである

クラウド導入・運用サービスの利用規約を入れてみました。

※S3バケットは作成中のBedrockと同じリージョンに作成します。

埋め込みモデルを選択します。

※ちなみに、選択する組み込みモデルはBedrockの「モデルアクセス」で「アクセスが付与されました」の状態でないと使用できません。この状態ではない場合は後の工程でエラーが出ますので、必ずリクエストを行ったうえでアクセス付与状態にしてください。

進むとナレッジベースが出来上がるので、「データソース」から忘れずに「同期」を行います。

※これを行わないとS3に格納しているドキュメントが同期されません。

同期が終わるとナレッジベースのBedrockが使用可能になります。

右にある「ナレッジベースをテスト」から質問と回答をテストすることが可能です。

今回はクラウド導入・運用サービスの利用規約をドキュメントとして読み込ませています。試しに、Azure OpenAIはクラウド導入・運用サービスを利用して構築可能かを聞いたところ正しい回答がありました。

※テストを行う際には使用する生成AIのモデル(Claude3など)を選択しますが、これも上記に記載した「モデルアクセス」から「アクセスが付与されました」の状態でないと利用できないので注意が必要です。

これでナレッジベースは完成しました!

ただ、これだと毎回AWSコンソールへログインしないと利用できず不便なので、これをチャットボットにして誰でも簡単に使えるようにしていきたいと思います。

Amazon Lexを設定する

Amazon Lexを設定していきます。まずはAmazon Lexのページから「ボットを作成」を選択します。

「空のボットを作成します」から進めます。

ボット名も記載しつつ、基本的にデフォルト設定で進めます。

言語については英語(US)を選択します。BedrockとLexを自動的に連携してくれるQnAIntentの機能は英語(US)のみ対応しているので、ここでは必ず英語(US)を選択します。

ボットが作成できたら、「インテント」から「組み込みインテントを使用」を選択します。

組み込みインテントで「QnAIntent」を選択します。

適当にインテント名も決めて「追加」を選択します。

※言語が英語(US)になっていないとQnAIntentは表示されません。

QnAIntentを使って連携するBedrockについて記載していきます。

使用するモデルは適当に好きなのを選びます。

knowledge storeについてはAmazon Bedrockを選択し、Bedrock Idを記載します。

※ちなみに、作成したナレッジベースのBedrock Idはここに記載されています。

その他、Lexに適当な設定を行っていき、右上の「Build」を忘れずに選択します。

※保存するだけではなく、必ず「Build」する必要があります。

Lexの設定についてはこちらの記事にも記載がありますのでぜひ参考にしてください。

Amazon Connect×Amazon Lexで自動応答やってみた!

「Build」の横にある「Test」から構築したチャットをテストすることができます。正しく機能しているようです。

これでチャットボットの元となるものができました!

あとはこれをチャットボットとして任意の場所へ置けるようにしていきたいと思います。

Amazon Connectを設定する

Amazon Connectのページから「インスタンスを追加する」を選択します。

アクセスURLは適当に記載して進んでいきます。

インスタンスを作成できたら、Amazon Connectと作成したAmazon Lexを紐づける必要があります。「問い合わせフロー」から「Amazon Lex」の項目に進み、作成したボットを選択することで紐づけを行います。

Amazon Connectのフロー作成を作成していきます。以下の画像のようなものでよいかと思います。

※「コンタクト属性の設定」では言語の設定を行います。

ここで設定したAmazon Lexの言語と合わせる必要があるため、en-USを設定します。

※「顧客の入力を取得する」では「Amazon Lex」からLexボットを設定します。

上記でAmazon ConnectとAmazon Lexの紐づけを行っていれば、ここにLexボットを選択することができるようになります。

設定できたら、忘れずに「保存」して「公開」します。

次に、「コミュニケーションウィジェット」から「ウィジェットの追加」を選択します。

「チャットのコンタクトフロー」で先ほど作成したコンタクトフローを選択します。

※通話は使用しないのでウェブ通話のチェックは外しています。

チャットボットを置きたいホームページのドメインを選択することができます。この辺りのセキュリティに関する事項は適切に設定しながら進んでいきます。

作成し終えると「ウィジェットのスクリプト」が表示されるので、そのスクリプトをコピーしてチャットボットを置きたいホームページのHTMLファイルなどに貼り付けます。

これで完成です!

さっそく実際に動作するか見てみましょう!

ホームページにチャットボットを置いてみる

HTMLファイルに上記のウィジェットスクリプトを入れたホームページを見ると、右下にチャット開始のボタンが出現しました!

※今回はテストとしてS3の静的ウェブサイトホスティングを使ってホームページを作っています。

試しに質問してみたところ、Amazon Lexでテストした際と同じような回答を得ることができました!

これでいったん完成です!

他の質問もいくつかしてみましたが、問題なく回答がありました。

これでドキュメントを開いて、調べて・・・という地味に大変な作業が少し楽になりそうです。

生成AIを活用したAIチャットボットやコンタクトセンターへのご相談などNTT東日本のクラウドエンジニアがお応えします。お気軽にお問い合わせください。

感想

Amazon Lexの組み込みインテントであるQnAIntentを使うことでかなり楽にBedrockとLexを組み合わせることができました。Lambdaでコーディングして連携して・・・というのがハードルになっている人にとってもこれは画期的なのではないでしょうか。自分でコーディングするによって発生するエラーや不具合に悩まされることもないのもメリットだと思います。

回答の精度もしっかりしているので、実務にもかなり使えると思います。こういうことをすぐに試してみることができるというのもクラウドやAIの技術が発展している今だからこそですね。また、クラウドだからこそ試しに使ってみる、使えなかったらやめる、といったことを柔軟にできることも魅力ですね。

今回は内部用(ほぼ個人用)として細かい部分はあまり気にせずに構築してみましたが、もう少し時間をかけて作りこめば社内全体に向けたチャットボットとしても、公式ホームページに置くようなお客さま向けのチャットボットとしても十分活用ができそうです。

生成AIを活用したAIチャットボットやコンタクトセンターへのご相談などNTT東日本のクラウドエンジニアがお応えします。お気軽にお問い合わせください。

生成AIによる業務効率化はぜひNTT東日本にご相談ください

生成AIの活用にお困りごとがあればぜひNTT東日本にご相談ください!NTT東日本では、AWSやMicrosoft Azureの有資格者が親身になってお困りごとに対応します。構築や検証、運用、保守など、生成AIとクラウドに関してまとめて対応が可能です。

ご相談に費用は掛かりませんので、ぜひお気軽にご相談ください。

ページ上部へ戻る

相談無料!プロが中立的にアドバイスいたします

クラウド・AWS・Azureでお困りの方はお気軽にご相談ください。