生成 AI を用いたヘルプソリューションを作成する

2024-03-04
デベロッパーのためのクラウド活用方法

Author : 川島 拓海

ゲームなみなさんこんにちは!Game Solutions Architect の川島です。

この記事は、2024 年 2 月の builders.flash 記事「品質管理に生成 AI は使えるのか!?テキストチェックを生成 AI にやらせてみた」(以下「前回の記事」) に続く内容となっています。まだの方は是非そちらの記事も併せてご覧ください。

前回の記事では、生成 AI を用いた QA (品質管理) をテーマに、生成 AI に誤字・脱字・衍字を校正してもらうプロンプトを紹介しました。この記事では、生成 AI を用いた QA (品質管理) をツール化・ソリューション化していきます。また、より発展的なソリューションとして、ヘルプの作成も紹介していきます。これにより、社内の様々な業務に携わるメンバーが、API 経由で生成 AI による支援を受けられるようになります。

今回特に主題となる技術は、RAG (Retrieval Augmented Generation) と呼ばれる、ドキュメントに書かれた内容をもとにして生成 AI がユーザーの質問に回答を返すソリューションです。

ゲーム開発者向けのその他の記事はこちら

選択
  • 選択
  • Amazon DynamoDB で作るサーバーレスなゲーム用アチーブメントマイクロサービス
  • AWS の知識ゼロから始める AWS GameKit
  • Amazon GameLift を使って「最短」でマルチプレイヤーゲームを作る
  • Amazon DynamoDB で作るサーバーレスなゲーム用フレンドマイクロサービス
  • Amazon GameSparks でインフラを意識せずにゲームのバックエンドサービスを開発しよう
  • 魔法で作る Amazon DynamoDB の 簡単ゲームインベントリ
  • レベル 1 から作るゲームのクエスト手帳
  • サーバーレスなゲームのギルド検索
  • 一緒に学び考える ! ゲームの AI/ML 活用
  • 3 ステップで始める AI モデル開発 ! 始める前に知っておくべきコト !
  • 実践 ! 機械学習でゲームの休眠ユーザーを予測してみよう
  • Amazon GameLift Anywhere でサクッとマルチプレイゲームを開発しよう
  • ゲーム分析を Amazon Aurora と Amazon Redshift の Zero-ETL 統合ではじめよう
  • Amazon Redshift を活用したゲームの行動ログ分析
  • Amazon QuickSight によるゲーム分析ダッシュボードの構築
  • 品質管理に生成 AI は使えるのか !? テキストチェックを生成 AI にやらせてみた
  • 生成 AI を用いたヘルプソリューションを作成する
  • 世界に 1 つだけの AI アシスタント作成 ~オリジナルにカスタマイズ
  • マルチモーダルな生成 AI 活用の入門編! - 画像認識と画像生成
  • Amazon S3 と Amazon CloudFront を活用したグローバル向けゲームビルドバイナリ共有環境の構築

AWS for Games

AWS for Games はより早い開発、よりスマートな運営、そしてより楽しいゲームへの成長という BuildRunGrow の 3 つの柱に沿ってサポートします。今回は Build の柱、「クラウドゲーム開発」の分野で生成 AI を利用したものになります。


生成 AI を用いたソリューション

前回の記事の内容をソリューション化するための構成として、まずは Amazon Bedrock を用いた基本的な構成を考えてみます。

下の図で、Amazon API Gateway がユーザーが入力したプロンプトを受け取り、AWS Lambda がそのプロンプトを整形します。そのあと、AWS Lambda は Amazon Bedrock がホストする生成 AI モデルにプロンプトを投げます。

今回は、前回の記事と同様に生成 AI のモデルとして Claude 2.1 を利用します。

ここで、AWS Lambda が行うプロンプトの整形の役割を確認します。

