統計ロードマップ
2026-04-30·実装·⏱ 約 4

LLM 評価指標 完全ガイド ─ BLEU から RAGAS まで

LLM アプリの品質を測る評価指標を、生成タスク・要約・RAG・コード・対話の 5 領域でまとめて整理。BLEU・ROUGE・BERTScore・RAGAS・LLM-as-a-Judge を網羅。

LLM アプリで一番難しいのが評価。正解が一意に決まらない(同じ意味で別の表現が無数にある)生成タスクの品質をどう測るか ── 本記事では現在使われる主要指標を一気に整理します。

1. n-gram ベース ─ 古典指標

  • BLEU: 生成と参照の n-gram 一致率。機械翻訳の標準。0〜1 で高いほど良い
  • ROUGE-N / ROUGE-L: 要約タスクの標準。Recall ベース
  • METEOR: 同義語・語幹を考慮した BLEU の改良版
💡 弱点

「美味しいラーメン」と「ラーメンが美味しい」は意味は同じだが BLEU は低くなる。表層一致しか見ないため、自由生成では人間評価とほぼ無相関になることも。

2. 埋め込みベース ─ 意味的近さ

  • BERTScore: BERT で文を埋め込み、トークン単位のコサイン類似度を集計
  • BLEURT: 学習済み回帰モデルで人間スコアを予測
  • MoverScore: Earth Mover's Distance で最適輸送コストを計算

3. LLM-as-a-Judge ─ 現代の標準

強い LLM(GPT-4 など)に採点させる 方法。人間評価と高相関で、定性的観点(流暢さ・事実性・有用性)も同時に評価可能。

Python: GPT-4 で採点
from openai import OpenAI
client = OpenAI()

rubric = '''次の応答を 1〜5 で採点してください。
基準: 事実性・関連性・分かりやすさ。
JSON で {score: int, reason: str} を返してください。
質問: {q}
応答: {a}'''

resp = client.chat.completions.create(
    model='gpt-4o',
    messages=[{'role': 'user', 'content': rubric.format(q=q, a=a)}],
    response_format={'type': 'json_object'},
)
print(resp.choices[0].message.content)
🛠 落とし穴

Judge 自身のバイアス(長文を好む・自分のモデル系列を好む)に注意。複数 Judge の平均、または Pairwise(A vs B どちらが良い?)で軽減できる。

4. RAG 専用 ─ RAGAS

  • Faithfulness: 応答が検索された文脈に基づいているか(ハルシネーション検出)
  • Answer Relevancy: 応答が質問に答えているか
  • Context Precision / Recall: 検索された文脈の質

5. タスク別の使い分け

  • 🌐 機械翻訳: BLEU・COMET
  • 📝 要約: ROUGE + BERTScore + LLM-as-a-Judge
  • 📚 RAG: RAGAS + Faithfulness 重視
  • 💻 コード: pass@k(実行して合格率)・HumanEval / MBPP
  • 💬 対話: LLM-as-a-Judge + ユーザー満足度(オフライン A/B)

関連記事

  • [LLM 入門](/blog/llm-introduction)
  • [RAG 入門](/blog/rag-introduction)
  • [ベクトル検索の基礎](/blog/vector-search-fundamentals)
  • [プロンプトエンジニアリング基礎](/blog/prompt-engineering-basics)
Related Articles

関連記事