こんにちは、AITCの小川です。普段は、様々な企業様から預かったデータの統計的な分析や、AIモデル構築をする業務に携わっています。 今回は社内データを利用したChatGPTがどれくらいの精度で質問に回答できるのか検証します。
想定読者
- 社内データを利用したChatGPTを導入検討している方
- ChatGPTによるチャットボット/サポートデスクの置き換えを検討している方
- 検索+ChatGPTの回答精度を知りたい方
ChatGPTに社内データの情報を与えるには?
ChatGPT(gpt-3.5)は2021年9月時点までで一般に公開されているデータを使って学習しているため、最新のデータや社内データなどの公開されていないデータが必要な質問には回答できません。 しかし、そのようなデータであってもChatGPTに参考文章として与えることで、最新の事柄や社内のデータに対する質問に回答できます。 参考になりそうな文章をすべてChatGPTに参考文章として与えれば回答できるということになりますが、入力できる文字数には限りがあるため、例えば、100ページくらいあるpdfを全て参考文章として与えることは現状(2023/7月時点)できないです。 では、参考になりそうな箇所を入力可能なぎりぎりの文字数まで参考文書として与えればいいということになりますが、こちらの論文にあるように、ChatGPTは最初と最後にある文章を重視して、中間に必要な文章があっても回答精度が下がることが知られています。 また、金銭的にもChatGPTに入力する文字数が少ないほど安く済みます。 以上を踏まえると、質問の回答に必要な文章を最小限与えて、回答させたほうがよいということになります。
一般的に文書を分割して必要な箇所を検索で抽出した後、質問の回答に必要な文書の一部分を質問の参考文章としてプロンプトに加えて回答させるというアプローチが取られます。 検索には色々な方法がありますが、主に2つの方法があり、1つ目はキーワード検索です。 名前の通り、キーワードを含む文書の一部分を抽出します。 2つ目はベクトル検索です。 文書を分割したものをそれぞれ文章埋め込み(文章をベクトルに変換したもの)を行った後に、質問を文章埋め込みしてベクトルの距離が近い(類似度が高い)ものを抽出します。 Googleの検索でも使用されているように、一般的にベクトル検索のほうが適切な参照文書を抽出する精度が高いと言われています。 本記事ではキーワード検索とベクトル検索の両方使用して参考文章を抽出して回答精度を比較検証します。
検証設定
実際の社内データは公開できないため、今回の検証では国土交通省が提供する車検証アプリの資料を利用します。 この資料を見て、聞かれそうだなと思った質問を想定質問として20件作成しました。 これらの質問をChatGPTに聞いてみて、回答が正しいかを検証します。(質問は後ほど出てきます)
- 対象データ
- 国土交通省が提供する車検証アプリの資料(実際のデータが見たい方は以下のリンクをクリックしてください。pdfが開きます。)
- 使用モデル
- 回答生成:gpt-3.5-turbo
- 文章埋め込み:text-embedding-ada-002
- ベクトル検索を使用した場合の質問から回答までの流れ (以下の簡略図を参考にしてください)
- あらかじめ、対象データのpdfを500文字ごとに分割
- 分割した文章ごとに、文章埋め込みに変換
- 質問を文章埋め込みに変換
- 質問の文章埋め込みと最もcos類似度が近い3つの文章埋め込みを取得
- 3つの文章埋め込みに対応する元の文書を取得
- 上記文章を参考として、ChatGPTに質問の回答生成を依頼
- 回答を出力
- 補足:キーワード検索の場合は文章埋め込みを使用せず、キーワード検索を行い文章を取得します
- 回答成否判定
- 対象データの資料を見て、正しい回答となっているか判定
- 余分な文章がある場合は〇(正解)だが、不足している場合は×(不正解)とする
検証結果
回答結果は以下表のようになりました。
番号 | 質問 | 結果(キーワード検索) | 結果(ベクトル検索) |
---|---|---|---|
1 | アプリはどこで入手できるのか? | 〇 | 〇 |
2 | アプリを利用するために何が必要ですか? | 〇 | 〇 |
3 | アプリの利用可能時間はいつですか? | × | × |
4 | スマホはどんな機種でも使えますか? | 〇 | 〇 |
5 | PCがMACですが、アプリを利用できますか? | × | × |
6 | アプリを起動したいがどうすればいいか | 〇 | 〇 |
7 | アプリ起動時に認証が必要ですという画面が出るのですが、どうすればいいですか? | 〇 | 〇 |
8 | 利用規約の同意するボタンが押せないのですが、何をすればいいでしょうか? | 〇 | 〇 |
9 | 車検証情報を見るにはどうすればいいですか | × | × |
10 | 3枚の車検証をまとめて見たいが、どうすればいい? | × | 〇 |
11 | 車検の情報を見るにはどうすればいいですか | 〇 | 〇 |
12 | 車検証がうまく読み取れないが、どうすればいいですか? | × | 〇 |
13 | 車検証のダウンロードができるか? | 〇 | 〇 |
14 | 車検証をエクセル形式でダウンロードできるか? | 〇 | 〇 |
15 | 車検証のダウンロードができないのはなぜでしょうか? | 〇 | 〇 |
16 | オンラインモードに変更したいが、どうすればいいですか | × | × |
17 | オンラインモードに変更したはずが、変わらないです。なぜでしょうか | 〇 | 〇 |
18 | QRコードを表示したいのですが、どこからできるでしょうか | 〇 | 〇 |
19 | ICカードリーダが接続できているか確認したいが、どうすればいいでしょうか? | 〇 | 〇 |
20 | ICカードリーダは接続できているが、車検証の読取が出来ないのはなぜか | × | × |
20件の質問に対する回答精度はキーワード検索で65%(13/20)、ベクトル検索で75%(15/20)です。 回答精度に求められるレベルは業務によって異なりますが、十分な回答精度が出ていると言えるのではないでしょうか?
ベクトル検索とキーワード検索の比較
ベクトル検索のほうが10%回答精度が高い結果となりました。 これは冒頭でも述べたように、ベクトル検索のほうが検索精度が高いからです。 詳細は省略しますが、ベクトル検索では正解したがキーワード検索では不正解の質問10と12の参考文書を見たところ、ベクトル検索では適切な参考文書を抽出できているのに対して、キーワード検索では適切な参考文書を抽出できていませんでした。 必ずベクトル検索のほうが検索精度が高いかというとそうではありませんが、今回は一般的に言われているようにベクトル検索のほうが検索精度が高い結果となりました。
次に、ベクトル検索で正解/不正解の質問について詳細を見ていきましょう。
正解の回答詳細
正解した回答について、具体的にどのような回答をしたのかピックアップして見ていきます。
質問1「アプリはどこで手に入りますか?」
回答
車検証閲覧アプリは、Microsoft Storeから手に入ります。具体的には、電子車検証特設サイトの閲覧アプリについてのページを開き、「インストール」ボタンをクリックすると、Web版のMicrosoft Storeにアクセスできます。また、アプリ版のMicrosoft Storeを起動して、「入手」を選択することでもインストールできます。PC版の場合は、Windowsが動作するPCと非接触型のICカードリーダが必要です。詳細な手順については、参考情報をご確認ください。
参考文章(抜粋)
する操作を説明します。①【Microsoft Storeへアクセスする】電子車検証特設サイトの閲覧アプリについてのページ(https://www.denshishakensho-portal.mlit.go.jp/user/application/)を開き、閲覧アプリインストール方法にある「インストール」ボタンをクリックし、Web版のMicrosoft Storeへアクセスします。②【アプリ取得画面を開く】「Microsoft Store アプリの取得」を選択します。※Microsoftストアのアカウント登録やログインについては13ページ以降を参照してください。Web版のMicrosoft Storeへアクセスする①②アプリ取得画面を開く103.1 車検証閲覧アプリ(PC版)インストール手順・PC版の車検証閲覧アプリをインストールする【2/3】③【アプリ版のMicrosoft Storeを起動する】画面上部に表示された小画面の「Microsoft Store を開く」を選択します。④【アプリをインストールする】アプリ版Microsoft Storeの小画面が開きます。「入手」を選択する
「手に入る」という単語は参考文章には含まれておらず、「入手」や「インストール」と記載されているのですが、きちんと必要な箇所を参考文章として検索して回答できています。
質問8「利用規約の同意するボタンが押せないのですが、何をすればいいでしょうか?」
回答
利用規約の同意するボタンが押せない場合、以下の手順を試してみてください。 ページを再読み込みする。 ブラウザのキャッシュをクリアする。 プロキシ認証用入力画面(2)に表示されるユーザー名・パスワードを入力し、「サインイン」を選択する。 利用規約の全文を確認し、最後までスクロールした後に同意するボタンを選択する。
参考文章(抜粋)
色の濃い部分にマウスを合わせてマウスの左ボタンをクリックしたまま、マウスを下へ移動する➁ 【利用規約に同意する】利用規約を最後まで表示すると、「同意する」ボタンの色が付きます。「同意する」を選択します。①利用規約を確認する➁利用規約に同意する利用規約表示領域スクロールバー領域72.2 車検証情報閲覧手順(PC)(ア)車検証情報を閲覧する(オンラインモードの場合)【1/3】車検証情報を閲覧する操作を説明します。① 【読取開始】画面左側にある 「読取開始」にマウスを合わせてクリックします。➁ 【セキュリティコード入力】セキュリティコード(車検証に記載されている4桁の数字)を入力後、「次へ」を選択します。①読取開始➁セキュリティコード入力①読取開始③車検証読取④⑤車検証読取の完了車検証情報表示セキュリティコード➁セキュリティコード入力82.2 車検証情報閲覧手順(PC)(ア)車検証情報を閲覧する(オンラインモードの場合)【2/3】③ 【車検証読取】PCに接続されているICカードリーダに車検証のICタグ部を密着させます。ICタグ部から車検証情報の読取が行われます。※車検証が読取れない場合は、I
参考文章に「押せない場合はこうしてください」とは明確に書いていないですが、きちんと意図をくみ取り回答できています。 「ページを再読み込みする。」などは今回の質問に対する回答として不要ですが、一般的な解決策まで回答してくれます。
不正解の回答詳細
不正解した回答について、具体的にどのような回答をしたのかピックアップして見ていきます。
質問3「アプリの利用可能時間はいつですか?」
回答
参考情報からは、アプリの利用可能時間についての情報は得られませんでした。申し訳ありません。
参考文章(抜粋)
1.1 アプリ起動手順(PC)(ア)アプリを起動する手順①【アプリ起動】画面左下の検索結果欄から「車検証閲覧アプリ」を選択します。マークを右クリックして「検索(S)」を選択します。入力欄にマウスを合わせてクリックして「車検証閲覧アプリ」と入力し、②【スプラッシュ(起動時)画面表示】アプリが起動すると、スプラッシュ画面が表示されます。③【後続画面表示】スプラッシュ画面表示後、後続の画面が表示されます。①アプリ起動②スプラッシュ画面表示③後続画面表示51.1 アプリ起動手順(PC)(イ)【参考】アプリ起動時に認証情報入力を求められる場合企業の情報システム経由で利用される場合等において、アプリ起動時に認証付きプロキシサーバ注1より認証を求められる場合があります。対処方法の一例について以下に記載いたしますが、詳しくは企業の情報システムのご担当者、ヘルプデスク・問合せ先等にご確認ください。認証を求められない場合は当該手順は不要となります。①【アプリ起動】P5「 (ア)アプリを起動する手順」を参照しアプリを起動します。②【プロキシ認証用入力画面(1)】ユーザー名・パスワード(ユーザーの利用環境におけ
正解は『24時間365日(メンテナンスによる停止を除く)』ですが、検索が失敗しており回答できませんでした。 なぜ検索に失敗したか原因を見ていくと、おそらく「利用」という単語に引っ張られ上記のような参考文章が検索にヒットしまっています。 また、元の文書中には「利用可能時間」ではなく「サービス時間」と記載されており、該当の記載がある参考文章が上位3件にヒットしませんでした。
こういった場合、回答精度を向上させるにはどうすればいいでしょうか? 今回はおそらく「利用」の部分に引っ張られてしまい、検索結果上位に必要な参考文章がありませんでした。 「利用可能時間」と「サービス時間」はある程度意味が似ており、検索で上位3件に入らずとも、上位のほうには入っているはずだと期待できます。 検索で参考にする文書数を3件から10件に増やしてみましょう。 また、より多くの文章をプロンプトに入力できるようにgpt-3.5-turbo-16kを使用します。 次の節で実際に試してみます。
質問16「オンラインモードに変更したいが、どうすればいいですか」
回答
申し訳ありませんが、参考情報を確認しても、オンラインモードに変更する方法についての情報は見つかりませんでした。質問の背景や文脈を教えていただければ、より具体的な回答を提供できるかもしれません。
参考文章(抜粋)
【車検証読取の完了】オンラインモードの場合と同様に、車検証読取完了画面が表示されたら 「完了」を選択します。⑥ 【車検証情報表示】車検証の情報が表示されます。①読取開始➁読取設定の確認⑤車検証読取の完了③セキュリティコード入力④車検証読取⑤車検証読取の完了⑥車検証情報表示⑥車検証情報表示212.3 設定変更手順(PC)(ア)設定を変更する(オンラインモード⇔オフラインモード)設定を変更(オンラインモード⇔オフラインモード)する操作を説明します。① 【設定画面表示】「設定」を選択します。➁ 【オフラインモード有効/無効】「オフラインモードを有効にする」を選択すると、ボタンの背景が黄緑色に変わりオフラインモードが有効になります。もう1度選択すると、ボタンの背景が灰色に変わりオフラインモードが無効になります。なお、有効もしくは無効へ変更した後に「設定を更新」を選択しないと設定内容は更新されません。①設定画面表示➁オフラインモード有効/無効222.3 設定変更手順(PC)(イ)【参考】オフラインモード設定についてオフラインモードを有効にすると、インターネット接続による通信環境の有無によらず、
正解は『「オフラインモードを有効にする」を選択します。ボタンの背景が灰色に変わります。次に「設定を更新」を選択します。』です。 参考文章に該当の記載はあるため、検索は問題ないのですがうまく回答できていません。
こういった場合、回答精度を向上させるにはどうすればいいでしょうか? この質問では検索は成功しているため、先ほどのように検索で参考にする文書数を増やす必要はありません。 単純に参考文章から回答を生成する能力が足りていないと推察されます。 gpt-3.5-turboではなく、gpt-4を使用してみましょう。 こちらも次の節で実際に試してみます。
改善結果
回答が不正解である質問3と16について、改善した結果を見てみましょう。
質問3「アプリの利用可能時間はいつですか?」
回答
質問に対する回答として、アプリの利用可能時間は24時間365日です。ただし、メンテナンスなどの理由により一時的に利用できない場合があります。
参考文章(抜粋)
1.1 車検証閲覧アプリの概要車検証閲覧アプリの概要令和5年1月より、自動車検査証(以下、「車検証」という。)は、現行の紙車検証から電子化された車検証(以下、「電子車検証」という。)で交付します。今後、電子車検証の券面に記載されていない情報等を閲覧する場合には、「車検証閲覧アプリ」をスマートフォンまたはPCにインストールしていただき、アプリ経由で情報を閲覧することになります。電子化車検証情報【券面】自動車登録番号、使用者の氏名又は名称など【ICタグ】(券面記載事項に加え)所有者の氏名又は名称、有効期間の満了する日などA4サイズA6サイズ相当(1)車検証情報の閲覧車検証の券面記載事項にない情報をあわせての確認が可(2)車検証情報ファイルの出力・保存車検証情報のPDFファイル等での出力と保存が可主な機能(3)リコール情報等の確認(オンラインモードのみ) 当該車両に対するリコール情報等の確認が可41.2 車検証閲覧サービスの概要車検証閲覧サービスの概要(1)サービス時間(2)利用の想定者24時間365日(メンテナンスによる停止を除く)電子車検証(原本)を所持している人(自動車の使用者など)又
参考文書数を3件から10件に増加させ、回答生成のモデルをgpt-3.5-turbo-16kに変更したことで、正しい回答が得られました。 元の文書で表だったこともあり、回答に必要な箇所「サービス時間(2)利用の想定者24時間365日(メンテナンスによる停止を除く)」が文章として不自然になっていますが、きちんと解釈してくれました。 今回はうまくいきましたが、pdfに表が含まれている場合正しい回答をさせるために特別な処理が必要になる可能性があります。
質問16「オンラインモードに変更したいが、どうすればいいですか」
回答
オンラインモードに変更するためには以下の手順を実行してください。 設定画面を開きます。これは「設定」を選択することで行えます。 「オフラインモードを有効にする」を選択します。このボタンを選択すると、ボタンの背景が黄緑色から灰色に変わり、オフラインモードが無効になります。これによりオンラインモードに変更されます。 最後に「設定を更新」を選択します。これにより設定内容が更新され、オンラインモードに変更されます。 以上の手順を行うことでオンラインモードに変更することができます。
参考文書は同じであるため、省略します。 回答が正しくなっていることがわかります。 gpt-3.5-turboからgpt-4に変更することで回答生成能力が向上していることが確認できます。 gpt-4のほうが回答生成能力が高いなら、最初からgpt-4を使えばいいのにという声が聞こえてきそうですが、現在2023年7月末時点でgpt-4はgpt-3.5-turboに比べ約15倍程度利用費用が高いです。 よって、コストとの観点でまずはgpt-3.5-turboで試して回答できるに越したことはありません。
終わりに
本記事では、社内データを利用したChatGPTがどれくらいの精度で質問に回答できるのか検証しました。 ベクトル検索を用いた場合、回答精度が75%と十分な値が出ました。 また、モデルを変更したり参考文書数を増加させたりすることで回答精度が向上することがわかりました。
回答精度は使用するデータや質問によって大きく左右されるため、一概に「7割以上は回答精度出ます」とは言えませんが、かなりChatGPTにポテンシャルを感じていただけたのではないでしょうか? ぜひChatGPTを活用して業務を楽にしてみてください。 isid-ai.jp
執筆
AIコンサルティンググループ
小川 裕也
参考文献
- [2307.03172] Lost in the Middle: How Language Models Use Long Contexts
- ベクトル検索とは?機械学習で向上する検索 | Elastic
- Azure OpenAI Service - 価格 | Microsoft Azure
- 車検証閲覧アプリ|自動車所有者・使用者の方へ|電子車検証特設サイト
- https://www.denshishakensho-portal.mlit.go.jp/assets/files/Overview_and_Preparation_for_the_Vehicle_Inspection_App.pdf
- https://www.denshishakensho-portal.mlit.go.jp/assets/files/How_to_use_the_Vehicle_Inspection_App_PC.pdf