エンドユーザーがある文章を校正してほしいとき、AWS Lambda はそれ以外の文章を補完して、前回の記事で見たようなプロンプトに変えます。これにより、エンドユーザーは校正してほしい文章を入力するだけで校正案を得られます。

AWS Lambda が変形したあとの文章例は下のようになります。詳細は 前回の記事 をご覧ください。

あなたはゲーム開発会社のバグチェッカーで優秀な校正チェッカーです。会話文の誤字や脱字や衍字や文章全体の表記揺れをすべて見つけて指摘することが仕事です。
以下はあなたがこのタスクで使用する文章(<dialogue>)です。文章は日本語の会話文です。
<dialogue>
(エンドユーザーの入力した文章はここに入る)
</dialogue>

以下は指摘する際に使用するルールです。しっかり覚えて理解して下さい。
<rule>
(省略)
</rule>

Human:<dialogue>内には誤字、脱字、衍字、表記揺れが含まれています。<rule>内の内容すべてに従い、<dialogue>内の文章の文脈と意味の理解を深め、文字や単語のレベルでも注意深くチェックし可能な限りすべての誤字、脱字、衍字、表記揺れを指摘して下さい。


Assistant:

また、社内や社外の一部ユーザーのみにアクセスを絞る場合は、Amazon API Gateway の前段に認可・認証を挿入することもできます。Amazon Cognito や AWS IAM Identity Center を利用すれば実現できますが、今回は詳しくは扱いません。


RAG を用いた社内ナレッジを活用するソリューション

上の章で紹介した校正作業は、決まったプロンプトさえ入力すれば、生成 AI が自身の持つ知識を利用して回答してくれるものでした。一方で、ゲーム業界であるユースケースを考えると、必ずしも生成 AI が持つ知識だけで回答できる問題ばかりとは限りません。例えば、あるゲームのヘルプを生成 AI で作成する場合、そのゲームの仕様を生成 AI は知らないので、何かしらの方法で伝える必要があります。

そんなときに使えるのが、この章で紹介する RAG (Retrieval Augmented Generation) と呼ばれるソリューションです。

RAG は日本語で「検索拡張生成」と呼ばれる技術で、ドキュメントの検索と生成 AI による回答生成を組み合わせたものです。AWS 上でよく構成される RAG の例を下の図に示しました。ここで登場する Amazon Kendra は、ドキュメントを検索するサービスです。

ユーザーがプロンプトを入力すると、アプリケーションは Amazon Kendra の API を実行して、プロンプトの内容に関連するドキュメントを検索します。そして Amazon Kendra により検索されたドキュメントの結果をもとに、アプリケーションは Amazon Bedrock の API を実行して生成 AI モデルから回答を受け取ります。これにより、生成 AI モデルはドキュメントの内容をもとに回答を返せるようになります。

また、アプリケーションが生成するプロンプト内で、ドキュメントに含まれていない内容は回答に含まないよう生成 AI に指示することで、一般に「ハルシネーション」と呼ばれる生成 AI が虚偽の回答をする現象が起こる可能性を逓減できます。

ゲームのヘルプを作りたい場合は、Amazon Kendra が検索する対象のドキュメントにゲームの仕様書を含めればいいだけです。使い方によっては、内部の開発者向けの確認のツールにも、ユーザー向けのヘルプにも利用できます。

この構成はよく使われるものですが、Amazon Kendra と Amazon Bedrock を独自のアプリケーションで繋げる必要があります。しかし、その RAG を簡単に構成するための 1 つの方法として、AWS の提供するサンプル の利用があります。また、もう 1 つの RAG を簡単に始める方法として、Amazon Bedrock Knowledge Base という Amazon Bedrock の持つ機能を利用する方法もあります。今回は、特に後者の Amazon Bedrock Knowledge Base を主眼に置いてご説明します。

次の章では、Amazon Bedrock Knowledge Base の特徴を、Amazon Kendra を用いた RAG と比較しながら確認していきます。


Amazon Bedrock Knowledge Base とは

