フォーム読み込み中
この記事はソフトバンクアドベントカレンダー2024の4日目の記事です。
普段は、TASUKI AnnotationというRAGデータ作成ツール(データ構造化、回答精度評価のツール)の技術開発をしています。
様々な企業において、生成AIの導入が近年増加しています。企業内に膨大に存在するドキュメントの自然言語による検索や、カスタマーサポートの支援ツールとしての利用など、AIチャットボットの導入は目覚ましいものがあります。
社内にある情報を用いた大規模言語モデル(LLM)の方法としては、以下のものがあります。
①ファインチューニングによる最適化
②RAGの利用
このうち、近年特に企業で多く利用されている方法は、「②RAGの利用」になるかと思います。
そのような状況を踏まえ、特に企業への導入が進んでいるAzure OpenAIの大規模言語モデルであるGPTシリーズを使って、RAGの回答精度を検証しました。
検証は次の手順で実施しました。
Figure 1 RAGの仕組み
RAGとして取り込む文書は、1年前まではテキストベースの文書や表などが主なデータでした。しかし、最近では様々な形式の文書が取り扱われるようになっています。
文書のフォーマットとしては、PDF等のドキュメントが多いです。しかし、PDFは人にとっては理解しやすい形式ですが、機械(コンピュータ)にとっては理解しやすい形式とは言えず、LLMの回答精度を上げるためにはひと手間かける必要があります。
ソフトバンクが提供するTASUKIでは、社内文書の取り込み時にコンピュータが理解しやすいよう、MarkDown形式やmermaid形式などの構造化手法を使って変換を行った構造化データを取り込んでいます。
Figure 2a Ragのデータ構造化事例 1
Figure 2b Ragのデータ構造化事例 2
Figure 2c Ragのデータ構造化事例 3
1番目の例では、#記号を使って段落を階層化しています。また、表に関しては「|」の記号を使って列を分けて表現することで、LLMが理解できるようにしています。
2番目の例では、グラフに関してはセグメント、年度、増収率を列とした表の形をとることで、LLMが理解できるようにしています。
3番目の例では、組織図の部分において、各部門の部分をsubgraphとして階層化させてまとめることで、LLMが理解しやすいように表現しています。
これらは検証に使ったRAGデータの一部ですが、実際の場面で想定される13種類のデータを使って検証を行っています。
検証にあたっては、実際の運用場面を想定した質問項目100個を用意して検証を行っています。
Table 1 検証で用いた質問と模範解答の例
質問 | 模範解答 |
---|---|
ソフトバンクの2022年度実績(連結)について、全体の売上高に対してコンシューマ事業と法人事業は何%を占めていますか? | 61% |
ソフトバンクの地方創生インターンでは、誰のためのインターンシップですか? | 次の時代を創る"変革リーダー"を目指す学生のためのインターンシップ |
ソフトバンクアカデミアで開催しているプログラムには何がありますか? | プレゼンテーションプログラム、マネジメントゲーム、特別講演、カンファレンス、勉強会、プロジェクト |
ソフトバンクの環境マネジメント体制に関して、環境委員会下の各部門を全て教えて。 | 各事業部門, 購買部門, オフィス管理部門, CS部門, 情報システム部門, ネットワークセンター、交換局、基地局管理部門, データセンタ |
上記表に記載した質問と回答は今回検証を行った100問のうちの、その一部となります。
前述の構造化を行って取り込んだ13種類のRAGデータと100問の質問および模範解答を用い、Azure AI Studioの機能であるPromptFlowを使ってバッチ処理による検証を行っています。
Azure AI StudioのPromptFlowは、大規模言語モデル(LLM)によって動作するアプリケーション開発を効率化するためのツールで、ブロック化された機能をフローチャートのようにUI上で連結することでアプリケーションを作り上げることができます。比較的容易にシステムを構築できるため、このツールを使って検証用のシステムを構築しています。
詳しくは、Azure AI Studio でのPromptFlowをご確認ください。
Figure 3 Azure AI StudioのPromptFlow上に構築した自動回答評価システムのフロー図
上図はAzure AI StudioのPromptFlowが生成したフロー図です。この処理がブロック単位で何を行っているか、もう少しわかりやすいように説明したものが下の図と表になります。
処理 | 概要 |
---|---|
①入力 | 入力データは2つ ・質問 ・人によって作成した質問に対する回答 |
②RAGデータ抽出 | 質問を元に該当する情報(社内文書)のチャンク部分をデータストレージから抽出 |
③回答生成 | 抽出した情報と質問をプロンプトとしてLLMに問合せし、回答を生成する |
④自動回答評価 | 以下のプロンプトでLLMに対して5段階での評価回答を取得する ・5段階それぞれのサンプルとなる事例(one shot learning) ・基準となる模範解答 ・回答生成の処理で作成したLLMによる回答 LLMから取得した5段階評価結果を元にして「正解」(5段階の5)、「不正解」(5段階の1-4)を判断 |
⑤出力 | 以下3つのデータを出力 ・LLMによる回答 ・5段階評価結果 ・正解、不正解の判定 |
Figure4 & Table 2 自動回答評価システムの処理フローについて
入力データとしては、質問とそれに対応した模範解答をcsv形式で用意し、PromptFlowに取り込んでいます。
そのcsvデータの中から質問を取り込み、それに対して、構造化したRAGデータを3,000文字程度にチャンク化したデータが入っているデータストレージから、質問に関連する部分のみを抽出します(②RAGデータ抽出)。抽出したデータを質問文と一緒にプロンプトとしてLLMに投げて回答を得ています(③回答生成)。そして、このLLMからの回答と入力された模範解答とを比較し、正誤判定を行います。しかし、回答は短い単語に限らないため、この正誤判定をLLMに任せて行います(④自動回答評価)。
GPT-3.5とGPT-4、GPT-4oでの比較検証を行った結果は以下の通りです。
Table 3 GPTシリーズでのRAG検証結果
GPT-3.5 | GPT-4(vision-preview) | GPT-4o(0805) | |
---|---|---|---|
テキスト | 96% | 96% | 100% |
表 | 64% | 64% | 96% |
図 | 60% | 56% | 68% |
画像埋め込みの図 | 68% | 68% | 88% |
全体 | 72% | 71% | 88% |
この表をご覧いただくと分かるように、最新のGPT-4o(0805)を利用すると、オリジナル文書がテキスト形式や表形式の場合、精度の高い回答を得ることができました。一方、オリジナル文書が図の場合には、まだ回答精度が期待できない状況です。
参考までに、図の文書でうまく回答が得られなかった例を一つ挙げます。
Figure 5 正しい回答が得られなかった文書
Table 4 正しい回答が得られなかった質問と模範回答
質問 | 模範解答 | LLMからの回答 |
---|---|---|
ソフトバンクの経営理念とビジョンより下層には何が位置づけられていますか? | マテリアリティ(重要課題)、成長戦略(Beyond Carrier) | ソフトバンクの経営理念「情報革命で人々を幸せに」の下には、ビジョン「世界に最も必要とされる社会」が位置づけられています (Source: SoftBank Sustainability Report 2023_00001.md)。その下層には、マテリアリティ(重要課題)が位置づけられています (Source: SoftBank Sustainability Report 2023_00001.md)。 |
デフォルトテキスト高さ中央揃え デフォルトテキスト高さ中央揃え |
| テキスト高さ上揃え(非推奨、基本デフォルトを利用) HTML Source Editで対象の td 要素に style="vertical-align: top;" を付与 |
オリジナル文書が図で表現されている場合、それをRAGに取り込む際には文章化しています。そのため、人が見れば図から得られる情報によってマテリアリティと成長戦略が回答として浮かびますが、これを構造化文書にしてRAGとして取り込んだ場合、マテリアリティに関する細かい説明が途中に入っているために、マテリアリティの下にある成長戦略がLLMの回答として得られなかったものと思われます。
改善策としては、RAGとして取り込む際の構造化の方法を工夫する必要があるかと思います。
「Azure AIのPromptFlowを使った検証環境」で説明させて頂きましたシステム(Figure4 & Table 2 自動回答評価システムの処理フローについて)では、最終的にLLMが返す回答が正しいかどうか(模範解答と回答内容が一致しているか?)を、自動的に判定しています。(④自動回答評価)
LLMからの回答結果は、単純な単語ではなく、文章の場合が多く。従って、模範解答とLLMの回答を単純な文字列比較で正誤判定することは難しいです。そのため、LLMを使って判定を行っています。
このLLMによる判定がGPTのモデルによって判定精度がどの程度違ってくるかを検証しました。
検証に使ったデータは、「GPTのモデル毎の回答精度検証の結果」の際に行ったGPT-3.5の回答結果(Table 3 GPTシリーズでのRAG検証結果)を使いました。この時の回答精度は、正解72問、不正解28問でした。
この回答結果と模範解答を基にして、GPTの各モデルで自動回答精度を評価した結果が下の表になります。
Table 5 自動回答評価の精度検証結果
GPT-3.5 | GPT-4 | GPT-4o | |
---|---|---|---|
正解の回答を正解として正しく自動評価した割合(TruePlus) | 88% | 94% | 88% |
不正解の回答を不正解として正しく自動評価した割合(TtrueNegative) | 71% | 75% | 86% |
全体として自動評価精度 | 83% | 89% | 87% |
結果としては、GPT-3.5で行った時よりも、GPT-4およびGPT-4oで行った場合のほうが若干高い精度で正誤判定できることがわかりました。
以下に、GPT-4oで正解を不正解と判断した事例と、不正解を正解と判断した事例を一つずつ取り上げてみます。
Table 6 真の正解とLLMが異なる評価をした回答の例
模範解答 | LLMの回答 | |
---|---|---|
正解の回答を不正解と評価した事例 | 31 | 2回目に量ったジャガイモの四分位範囲は、第一四分位数から第三四分位数までの範囲です。具体的な値は、第一四分位数が40gであり、第三四分位数が71gです。 |
不正解の回答を正解と評価した事例 | まず、徹底した「脆弱性診断(初回検査)」を実施します。次に、検出された脆弱性に対して「脆弱性対策・相談」を実施します。最後に、「脆弱性対策(再検査)」を実施します。再検査の結果、改善されていない場合は再度「脆弱性対策・相談」を実施します。 | ソフトバンクのセキュリティ診断において、ソフトバンクのセキュリティエンジニアチームは徹底した脆弱性診断を実施し、検出された脆弱性に対して改善を指示しています。 |
正解の回答を不正解と評価した例ですが、元々の質問が「箱ひげ図の例に関して、2回目に計ったジャガイモの四分位範囲を教えてください」というもので、それに対するLLMの回答は「2回目に量ったジャガイモの四分位範囲は、第一四分位数から第三四分位数までの範囲です。具体的な値は、第一四分位数が40gであり、第三四分位数が71gです」となっています。即ちLLMの回答では、開始点41g終了点71gが範囲であることを回答としています。一方で模範解答では、開始点~終了点の幅を31gとして回答としています。質問に対する回答としては、LLMの回答は模範解答と一致しているのですが、回答だけで正誤判定をした場合、判断は不正解となっています。
正しく判定させるためには、自動回答評価ツールの仕組みをもう少し見直す必要があるかと思います。
また、不正解の回答に対して正解と判断した例ですが、模範解答に含まれている要素がLLMの回答には十分に含まれていないため、不正解としていますが、LLMではなぜか正解と判断しています。比較して回答結果が同じと判断した理由はこの結果だけではわかりませんが、今後リリースされるモデルによる精度向上に期待したいところです。
今回は企業での利用が多いAzure OpenAIを使って検証を行いましたが、今後はGoogle Vertex AIやAWS Knowledge Baseなどを使って、どの程度の回答精度が得られるのかを検証してみたいと思います。
それでは、ソフトバンクアドベントカレンダー2024は5日目にバトンを渡します。
AI開発を加速する最高品質の画像アノテーション代行サービス。
自動アノテーション技術で迅速・安価に高品質な凝視データを作成。
TASUKI Annotation RAGデータ作成ツールは、RAGを高度に活用する際に課題となるポイントをテクノロジーで支援するツールです。
RAGに関する知見がなくても、社内データを活用した精度の高いRAG回答生成を簡単に得ることが可能です。
条件に該当するページがございません