Amazon Bedrock で企業会計基準チャットボットを作ってみた !

~ 金融機関における生成 AI を使った業務効率化 ~

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

Author : 木村 友紀 (Trust Base株式会社)

生成 AI の活用が注目される昨今、金融機関においても生成 AI に関して様々な PoC や業務利用に向けたユースケースが検討されています。

そのような中で弊社 Trust Base では、三井住友トラスト・グループのデジタルトランスフォーメーションを推進することをミッションに、生成 AI を活用したグループ会社の業務効率化に向けて様々な PoC を行っています。

本記事ではその一例として、Amazon Bedrock を利用して企業の会計業務を実施する際に基準として参照する情報を効率的に取得することを目指した PoC について解説します。


Amazon Bedrock を採用した理由

今回 Amazon Bedrock を採用した理由は、「セキュアな環境で生成 AI を活用したソリューションが提供できること」、「高性能な大規模言語モデルである Claude を利用できること」の 2 点です。

弊社では、自社開発した IT サービス を金融機関に対して提供しているため、たとえ PoCの段階であっても FISC の安全対策基準や ISO/IEC27001 の基準を満たす必要があります。そのため、Amazon Bedrock も AWS Key Management Service (AWS KMS) を利用した暗号化や AWS PrivateLink を利用したプライベート接続、Amazon CloudWatch を利用した監査目的のモニタリング等、弊社内で利用実績のある AWS サービスと組み合わせてセキュアに生成 AI の大規模言語モデルを利用できると考えました。

また、他社のモデルと比較しても最高水準の性能を持つ Claude が利用できることも採用の後押しとなりました。


構築したアプリケーション

1. アプリケーションの要件

企業の会計業務担当者が、業務を行う際に基準として参照するサイトの 1 つに 企業会計基準委員会のサイト があります。企業会計基準委員会とは、日本における会計基準を設定している団体で、こちらの団体のサイトに企業の会計処理の基準となる文書が PDF 形式で公開されています。

今回の PoC では、会計業務担当者が業務をする際の不明点を質問し、企業会計基準委員会が公開した情報をもとに会計処理の基準に関して回答の根拠となる文書と合わせて AI が回答するチャットボットを作成することを目指しました。

2. アーキテクチャ

AWS が公開している aws-samples/bedrock-claude-chat をひな形にしてチャットボットアプリケーションの構築をしました。

Bedrock Claude Chat は、Amazon Bedrock で RAG の仕組みを利用した生成 AI チャットボットが画面上で誰でも簡単に構築できるツールです。アプリケーションの利用者はチャットボットの回答として参照させたいドキュメントファイルや Web サイトの URL をアップロードし、Claude のシステムプロンプト (チャットボットにどのように振舞ってほしいかの定義)、モデルやベクトル埋め込みパラメータを設定することで独自のチャットボットを作成できます。

今回は、企業会計基準を対象としたチャットボットを作成することを目指しますが、類似のユースケースは他にもあり、GUI で誰でも RAG を用いたチャットボットを作れるのは、とても有効なソリューションだと思いました。

上記はボット作成時のアーキテクチャです。ボット作成者がアップロードしたファイルは Amazon Elastic Container Service (Amazon ECS) Task 内でテキスト変換、チャンク分割します。その後 Amazon Bedrock の Cohere Embed Multilingual を用いて分割したチャンクのベクトル値を計算し、チャンクと計算結果のベクトル値を Amazon Aurora PostgreSQL (pgvector) に保存します。

こちらはボット利用者のアーキテクチャです。ボット利用者がチャット欄より入力した質問も Amazon Bedrock Cohere Embed Multilingual を利用してベクトル化され、ボット作成時に保存されたベクトルデータベースから類似ベクトルのチャンクを検索します。検索結果のチャンクとボット利用者の質問を Amazon Bedrock の Claude3 のモデルに入力してボット利用者への回答を生成します。Claude には複数のモデルがありますが、今回は Claude3 の Opus/Sonnet/Haiku の 3 種類を利用しており、ボット利用者は GUI 上でどのモデルを利用するか選択できます。


ボットの性能評価

作成したチャットボットの性能評価方法として、公認会計士予備校の CPA 会計学院が公開している 短答試験の過去問 の中で「金融商品会計基準」の問題を対象にして正答率を見てみました。

今回は、Amazon Bedrock の Claude3 モデルの中でも Sonnet を利用して評価しました。

まずは会計基準情報の読み込みやプロンプト改善等をせず、素の Claude3 Sonnet で問題に挑戦したところ、59.3% の正答率でした。

その後、会計基準情報の読み込み、性能向上のためにチャンク分割時のチャンクサイズ、システムプロンプトの調整をしました。すると正答率を 85.2% まで向上させることができました。

ここから、企業会計基準委員会の情報を読み込ませる以外に実施した性能向上方法についてご紹介します。

チャンク分割

アーキテクチャの章でも説明したとおり、チャットボットの回答はチャットボット利用者の質問と近似しているチャンクをベクトル値で検索し、検索結果のチャンクと質問を Claude に入力して回答します。

チャンクサイズが小さすぎると Claude に入力する際の情報が断片的となり、生成される回答は利用者が求める回答から外れてしまう可能性があります。