Amazon Bedrock Knowledge Base は、Amazon Bedrock が提供する RAG を構成するための機能です。検索の対象として読み込ませるドキュメントさえ用意すれば、簡単に始められます。裏側では、あらかじめドキュメントをベクトル化してデータベースに保存することで、プロンプトに対応するドキュメントをベクトル空間で検索しています。したがって、ドキュメントを同期する際には、テキストをベクトル化するための生成 AI が Amazon Bedrock 内で用いられます。

一方、ユーザーがプロンプトを入力した際には、従来通りテキスト入力に対してテキストを出力する生成 AI が用いられます。2 種類の生成 AI モデルが活躍するためわかりにくいので、こちらの図にその様子をまとめます。

ドキュメントを読み込んでデータベースに格納する流れがこちらの図です。入力する際の生成 AI モデルは、埋め込みモデルと呼ばれます。なお、このベクトルデータベースの選択肢としては、Amazon OpenSearch ServerlessAmazon AuroraPineconeRedis Enterprise Cloud があります。

一方で、ユーザーからの質問に回答する際は、ベクトルデータベースとの照合で検索が行われます。実際に回答を生成する際に使われるのは、テキストを出力するモデルです。

Amazon Bedrock Knowledge Base の対応するリージョンやモデルを、Amazon Bedrock と Amazon Kendra を組み合わせた場合と比較しながら下記に紹介します。ただし、仕様は 2024 年 2 月時点のものです。

対応しているリージョンやモデルなどは、今後追加される可能性もあります。詳しくは  こちらのドキュメント をご覧ください。

  Amazon Bedrock Knowledge Base Amazon Bedrock + Amazon Kendra
読み込めるファイル プレーンテキスト (.txt)
Markdown (.md)
HyperText マークアップ言語 (.html)
Microsoft Word ドキュメント (.doc または .docx)
カンマ区切り値 (.csv)
Microsoft Excel スプレッドシート (.xls または .xlsx)
ポータブルドキュメント形式 (.pdf)
Amazon Kendra が対応しているすべてのファイルおよびデータソース
リージョン 北バージニア・オレゴンのみ Amazon Bedrock: 東京含む 6 リージョン
Amazon Kendra: 東京含む 11 リージョン
使える埋め込みモデル ・Titan G1 Embeddings - Text
・Cohere Embed English (日本語対応なし)
・Cohere Embed Multilingual
Amazon Kendra 内部の検索アルゴリズムに依存
プロンプトへの回答に
使えるモデル
Anthropic Claude (Instant v1, v2.0, v2.1) Amazon Bedrock がホストするすべてのモデル
(ただし日本語に対応しているのは Anthropic Claude 系のモデルのみである点に注意)

Amazon Bedrock Knowledge Base の大きな制約の 1 つに、使えるリージョンが限られている点が挙げられます。また、Amazon Kendra は ネイティブコネクタ によりクローリングをはじめとした外部データソースの読み込みができますが、Amazon Bedrock Knowledge Base では一度ファイル化して Amazon S3 に格納しないとデータソースとして扱えません。それ以外にも、Amazon Bedrock Knowledge Base はプロンプトへの回答に使えるモデルも限られていますが、日本語で利用する場合は Amazon Bedrock と Amazon Kendra を組み合わせる場合と差異はありません。

一方で、埋め込みモデルの選択肢を考えると、Amazon Bedrock Knowledge Base は複数のモデルから選択できます。検索の精度がモデルによって変わる状況では、検索に使うモデルやサービスを基準にソリューションを選定してもいいかもしれません。そして Amazon Bedrock Knowledge Base の何よりの魅力は、その構築の簡単さです。ですので、複数のソリューションで精度を確認する際でも、まずは Amazon Bedrock Knowledge Base を利用して精度を確認してみるというのも 1 つの手です。次の章からは、Amazon Bedrock Knowledge Base のマネジメントコンソール上での構築方法を紹介していきます。


