- LLM(大規模言語モデル)ベースのアプリケーションは、非決定的な出力特性のため、従来のテスト方式では適切な評価が難しい
- そのため、LLMシステムの性能を維持・改善するには、専用の評価方式(evals) が不可欠
evalが重要な理由
- 性能基準の確立: モデル性能の方向性を示し、比較可能なベンチマークを設定する
- 一貫性と信頼性の確保: 予測不可能な出力を事前に発見し、制御する
- 改善の方向性を提示: 性能低下のポイントを明確にし、狙いを定めた改善を可能にする
- 回帰テストが可能: 変更後も性能が維持されているかを確認し、安定性を保証する
デプロイ前評価の中核要素
デプロイ前評価が重要な理由
- 性能を早期に測定し、比較できる
- コード、プロンプト、パラメータの変化時に回帰問題を事前検知できる
評価の実施方法
1. Ground Truthデータセットの作成
- 専門家が作成した質問・回答ペアで構成されたデータセットが必要
- 実際のユーザー質問タイプを反映した多様なシナリオを含めることが重要
LLMはGround Truthを生成できるか?
- LLMは補助的な役割は果たせるが、単独での生成は推奨されない
- ユーザー行動への理解が不足している
- 文脈に合った質問・回答には人間によるレビューが必要
- ドメイン適合性と品質保証のため、人間の監修が必須
2. 評価指標の選定
- Answer relevancy: 質問に対して直接的で有意義な答えを提供しているか
- Coherence: 応答の論理的な流れと明確さ
- Contextual relevance: 会話文脈をどれだけ適切に考慮しているか
- Responsibility: 倫理性、有害性、バイアスの有無など、責任ある出力になっているか
3. RAG評価指標
- 生成指標:
- Faithfulness: 事実に基づいているか
- Answer relevancy: 応答の適切さ
- 検索指標:
- Context precision: 関連情報のシグナル対ノイズ比
- Context recall: 正答に必要な情報を適切に検索できているか
4. タスク特化指標
- 特定タスクに合わせたカスタム評価指標が必要
- 例: 要約では Fluency, Coherence, Consistency, Relevance
5. スコア計算とシステムチューニング
- 各指標について、実際の出力とGround Truthを比較してスコアを算出
- 例:
- Recallが低い: chunk size を小さくする
- Precisionが低い: リランキングの導入を検討
- 評価ライブラリの例: DeepEval, Relari-ai
LLM-as-Judge評価手法
- GPT-4のようなLLMを用いて、Ground Truthなしで評価する
- 例: G-evalフレームワーク、Vicuna、QLoRA論文
- 欠点:
- 一部の指標(例: Context Recall)はGround Truthなしでは測定できない
- 正確性と細かさの面では、人間ベースの評価が優れている
- 結論: LLM-as-Judge + Ground Truthの併用が理想的
デプロイ段階で評価を統合する方法
- 評価の自動化をデプロイパイプラインに統合する
- コードコミット時またはデプロイ前に自動テストを実行
- 例: Giskardを活用した有害性・ハルシネーション検出の自動テスト
- データ前処理および収集段階に対するテストも含めるべき
デプロイ後評価とデータフライホイール
運用中のモニタリング
- リアルタイムの入力/出力追跡
- ドメイン専門家との定期的な評価セッション
- ユーザーフィードバックチャネルの確保
データフライホイール戦略
- 運用中に発生したデータとフィードバックを活用し、継続的な改善ループを構築
- 例: ユーザーの質問パターン分析 → 検索方式の改善
- 指標に基づいてプロンプト、推論パラメータ、検索方式などを調整
- ユーザー行動および失敗シナリオに応じて指標の変更も必要
結論: 「Evals First」戦略は信頼性の高いLLM製品の中核
- LLMアプリケーション開発の初期から、評価中心の考え方を導入すべき
- 核心は、正しい指標と基準を早期に定義し、それを開発とデプロイの基準点とすること
- 評価を事後的な活動ではなく、中核となる開発プロセスとして位置づけることで、ユーザー中心の信頼できるAIシステムを構築できる
1件のコメント
経験上もそうですし、https://blog.lawrencejones.dev/ai-mvp/ のような他の事例を見ても、最新モデルだからといって必ずしもより良い結果が保証されるわけではないようです。モデルやプロンプトをチューニングするたびにデータセットを通じて評価を行う必要がありますが、いくらLLMが判断を補助してくれるとはいえ、人間がLLMモデルのために ground truth データセットを一つひとつ手作業で作成しなければならないのは、少し皮肉でもありますね(笑)