メインコンテンツまでスキップ

AI品質の評価(Evals)

上級
What you'll learn
  • 実用最小限の eval を構築する — 明確な合格基準を持つ 20〜100 件の実際の入力からなるゴールデンセット
  • タスクごとに正しいメトリクスを選ぶ: 決定論的チェック、LLM-as-judge、または人間レビュー
  • eval をゲートとして実行する — すべてのプロンプト変更、モデル交換の前後、そして CI で
  • リグレッションを局所化するために、最後だけでなくすべての段階(検索、ツール呼び出し、最終回答)をスコアリングする

AI の上に何かを出荷するなら、evals こそがそれが機能していることを知る方法であり、変更が改善だったのか改悪だったのかを知る方法です。それがなければ手探りで飛んでいます: あるケースを助けるプロンプトの微調整が、密かに他の10ケースを壊しかねません。Evals は「雰囲気ベース」の反復を測定可能なループに変えます。

実用最小限の eval

始めるのにフレームワークは要りません。ループ全体は4ステップです:

Guided walkthrough1 of 4
  1. 20〜100件の実際の入力と、正しいまたは許容できる出力(または合格とみなすものの明確な基準)。簡単なケース、トリッキーなケース、そして本番ですでに痛い目を見たエッジケースを網羅しましょう。

メトリクスの選び方

すべての質問が同じテストに値するわけではありません。メトリクスをタスクに合わせましょう:

タスクタイプメトリクスコスト信頼性
構造化出力(JSON、SQL)スキーマ検証、完全一致無料
コード生成書かれたテストを実行
抽出(日付、エンティティ)文字列含む/正規表現無料
分類精度、適合率、再現率無料
要約、下書き、トーンルーブリック付き LLM-as-judge中 — 較正必須
高リスクの記述、安全性サンプル上の人間レビュー最高

3つの経験則:

  • 可能な場合は決定論的チェック。 答えが「このスキーマに合う有効な JSON」または「コードがこれらのテストを通過する」なら、LLM に尋ねない — チェックするだけ。
  • ファジーな品質には LLM-as-judge。 有用性、トーン、事実性 vs ソース。安価で速いが、バイアス(長さ、位置、自己選好)がある。数値を信頼する前に、サンプルで人間の評価に対してジャッジを検証しましょう。
  • 最高リスクのスライスには人間。 リリースあたり10件の人間グレードでも0より勝る。

LLM-as-judge starter rubric

You are grading assistant responses against a source document.

For each response, output a JSON object with these fields:
- grounded: true if every factual claim is supported by the source, else false
- complete: true if the response answers all parts of the question, else false
- concise: true if the response contains no filler or repetition, else false
- overall_score: 1-5 (1 = unusable, 5 = ship it)
- reasoning: one sentence explaining the score

Do not consider length. Do not consider whether the response comes first or second.

<source>{{SOURCE}}</source>
<question>{{QUESTION}}</question>
<response>{{RESPONSE}}</response>

Return only the JSON, no preamble.

いつ実行するか

  • プロンプトやモデルの変更の前後。 例外なし。ゴールデンセットの全ポイントは、安全だと思った変更を捕まえることです。
  • モデル移行のとき。 新しいモデルは振る舞いを変えます — 時に静かに。モデル ID を切り替える前に eval を実行しましょう。エラーと移行 を参照。
  • 本番システムでは CI 内で。 緑の eval をマージゲートに変えます。リグレッションはユーザーに見られる前に捕まえられます。
  • 報告されたバグごとに。 失敗ケースをゴールデンセットに追加しましょう。セットはシステムと共に成長します。

最終回答だけでなく、すべての段階を評価する

RAGエージェント では、単一の「最終回答」スコアは物事がどこで壊れているかを隠します。リグレッションが1箇所に着地するよう、各段階を別々にスコアリングしましょう:

段階チェックすべき事項
検索top-k は答えを含むドキュメントを含んでいたか?
ツール選択エージェントはこのターンに正しいツールを選んだか?
ツール引数引数は良く形成され、正しかったか?
最終回答ゴールデン基準に一致するか?

検索スコアが下がったが最終回答スコアが安定しているとき、それが検索リグレッションであり、プロンプト問題ではないことがわかります。その種の局所化こそ、eval を単なるスコアリングではなく、実際にデバッグに有用にするものです。

よくある間違い

  • 回答を生成したのと同じモデルでグレード。 自己選好バイアスがスコアを膨らませる。ジャッジには異なるモデルを — さらに良いのは異なるファミリーを — 使いましょう。
  • 「正しい」答えを漏らすジャッジプロンプト。 ジャッジがゴールド回答を見たら、それに一致することを報酬とする理由を見つけます。類似性ではなく基準でジャッジしましょう。
  • 1日目に凍結されたゴールデンセット。 セットは本番が驚かせるたびに成長すべき。停滞したセットは過去を測ります。
  • タスクではなく eval に最適化。 すべてのケースが合格するまで小さなセットに対してプロンプトを調整すると、過学習した可能性があります。反復中に決して見ない ~20% のケースを検証スライスとして保持しましょう。

理解度チェック

0/4
  1. 実用最小限の eval とは何か?
  2. 決定論的チェックを LLM-as-judge より優先すべきときは?
  3. RAG エージェントで、なぜ各段階を別々にスコアリングするのか?
  4. eval セットに過学習したことを示す赤旗は?
Key takeaways
  • 20〜100 件の実際の入力 + 合格基準 + 一度に1変数 = 動作する eval ループ。
  • 決定論的 > LLM-judge > 人間 — タスクが許す最も安いメトリクスを選ぶ。
  • パイプラインでは最終回答だけでなく、すべての段階をスコアリングする。
  • ゴールデンセットは報告されたバグごとに成長する。停滞したセットは過去を測る。

次に