Amazon Bedrock Knowledge Base の利用開始方法

注意点

繰り返しになりますが、2024 年 2 月時点で Amazon Bedrock Knowledge Base が利用可能なリージョンは北バージニアとオレゴンのみです。本章の作業は、すべて北バージニアリージョンで行います。もし作業の途中で、作ったリソースが存在しないなどの問題が発生した場合は、リージョンが正しいか確認してください。

本章の流れに沿ってリソースを構築する場合は、AWS のサービス料金がかかる場合のあることにご注意ください。builders.flash のメールメンバーに登録 いただくと毎月抽選で 300 名の方にハンズオンをお試しいただくための無料クーポンを差し上げておりますので、登録いただき、抽選にご応募いただくと良いでしょう。

リソースを削除する場合は、「リソースの削除」の章をご確認ください。

Amazon S3 バケットの準備

Amazon Bedrock Knowledge Base を利用するためには、まずは Amazon S3 でバケットを用意します。バケットのリージョンは Amazon Bedrock Knowledge Base を利用するリージョンと同一であるよう確認してください。

バケットが作成できたら、そのバケットの中に検索対象とするドキュメントをアップロードします。Amazon Bedrock Knowledge Base が取り込み対象としてサポートしているファイルの拡張子は、こちらのドキュメント にまとまっています。

今回は、ゲーム業界で使われることの多い Excel ファイルを使ってみます。Excel ファイルの中身は、今回独自に作ったゲーム内のモンスターの仕様書です。詳しい内容は後段の章で紹介します。

Amazon Bedrock のモデルアクセス設定

Amazon Bedrock を利用を開始するには、利用するモデルのアクセス設定が必要です。

マネジメントコンソールで Amazon Bedrock のページに遷移し、左側のペインで「モデルアクセス」を選択します。それから、右上の「モデルアクセスを管理」をクリックしてください。ここで、利用したいモデルにアクセスできるようにします。

Amazon Bedrock Knowledge Base を利用する場合は、テキストのベクトル化とプロンプト生成のそれぞれで 1 つずつ、少なくとも 2 つのモデルのアクセスが必要です。本ブログでは、テキストをベクトル化する埋め込みモデルとして「Amazon Titan Embeddings G1 - Text」を、プロンプトに回答するモデルとして「Anthropic Claude」を利用します。

画像をクリックすると拡大します

Amazon Bedrock Knowledge Base の設定

ここからは、いよいよ Amazon Bedrock Knowledge Base の設定です。

マネジメントコンソールの Amazon Bedrock のページにおいて、左側のペインから「ナレッジベース」をクリックし、「ナレッジベースを作成」をクリックしてください。

画像をクリックすると拡大します

ここから、ナレッジベースの設定を決めていきます。

まずはナレッジベースの詳細を決定します。ナレッジベース名はご自身の分かりやすいものにし、必要に応じてナレッジベースの説明も入力してください。

その下の IAM 許可では、特に設定にこだわりがなければ「新しいサービスロールを作成して使用」のままにしておきます。この場合、自動で IAM ロールが作成されます。必要に応じて分かりやすいロール名を設定してください。もし、自身の作った IAM ロールを利用したい場合は、「既存のサービスロールを使用」から対象のロールを選択してください。

画像をクリックすると拡大します

続いて、データソースの設定です。

データソース名を決めたあと、データを保存した Amazon S3 バケットの S3 URI を入力します。直接 URI を文字列で入力してもいいですが、右側の「S3 を参照」のボタンを押すと、バケットの一覧を表示して選択できます。

ここまで入力したら、また右下の「次へ」をクリックします。

画像をクリックすると拡大します

続いて、埋め込みモデルとベクトルストアの設定です。埋め込みモデルは、自身の好きなものを選んでください。

画像をクリックすると拡大します

