あらゆる分野のRAGの性能を評価する手法RAGEval
導入
こんにちは、株式会社ナレッジセンスの須藤英寿です。普段はエンジニアとして、LLMを使用したチャットのサービスを提供しており、とりわけRAGシステムの改善は日々の課題になっています。
本記事では、ドメインに特化したRAGの性能を検証するためのフレームワーク、RAGEvalについて解説します。
サマリー
RAGの手法は日夜研究され、新しい手法は次々に提案されています。RAGに限った話ではないですが、システムの性能を計測するには評価するための方法が重要です。そしてRAGの性能を計測するにはドキュメントと質問、そして正解ドキュメントと正答のセットが必要になります。
RAGEvalは、これらの計測に必要なデータをLLMとそのドメインに使用するサンプルのドキュメントを用いて自動的に生成する事が可能となっています。
問題意識
RAGのテストデータを用意するのは大変
RAGの評価には必ず評価するためのデータセットが必要になってきます。その一方で、世の中に出回っているデータセットの大半は英語で、一部のドメインにのみ適応した物となっています。このため、例えば自社でRAGの性能を計測しようとすると、データセットは自前で用意する必要があります。しかし、データセットを一から作るのはかなりの手間を要するため、定性的な評価になるかより汎用的なデータセットを用いて計測する事が多くなってしまいます。
手法
RAGEvalは、データセットを作成するのに使用するドキュメントを用意するところから始まります。ここから、LLMを使用した処理のステップを複数回経て、質問、参照用のデータ、回答、そしてキーポイントの4つのセットを生成します。
手順の詳細は以下のようになります。
データセットの生成方法
評価に使用するデータセットが生成されるまでの手順を簡単にまとめます。
- 作成したいデータセットのドメインに関連するドキュメントを用意する
- ドキュメントをいくつか利用して、スキーマ要約(イベント、日付、場所などの主要要素をまとめたデータ)を生成
- スキーマを元に仮想の値をLLMなどを使用して割り当てたコンフィグファイルを生成
- コンフィグファイルとドメイン固有の知識をLLMに渡して、仮想のドキュメントを生成
- コンフィグファイルと仮想のドキュメントをLLMに読み込んでもらい、質問と回答のセットを生成
- 生成された回答データと元のドキュメントから、正解として扱う参照データを抽出
- 生成された回答データからキーポイントを抽出
スキーマ要約の例
{
"courtAndProcuratorate": {
"court": "",
"procuratorate": ""
},
"chiefJudge": "",
"judge": "",
"clerk": "",
"defendant": {
"name": "",
"gender": "",
"birthdate": "",
"residence": "",
"ethnicity": "",
"occupation": ""
},
"defenseLawyer": {
"name": "",
"lawFirm": ""
},
"caseProcess": [
{
"event": "Case Filing and Investigation ",
"date": ""
},
{
"event": "Detention Measures Taken ",
"date": ""
},
{
"event": "Criminal Detention ",
"date": ""
},
{
"event": "Arrest ",
"date": ""
}
],
"criminalFacts": [
{
"crimeName": "",
"details": [
{
"timePeriod": "",
"behavior": "",
"evidence": ""
}
]
}
],
"legalProcedure": {
"judgmentDate": "",
"judgmentResult": [
{
"crimeName": "",
"sentence": "",
"sentencingConsiderations": ""
}
]
}
}
データセットを用いて性能を検証するための方法
ここでは、生成されたデータセットを元にどのようにしてRAGシステムの評価を行うか説明します。以下にある評価項目に沿って評価していきます。
- 完全性: 生成された回答が、正解の中に含まれるキーポイントをどれだけ含んでいるかを計測します。
- 幻覚: 生成された回答とキーポイントが矛盾している程度を計測します。
- 無関連性: 生成された回答とキーポイントが関係もしていなければ、矛盾もしていない程度を計測します。
- リコール: 検索した参照が正解としている参照とどの程度一致しているかを表す指標です。
- 有効情報率: 検索された情報の中で正解との関連性が高い情報の割合を表す指標です。
- 質問文を元に文書を検索し、その検索結果と正解として扱う参照データを比較して「リコール」と「有効情報率」を計測する
- 検索結果と質問を元に回答を生成。生成した回答と正解、キーポイントとを比較して、「完全性」や「幻覚」、「無関連性」を計測する
これらの結果を元に、RAGシステムのどの部分で精度が低くなっているかを検証し改善に役立てます。
検証方法
生成されたテストデータの質を検証する方法
テストデータの生成とそれを用いた検証の方法はここまでに書いたとおりですが、そもそもこのテストデータ自体は質の良いものなのか、という疑問があります。
これに対して論文内では以下の方法で、テストデータ自体の質を検証しています。
- 生成されたテストデータを人が確認する。評価は6段階でスコアリングされます。
- 生成された文書の評価のため、別手法で生成された文章と比較を行う。
- 自動評価でも同様に検証を行い、人の判断と比較して差がないかを検証
1については約95%が高い品質であると評価されました。2については、簡単なプロンプト手法と比較していずれの検証項目でも、RAGEvalで生成したドキュメントの品質が高いことが確認されました。最後に3について、LLMを用いて同様の評価を行ったところ人間の評価結果と高い一致度を示している事が確認されました。
成果
この論文で行われている実験には大きく分けて2つの種類が存在します。一つは、RAGEvalで生成されたデータセットを利用して、各LLMのRAGの性能比較のための実験。そしてもう一つは、この方法で生成されたデータセットそのものの評価のための実験です。後者については、一つ前の「検証方法」に結果が記載されているのでそちらをご確認ください。
ここからは、この方法で作成されたデータセットを用いて、各種LLMで性能検証を行った結果を記載しています。ただし、この結果はこの論文で提案しているRAGEvalそのものの性能検証でない点に注意してください。
こちらの表は、適切なデータを取得できた前提の上でLLMごとに生成された回答の評価を行っています。多くの項目でGPT-4oの性能が高いようですが、一部の観点では別のモデルが高い性能を示すこともあるようです。
この表では各手法で関連する文書を取得するタスクを実行し、その性能を比較しています。BM25をのぞいて、それ以外の検索については結果がまばらで性能の優劣がつけられなさそうですが、中国語のリコール性能だけでいえばBGE-M3の性能が高そうです。
まとめ
今回は、RAGの評価用データを生成するRAGEvalについて紹介しました。RAGを作るうえで課題になりやすい検証データの生成を関連ドキュメントから生成するプロセスを体系化しているためかなり応用範囲の広い技術かと思います。ドメインごとにそのまま使用できるかは慎重に検証が必要でしょうが、利用可能であれば開発もぐっと楽になるかと思います。
一方で、この手法の有用性を示すうえで検証してほしい項目もありました。それは既存のRAGに使われている評価指標データとの比較です。例えば、既存のRAGの検証ではWikipediaのデータを利用した評価指標が存在しますが、RAGEvalでも同じソースでデータセットを作成して両方のデータセットでモデルごとに性能を比較するなどが考えられます。その結果として、分布が似通っていれば、同程度のデータセットが作れている証拠ですし、そうでなければその点について議論することも可能かと思います。
とはいえ、この手法でいくつかデータセットを作成して定性的に良いデータがセットが生成できているのであれば、人の手で一から作るよりも遥かに効率よいかと思います。RAGの性能の検証に困っている場合は是非一度試してみてください。
Discussion