「このLLMは本当に使えるのか?」――この問いに答えるのが、LLM評価の仕事です。LLM評価はベンチマーク・人間評価・LLM-as-Judgeの3軸を使い分けるハイブリッドアプローチが最も実用的であり、いずれか1つだけに頼ると必ず見落としが発生します。本記事では、3つの評価手法の役割と実装方法、そして使い分けフレームワークを体系的に解説します。

なぜLLMの評価は難しいのか

従来の機械学習モデルであれば、精度・再現率・F1スコアといった明確な指標で評価できました。分類問題なら「正しく分類できたか」、回帰問題なら「予測値と実測値の誤差」といった具合に、正解と照合すれば定量化できたのです。

しかしLLMの出力は自然言語であり、「正解は1つではない」のが本質です。同じ質問に対して複数の妥当な回答が存在し、それぞれの文体や表現、構成が異なっても「正しい」と判断されうるのです。さらに、ハルシネーション、敬語の適切さ、指示への従順性、安全性といった多次元の評価軸があり、単一の指標に集約するのが困難です。この「正解が曖昧」という性質こそが、LLM評価の根本的な難しさの源泉です。

ベンチマークによる評価

公開ベンチマークは、モデルの大まかな性能比較や選定初期のスクリーニングに有用です。代表的なベンチマークには、MMLU(多分野の選択問題)、HumanEval(コード生成)、MT-Bench(対話品質)、JGLUE(日本語理解)などがあります。これらのスコアは各モデルの公式発表で比較可能で、モデル選定の出発点として参考になります。

ただし、ベンチマークには限界があります。第一がベンチマーク汚染の問題で、学習データにベンチマーク問題が含まれてしまうと、実力以上のスコアが出てしまいます。第二が実務との乖離で、ベンチマークが測定するスキルと自社業務で必要なスキルがずれている場合、高スコアモデルが実務で低パフォーマンスになることがあります。

ベンチマーク名測定対象スコア範囲主要モデルの結果限界・注意点
MMLU多分野選択問題0〜100%GPT-4o 88%級汚染リスクあり
HumanEvalPythonコード生成0〜100%GPT-4o 90%+簡単な問題に偏り
MT-Bench対話品質1〜10GPT-4o 9.0前後LLM-judge依存
GSM8K小学校算数の推論0〜100%GPT-4o 95%+簡単になりすぎ
JGLUE日本語言語理解0〜100モデル差が残る実務タスクと差
Japanese MT-Bench日本語対話品質1〜10モデル順位は揺れる評価者バイアス

人間評価(Human Evaluation)

人間評価は、最も信頼性が高い評価手法です。人間が実際に出力を読んで採点するため、ベンチマークでは捉えられない自然さ、敬語の適切さ、ビジネスコンテキストへの適合度を正確に測れます。一方で、時間とコストがかかり、スケールしにくいのが難点です。

人間評価の設計では、評価基準の明確化、評価者の選定、バイアス対策が重要です。基準が曖昧だと評価者によって採点がばらつき、特定の評価者のクセが結果を歪めることもあります。ABテスト形式(AとBどちらが良いか)は、絶対採点より評価者間の一貫性が高いため、実務では好まれます。

項目内容注意点
評価基準自然さ、正確性、安全性など多軸で定義1項目ずつ独立採点
評価者選定業務知識を持つ担当者2名以上個人のクセで結果が変わる
サンプル数1モデルあたり最低30サンプル以上少ないと統計的に無意味
ブラインドモデル名を隠して採点ブランドバイアス防止
ABテスト形式A/B/引き分けの3択絶対採点より再現性高い
評価者間一致度Cohen’s Kappa等で定量化0.6以上が望ましい

LLM-as-Judge――LLMによる自動評価

LLM-as-Judgeは、LLMに他のLLMの出力を評価させる自動評価手法です。人間評価との相関が高いことが複数の研究で確認されており、大量の評価を短時間で回せる実用的な方法として急速に普及しています。

評価プロンプトの設計が品質を決定します。評価基準を明示し、段階的な採点基準を提示し、スコアだけでなく理由の記述を求めることで、人間に近い判断を引き出せます。また、自己評価よりクロスモデル評価(評価対象と異なるモデルで評価)の方が客観性が高いです。