ベクトルデータベースは、そのまま「新しいベクトルストアをクイック作成」を選択すれば、Amazon OpenSearch Serverless でベクトルストアが作成されます。このベクトルストアは別途料金がかかり、削除の際は Amazon Bedrock Knowledge Base のリソースの削除とは別に削除する必要がある点に注意してください。

なお、既にベクトルストアを用意している場合は「作成したベクトルストアを選択」から既存のベクトルストアを選びます。設定したら「次へ」をクリックします。

画像をクリックすると拡大します

最後のページで設定が正しいことを確認したら、右下の「ナレッジベースを作成」をクリックしてください。すると、ベクトルストアのセットアップが開始されます。この設定には数分ほどかかります。

モデルの準備ができたら、作成した Amazon Bedrock Knowledge Base の詳細画面に自動で遷移します。

この画面で、右側にある「モデルを選択」をクリックして、プロンプトの回答に利用するモデルを選択します。今回は、Claude Anthropic v2.1 を利用します。

そのあと、「データソースを同期」のボタンをクリックします。このステップで初めて、Amazon S3 バケット内にあるデータが Amazon Bedrock Knowledge Base から参照されるようになります。データソースの同期が完了するまでには時間がかかります。

画像をクリックすると拡大します


Amazon Bedrock Knowledge Base を使ってみる

用意するデータ

今回 Amazon Bedrock Knowledge Base に取り込むデータとして、架空のモンスターの仕様書を用いました。この画像は、モンスターの仕様書の例です。

このような仕様書が Excel 形式で、複数シートおよび複数ファイルにわたり格納されています。

画像をクリックすると拡大します

実際に質問してみる

マネジメントコンソール上で質問してどのような回答が返ってくるか試すことができます。特に上のシートの内容について質問した場合の回答を、下の表にいくつかまとめてみました。記載されている内容が適切にまとめられていることが分かります.。

また、Excel シートはすべて日本語で書かれていますが、英語での質問にも回答してくれます。これは、生成 AI モデルが複数言語に対応しているためです。

質問 回答 実際の記載

スケルトンはどのように戦うモンスターですか?
ガイコツは近距離主体のモンスターで、手に持った槍を使ってプレイヤーを攻撃します。プレイヤーを見つけるとまっすぐに槍を持って突き進んできます。 ガイコツは近距離主体のモンスターです。
手に持った槍を使ってプレイヤーを攻撃します。
(中略)
プレイヤーを見つけるとまっすぐに槍を持って突き進んできます。
スケルトンに攻撃されたときにはどのような効果が発生しますか。 ガイコツの槍で攻撃された時、プレイヤーの防御力が10%下がる効果があります。 槍は闇の魔力をまとっており、槍で攻撃されたプレイヤーは防御力が 10% 下がります。
What is the weak point of skeletons? The skeleton monster's weak point is wind. Attacking it with wind attacks will do extra damage. The skeleton can be broken apart with enough damage. When broken apart, it cannot attack but will revive after some time. It is important to defeat it while broken apart. 弱点

(中略)
一定以上のダメージを与えれば、バラバラになります。
(中略)
バラバラになったガイコツは攻撃ができなくなりますが、一定時間経つとまた復活します。バラバラになっている間に攻撃して倒すことが重要です。

リソースの削除

最後に、Amazon Bedrock Knowledge Base の構築のために作成したリソースを削除する流れを説明します。やるべきことは、大きく 3 つです。

  • Amazon Bedrock Knowledge Base の削除
  • Amazon S3 バケットの削除
  • ベクトルデータベースの削除

この記事では、Amazon Bedrock Knowledge Base の削除方法とベクトルデータベースの削除方法のみをご紹介します。Amazon S3 バケットの削除が必要な場合は、そちらも忘れずに削除してください。

Amazon Bedrock Knowledge Base の削除

マネジメントコンソールの Amazon Bedrock の画面で、左側のペイン「ナレッジベース」をクリックし、Knowledge Base の一覧を表示します。そのあと、削除したい Knowledge Base の左側のラジオボタンをクリックしてから、「削除」ボタンをクリックします。