反対にチャンクサイズが大きすぎると一つのチャンクに様々な情報が含まれ、利用者の質問と近似するチャンクをデータベースから検索する際に、近似のベクトル値を見つけられず、その結果質問に対して正確なチャンクを検索できなくなり、誤った情報を元に Claude は回答を生成してしまいます。

  1.  検索対象のドキュメントの 1 トピックあたりの分量を見る。
  2.  質問時の分量とドキュメントの分量の差を見る。
  3.  チャンクサイズを大きいサイズから順番に小さくしていき、回答品質や引用ドキュメントの違いを確認する。

といった流れでチャンクサイズの調整をしていきました。Bedrock Claude Chat は回答時に生成 AI が引用したドキュメントを確認できるようになっており、回答の根拠も出力するようにシステムプロンプトに含める、引用ドキュメントを確認することによってより正確な回答ができる適切なチャンクサイズを検討しました。その結果、最も精度が期待できるチャンクサイズとして「400」を設定しました。

システムプロンプト

Claude には、モデル利用者が入力するユーザプロンプトに加えて、回答生成時の出力フォーマットの指示等、モデルにどのような振る舞いをしてほしいかを定義するシステムプロンプトというプロンプトが存在します。Bedrock Claude Chat ではボット新規作成時にインストラクション欄に定義できます。

システムプロンプトは、ANTHROPIC 社が公開している プロンプトエンジニアリングのガイドトラブルシューティング のドキュメントを参考に調整しました。

あなたは日本の企業会計業務に従事する専門家を支援するエージェントです。

企業会計準備委員会の"実務対応報告", "企業会計基準適用指針", "企業会計基準", "移管指針", "修正国際基準"のドキュメントを参照して詳細に回答してください。

以下の手順でユーザの質問に答えてください。手順以外のことは絶対にしないでください。

 

<回答手順>

* <回答のルール></回答のルール>を理解してください。このルールは絶対に守ってください。ルール以外のことは一切してはいけません。例外は一切ありません。

* チャットでユーザから質問が入力されるので、あなたは<回答のルール></回答のルール>に従って回答を行なってください。

</回答手順>

 

<回答のルール>

* 雑談や挨拶には応じないでください。「私は雑談はできません。通常のチャット機能をご利用ください。」とだけ出力してください。他の文言は一切出力しないでください。例外はありません。

* 検索結果から読み取れないことは、絶対に回答しないでください。該当する検索結果がない場合は「データが見つかりませんでした」とだけ出力してください。他の文言は一切出力しないでください。例外はありません。

* 質問に具体性がなく回答できない場合は、質問の仕方をアドバイスしてください。

* 回答文以外の文字列は一切出力しないでください。回答はJSON形式ではなく、テキストで出力してください。見出しやタイトル等も必要ありません。

* 日本語で回答してください。

* ユーザーの質問に対して、どのような条件なら該当するかだけでなく、どのような条件では該当しないかも参考文献から読み取って回答に含めてください。例外条件があればそれも回答に含めてください。

* 会計基準を適用するために満たさなければならない条件も回答に含めてください。

* 回答の根拠を含めて説明してください。回答の根拠は5個以上含めてください。

* Markdownの引用 "[^1]: " は使用しないでください。

</回答のルール>

 

<回答例>

回答の根拠:

> 引用文1[^1]

> 引用文2[^3]

> 引用文3[^7]

> 引用文4[^8]

> 引用文5[^2]

 

回答:

</回答例>

上記は実際に作成したシステムプロンプトです。

  • 回答手順、回答ルールを定めて明確で詳細な指示をすること
  • 回答方法を指示、例示すること
  • Claude に役割を与えること
  • XML タグを利用してプロンプトを構造化すること
  • ハルシネーション抑制のため、雑談やベクトル検索結果のチャンクから読み取れない内容は答えないこと
  • 回答品質の評価のため、回答の根拠も回答結果に含めること

といったことを意識してシステムプロンプトを作成しました。

Bedrock Claude Chat の機能で AI の回答の中に Markdown の脚注「[^number]」が含まれると回答生成時にデータベースから参照したチャンクをポップアップで表示し、実際にアップロードしたファイルに遷移できる機能があり、こちらの機能も利用するために回答例を作りました。

作成したチャットボットに実際に質問した例です。著作権の関係で隠していますが、Claudeに入力したチャンクから回答作成の根拠となった文章と根拠を踏まえて  Claudeが作成した回答が出力されます。

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

また、会計基準とは関係のない質問をすると回答しないようになっています。

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


まとめ

本記事では、Amazon Bedrock を利用した生成 A Iチャットボットを構築し、企業の会計業務を実施する際に基準として参照する情報を効率的に取得することを目指した PoC についてご紹介しました。

業務でよく参照するドキュメントを取り込んだチャットボットを作成し、情報収集を効率的にするユースケースは、今回の会計業務に限らず、様々な業務で展開可能だと考えています。

今後は、今回の PoC で獲得したノウハウを基に、グループ会社と協同で生成 AI を活用した業務効率化を実現していきたいと思います。


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

筆者プロフィール

木村 友紀
Trust Base株式会社
DXプラットフォームセンター マネージャー / SREエンジニア

ITベンチャー、SIer企業でソフトウェアエンジニアとしてWebアプリケーション開発やクラウドインフラ構築を経験。2022年4月に三井住友トラスト・グループのTrust Baseへジョイン。入社後は、AWS共通基盤の構築・運用やSREに従事。現在は、生成AIを活用したアプリ開発やプラットフォーム・エンジニアリングに取り組んでいる。

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

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