from openai import OpenAI
import json
client = OpenAI()

def llm_judge(question: str, answer: str, criteria: list) -> dict:
    system = """あなたはLLM出力の評価専門家です。指示された基準で
厳密かつ公平に採点してください。必ずJSON形式で返答してください。"""
    user = f"""【質問】
{question}

【回答】
{answer}

【評価基準】
{json.dumps(criteria, ensure_ascii=False)}

各基準について1〜5で採点し、理由も記載してください。
出力形式: {{"scores": {{"基準名": {{"score": int, "reason": str}}}}}}"""
    r = client.chat.completions.create(
        model="gpt-4o",
        messages=[{"role": "system", "content": system},
                  {"role": "user", "content": user}],
        response_format={"type": "json_object"},
    )
    return json.loads(r.choices[0].message.content)

criteria = ["事実の正確性", "文章の自然さ", "指示への従順性", "敬語の適切さ"]
print(llm_judge("返品方法は?", "恐れ入りますが...", criteria))

評価パイプラインの構築

実運用では、テストケース管理、実行自動化、結果集計、ダッシュボード表示までを一貫したパイプラインで回す必要があります。専用ツールとしては、promptfoo、DeepEval、Langfuse、Helicone Evalsなどが代表格で、設定ファイルベースでテストを定義できます。

prompts:
  - "あなたは社内FAQボットです。次の質問に答えてください: {{question}}"

providers:
  - openai:gpt-4o-mini
  - openai:gpt-4o
  - anthropic:claude-3-5-haiku-latest

tests:
  - vars:
      question: "返品の方法を教えてください"
    assert:
      - type: contains
        value: "返品"
      - type: llm-rubric
        value: "敬語が正しく使われており、手順が明確か"
  - vars:
      question: "パスワードを忘れました"
    assert:
      - type: contains-any
        value: ["リセット", "再設定"]

評価手法の使い分けフレームワーク

3つの評価手法をどう使い分けるかは、プロジェクトのフェーズと重要度で決まります。大まかには以下のような判断で進めると効率的です。

Q1. プロジェクト初期のモデル選定ですか?
├── Yes --> ベンチマークでスクリーニング
│           ↓
│           候補を2〜3個に絞る
└── No  --> 次のQへ
     |
     v
Q2. 自社タスクでの性能検証が必要?
├── Yes --> 自社テストケース+LLM-as-Judge(自動)
│           ↓
│           問題があれば人間評価を追加
└── No  --> CI/CDで継続監視
     |
     v
Q3. 本番リリース判定ですか?
├── Yes --> 人間評価(最低30件)+LLM-as-Judgeのダブル
└── No  --> LLM-as-Judgeのみで定期実行

まとめ――評価なくして改善なし

  • LLM評価はベンチマーク・人間評価・LLM-as-Judgeの3軸を使い分ける
  • ベンチマークは選定初期のスクリーニングに有効
  • 人間評価は信頼性最高だがコスト大、ABテスト形式が実務的
  • LLM-as-Judgeは大量評価の自動化に不可欠

DE-STKでは、LLMプロジェクトの評価設計から、評価パイプラインの構築、継続的な改善運用まで一貫して支援しています。本番リリース前の検証で迷われている方、評価を仕組み化したい方は、お気軽にご相談ください。

よくある質問

Q. LLMの性能を評価する最も良い方法は?

自社のユースケースに合わせたテストケースを作成し、LLM-as-Judge(LLMによる自動評価)と人間評価を組み合わせる方法が最も実用的です。公開ベンチマークはモデルの大まかな性能比較に有用ですが、実務での性能とは乖離する場合があります。

Q. LLM-as-Judgeとは何ですか?

LLM自身に他のLLMの出力品質を評価させる手法です。評価基準を含むプロンプトを設計し、1〜5のスコアや「AとBどちらが良いか」の判定を出力させます。人間評価との相関が高いことが確認されており、大量の評価を自動化できます。

Q. LLMのベンチマークスコアは信頼できますか?

参考にはなりますが、過信は禁物です。ベンチマーク汚染(学習データにベンチマーク問題が含まれる)の問題や、ベンチマークが測定するスキルと実務で必要なスキルの乖離があります。必ず自社データでの評価を併用してください。