画像をクリックすると拡大します

するとポップアップが表示されます。「delete」と入力してから「削除」ボタンをクリックすれば、該当の Amazon Bedrock Knowledge Base リソースが削除されます。

画像をクリックすると拡大します

ベクトルデータベースの削除

最後に、ベクトルデータベースを削除します。今回は Amazon OpenSearch Serverless で作成したので、マネジメントコンソールの Amazon OpenSearch Service のページに遷移します。

左側のペインで「サーバーレス」の下にある「ダッシュボード」をクリックすると、今ある Amazon OpenSearch Serverless のリソース一覧が表示されます。ここで、削除したいリソースを選択したうえで、「削除」をクリックしてください。

そのあとに表示されるポップアップ内で、「確認」と入力したあと「削除」ボタンをクリックすればリソースの削除が開始されます。

画像をクリックすると拡大します


最後に

今回は生成 AI を利用したヘルプを構成するためのソリューションを取り上げました。また、後半では、Amazon Bedrock Knowledge Base を利用して、ゲームの仕様書からどのような回答が得られるのかを簡単に試しました。

RAG は、社内ナレッジの集約として社内外の人が検索する際に役立つとして今非常に注目されている技術です。Amazon Bedrock Knowledge Base なら、RAG の利用を簡単に始められます。皆様も、ご興味があればぜひお手元の環境で試してみてください。本記事が、皆様のナレッジ整理の一助になれば幸いです。

ゲーム開発者向けのその他の記事はこちら

選択
  • 選択
  • Amazon DynamoDB で作るサーバーレスなゲーム用アチーブメントマイクロサービス
  • AWS の知識ゼロから始める AWS GameKit
  • Amazon GameLift を使って「最短」でマルチプレイヤーゲームを作る
  • Amazon DynamoDB で作るサーバーレスなゲーム用フレンドマイクロサービス
  • Amazon GameSparks でインフラを意識せずにゲームのバックエンドサービスを開発しよう
  • 魔法で作る Amazon DynamoDB の 簡単ゲームインベントリ
  • レベル 1 から作るゲームのクエスト手帳
  • サーバーレスなゲームのギルド検索
  • 一緒に学び考える ! ゲームの AI/ML 活用
  • 3 ステップで始める AI モデル開発 ! 始める前に知っておくべきコト !
  • 実践 ! 機械学習でゲームの休眠ユーザーを予測してみよう
  • Amazon GameLift Anywhere でサクッとマルチプレイゲームを開発しよう
  • ゲーム分析を Amazon Aurora と Amazon Redshift の Zero-ETL 統合ではじめよう
  • Amazon Redshift を活用したゲームの行動ログ分析
  • Amazon QuickSight によるゲーム分析ダッシュボードの構築
  • 品質管理に生成 AI は使えるのか !? テキストチェックを生成 AI にやらせてみた
  • 生成 AI を用いたヘルプソリューションを作成する
  • 世界に 1 つだけの AI アシスタント作成 ~オリジナルにカスタマイズ
  • マルチモーダルな生成 AI 活用の入門編! - 画像認識と画像生成
  • Amazon S3 と Amazon CloudFront を活用したグローバル向けゲームビルドバイナリ共有環境の構築

builders.flash メールメンバーへ登録することで
AWS のベストプラクティスを毎月無料でお試しいただけます

筆者プロフィール

川島 拓海
アマゾン ウェブサービスジャパン合同会社 ソリューションアーキテクト

2022 年 4 月に入社したソリューションアーキテクトです。食べることが大好きです。あと、ちょっとだけお笑いが好きです。

AWS を無料でお試しいただけます

AWS 無料利用枠の詳細はこちら ≫
5 ステップでアカウント作成できます
無料サインアップ ≫
ご不明な点がおありですか?
日本担当チームへ相談する