こんにちは、エンジニアの中山です。
以前 Google の AI Overview で、ピザに接着剤を使うアドバイス が掲出されて話題になりましたが、皆さんは生成 AI の出力品質にどのように向き合っていますか?
- 肥大化するプロンプトをリファクタリングしたいけど、悪影響が心配だ
- モデルのアップグレード後、秘伝のタレ(トリッキーな指示)がこれまでと同様に機能するだろうか
- 生成パイプラインの構成変更は動作的には問題なさそうだけど、エッジケースで副作用を生まないだろうか
このような悩みを抱えている開発現場も多いのではないでしょうか。私の担当するサービスでも、生成 AI を活用してニュース記事や SNS ポストのブリーフィングを自動生成したい、というニーズがありました。
そこで、この記事ではブリーフィングの自動生成を題材に、生成 AI の出力品質をどのように評価したのか、についてご紹介したいと思います。
評価プロセス全体像
最初に評価プロセス全体像を示します。プロセスに登場するのは、熟練編集者や運用担当などの人間(緑)と、評価ロボット(青)と、生成パイプライン(赤)です。

- 熟練編集者に「よいブリーフィング」の具体例(以後 Gold Data)を作ってもらう
- 続いて、Gold Data を抽象化して「よいブリーフィング」たる評価基準(以後 Rubric)を定義してもらい、評価ロボットの頭脳とする
- 試しに検証してみる。評価ロボットは Gold Data に高いスコアをつけることができるだろうか?
- 期待した検証結果に至るまで、Gold Data もしくは Rubric を見直す

- 初期バージョンのブリーフィング生成パイプラインを作る
- 生成~評価のバッチ処理を実行する
- 十分な量と多様性を持つ入力データセットからブリーフィングを生成する
- 評価ロボットがブリーフィングに対する評価レポートを出力する
- レポートに基づき生成パイプラインを改善し、それを次世代バージョンとする
- 事前に定めた基準を達成するまで生成、評価、改善を繰り返す
- 熟練編集者のチェックにより最終的なデプロイ判定を実施する

成果物やレポートはリポジトリで管理し、将来、モデルの変更やブリーフィングの仕様変更(例えばパーソナライズ強化)が生じた場合、プロセスを反復し、必要ならば過去版との比較を行います。
このプロセスの狙いは、評価ロボットで評価の一定の品質×量を担保しつつ、熟練編集者は人間だからこそ気付くことのできるリスクの精査にフォーカスすることで、評価の費用対効果を最大化することです。それを実現するため、今回 DeepEval を利用した評価ロボットとプロセス支援のフレームワークを実装しましたが、運用を通じてさまざまな課題に直面しました。
ここからは、直面した課題とその対策について掘り下げていきます。
Gold Data の 作成
唐突ですが、架空の記事(長いので斜め読み推奨)から
国際宇宙航空研究開発機構(ISADA)をはじめとする国際宇宙探査チームは7日、月面南部で建設を進めていた人類初の常設月面基地「アルテミス・ベース」の初期建設が完了したと発表した。これにより、人類が月面に長期間滞在し、科学研究や開発を行うための基盤が整った。基地は居住モジュール、太陽光発電システム、月面の水資源から水素と酸素を抽出する実験プラントなどで構成される。今後は最大6名の宇宙飛行士が交代で常駐し、低重力環境が人体に与える影響の調査や天体観測、資源採掘の技術実証を行う予定だ。さらに、将来の有人火星探査に向けた「中継拠点」としての役割も期待されている。月面からのロケット打ち上げは、地球から直接火星へ向かうより燃料を削減できるためだ。国際宇宙探査チームの代表は、基地完成を人類が「宇宙で暮らす種」へ進化する歴史的な一歩だと期待を語った。
さまざまな形式の短文を生成してみましょう。まずはプロンプトに
記事の内容が端的に伝わるように 30字以内のタイトルをつけてください
と指示を与えてみたところ
人類初の常設月面基地「アルテミス・ベース」初期建設完了
と出力されました。まあ、妥当なタイトルだと思います。続いて
この記事を匿名掲示板(5ch)のスレタイ風に要約してください
の指示だと
【朗報】新築一戸建て(閑静・日当たり良好・酸素なし)完成
それっぽいですね。さらに
この記 事を川柳(五・七・五)で表現してください
の指示では
新時代、月を跨いで、火星へと
なかなか秀逸(?)な作品が出力されました。
ここで「どの短文がいちばんよいか」と問われた場合、何をもって「よい」とするのかの定義がなければ、再現性のある回答はできません。
ブリーフィングについても同様ですが、最初から抽象概念にたどり着くことは難しいため、評価プロセス全体像のこの部分 …

ではサービスの方向性を踏まえつつ、まずは「よいブリーフィング」の Gold Data を複数例作ります。
それらを並べて
- 正確であることが重要なのか
- より読み手を惹きつけることが重要なのか
- センシティブな内容を表現する際にはどのような配慮が必要か
- 例えばレトリックを用いるなどして、伝わりやすさを重視すべきか
などの共通する特徴を抽出し、Rubric に落とし込んでいきます。
Rubric の定義
DeepEval には、出力が入力に忠実であるかを評価する Faithfulness や、要約としての品質を評価する Summarization などの既成 Metrics が用意されています。しかし「よいブリーフィング」たる Rubric が、必ずしも既成 Metrics に対応しているとは限らないため、今回は自然言語で Rubric を策定できる G-Eval を利用することにします。
例えば、正確性なら
generated が original と矛盾せず、内容を正確に反映していること。original にない事実・推測・誇張・断定を追加せず、不確実な情報を事実として扱わないこと。情報量の不足は減点対象としない。
機微情報に対する表現上の配慮なら
generated が死亡、事故、災害、犯罪、病気、自殺、差別、人権問題などのセンシティブな内容に対して適切な配慮をしていること。被害者、遺族、関係者、加害を疑われている人への不必要な断罪や揶揄を含まないこと。憶測や未確認情報によって名誉や信用を損なっていないこと。センシティブな内容について読者の興味を過度にあおる表現や娯楽的な表現を用いていないこと。
といった具合に Rubric を定義し、評価ロボットはこれらを参照します。
複数観点の評価を並列に実行するため、観点を増やしても処理時間への影響は抑えることができますが
- 観点を横断して Rubric 内の一部指示が重複し、Rubric 自身の保守性が悪化する
- 観点を横断して Rubric 内の一部指示が衝突し、例えば「簡潔さ」の改善が「網羅性」の改悪を招くなど、生成パイプラインの改善に支障が出る
などの問題も発生しやすくなるため、注意が必要です。
そこで、評価プロセス全体像のこの部分 …

では「よいブリーフィング」の Gold Data と Rubric の整合性に加え、Rubric の重複や衝突もレポートすることで、評価ロボットの改善を促すようにしました。

この段階を経ることで、人間と評価ロボットの双方にとって「よいブリーフィング」の解像度向上が期待できます。
ただし、G-Eval の元論文 では、要約タスクにおいて従来手法に対する優位性が報告されている一方で、人間評価との Spearman 相関は 0.514 です。そのため、Gold Data による検証だけで人間の判断との一致まで担保できるとは考えず、上でも述べたとおり評価ロボットは「一定の品質×量」を担う役割とするのが賢明です。
We show that G-EVAL with GPT-4 as the backbone model achieves a Spearman correlation of 0.514 with human on summarization task, outperforming all previous methods by a large margin.
生成パイプライン
評価プロセス全体像のこの部分 …

は、最終的に本番プロダクトに実装されることになり、フレームワーク内で扱うプロンプトやルールベースの処理(Python コード)は、本番プロダクトに対する実装仕様と位置付けることができます。
最初から高い完成度を目指して作りこんでもよいのですが、初版は修正影響を把握しやすいシンプルなプロンプトをお勧めします(フレームワークでも、Rubric からシンプルなプロンプトを自動生成するツールを用意しました)。
ところで、
- 多言語混入