Databricks Certified Generative AI Engineer Associate 教科書
第5章 評価とモニタリング(Evaluation and Monitoring, 12%)
🎯 この節の学習目標
mlflow.genai.evaluate() に評価データセットとスコアラーを渡して一括評価を実行する流れを説明でき、Mosaic AI Agent Evaluation との関係を説明できるLLM-as-a-judgeは、評価対象のLLM出力を別のLLMに採点させる手法です。ジャッジ役のLLMには「評価基準(何を良しとするか)」「質問」「モデルの出力」(必要に応じてコンテキストや期待回答)を与え、合否や1〜5点のスコアと、その理由(rationale)を返させます。
評価手段は大きく3つあり、それぞれトレードオフがあります。
| 手段 | 長所 | 短所 |
|---|---|---|
| 人手評価(human evaluation) | 最も信頼できる品質判断。ドメイン知識を反映できる | 高コスト・低速。全件評価はスケールしない |
| ヒューリスティック指標(ROUGE、正規表現など) | 高速・安価・完全に再現可能 | 表面的な一致しか見えず、意味を捉えられない |
| LLM-as-a-judge | 意味を捉えた判定が大規模にスケールする。理由も出力できる | 推論コストがかかる。ジャッジ自体にバイアスがある |
つまりLLMジャッジは「人手評価の品質」と「自動評価のスケール」の中間を埋める存在です。5-1で見た Relevance や Groundedness のような意味的な観点は、文字列処理では判定できないため、LLMジャッジが事実上の標準手段になっています。
📝 試験のポイント
「数千件の応答を人手で全件評価するのは現実的でない。どうするか?」→ LLM-as-a-judge でスケールさせる。「回答がコンテキストに根拠付けられているかを自動評価したい」→ groundedness ジャッジ。この2つの対応付けは問われやすいパターンです。
現在の Databricks では、生成AIアプリ評価のための組み込みLLMジャッジは MLflow 3 の統合評価フレームワークの一部として提供されます。自分でジャッジ用プロンプトを設計しなくても、実績のある基準で主要観点を評価できます。代表的なものは次のとおりです。
Mosaic AI Agent Evaluation:relevance・groundedness・correctness・safety・guidelines などの組み込みジャッジを提供する Databricks の評価機能として出題される可能性があります。ジャッジの種類と「どの入力が必要か」の対応は同じなので、名称が違っても選択肢を判断できます。
Agent Evaluation の機能は MLflow 3 の統合評価フレームワーク(unified evaluation framework)へ統合され、移行が公式に案内されています。組み込みジャッジは mlflow.genai.scorers のスコアラー(Correctness、RelevanceToQuery、Safety、Guidelines など)として提供され、mlflow.genai.evaluate() で実行します。
| 組み込みジャッジ | 判定内容 | 必要な入力 |
|---|---|---|
| relevance(関連性) | 回答がユーザーの質問に答えているか | 質問、回答 |
| groundedness(根拠性) | 回答が取得コンテキストに裏付けられているか(ハルシネーション検出) | コンテキスト、回答 |
| correctness(正確性) | 回答が期待回答と意味的に一致するか | 質問、回答、期待回答 |
| safety(安全性) | 有害・不適切な内容を含んでいないか | 回答 |
| guidelines(ガイドライン準拠) | 自然言語で書いた独自基準を満たすか | 回答、基準文 |
| 検索系ジャッジ(chunk relevance など) | 検索段階の品質(5-4で詳述) | 質問、取得チャンク |
各ジャッジが「どの入力を必要とするか」に注目してください。correctness だけは期待回答(ground truth)が必要で、relevance・groundedness・safety はリファレンスなしで動きます(5-1の分類と対応)。この違いは「正解データがない状況でどのジャッジが使えるか」という形で問われます。
組み込みの観点に収まらない要件も、自然言語のガイドラインとして書けばジャッジに判定させられます。コードを書かずに基準を追加できるのが利点で、業務要件のレビュー観点をそのまま評価に落とし込めます。
💼 例:社内ヘルプデスクボットのガイドライン
このような文を guidelines として渡すと、ジャッジが各応答について準拠/違反を判定し、理由付きで返します。ヒューリスティック(正規表現)では「敬語かどうか」のような判定は困難ですが、LLMジャッジなら自然に扱えます。
なお、正規表現や完全一致で機械的に判定できる基準(URLを含むか、JSON形式か等)は、LLMジャッジよりも安価で再現性のあるヒューリスティック型カスタムスコアラー(5-3)が適します。「意味の判定はLLMジャッジ、形式の判定はヒューリスティック」と使い分けます。
評価の実行には MLflow 3 の評価 API mlflow.genai.evaluate() を使います(MLflow 2 系の mlflow.evaluate() を生成AI向けに再設計した、統合評価フレームワークの中心APIです)。基本の流れは「評価データセットを用意 → アプリ(または既存の出力)とスコアラーを渡す → 結果が MLflow に記録される」です。
# 評価データセット:質問と期待回答(期待回答は correctness を使う場合に必要)
eval_data = [
{
"inputs": {"question": "返品は何日以内に可能ですか?"},
"expectations": {"expected_response": "未開封なら購入後30日以内です。"},
},
# ... 他の評価ケース
]
import mlflow
from mlflow.genai.scorers import Correctness, RelevanceToQuery, Safety, Guidelines
results = mlflow.genai.evaluate(
data=eval_data,
predict_fn=my_rag_app, # 評価対象のアプリ(質問を受け回答を返す関数)
scorers=[
Correctness(), # 期待回答との一致
RelevanceToQuery(), # 質問への関連性
Safety(), # 安全性
Guidelines(
name="keigo",
guidelines="回答は敬語(ですます調)で書かれていること",
),
],
)
実行すると、各評価ケースにスコアラーごとの判定と理由が付き、結果はMLflowの実験(Run)として記録されます。UIでケースごとの合否・理由を確認でき、プロンプトやモデルを変更した前後で評価結果を比較することで、改善が本当に効いたかをデータで判断できます(回帰テストとしての利用)。
📝 試験のポイント
評価データセットの基本構成は「質問(inputs)+期待回答(expectations)+(RAGなら)関連コンテキスト」です。「アプリ改修後に品質が下がっていないことを確認したい」→ 同じ評価データセットで mlflow.genai.evaluate() を再実行して比較する、という運用イメージを持っておきましょう。
LLMジャッジは万能ではありません。既知の限界を理解した上で使います。
したがって、重要な判断(リリース可否、規制対応など)は人間のレビューと併用するのが原則です。実務では、ドメイン専門家(SME)がサンプルをレビューしてジャッジの判定と突き合わせ、ジャッジが信頼できることを確認してから大規模適用する、という進め方をします(人間フィードバックの活用は5-6で扱います)。
✅ この節のまとめ
mlflow.genai.evaluate() に評価データセットとスコアラーを渡して一括評価し、結果をMLflowに記録して変更前後を比較する。問1. 本番のRAGチャットボットが1日数千件の応答を返しており、人手で全件の品質を確認するのは不可能である。品質評価をスケールさせる方法として最も適切なのはどれか。
正解:B
人手評価がスケールしない状況で意味的な品質を大規模に測るのが LLM-as-a-judge の主用途です。Aの文字数は品質と直接の関係がなく、Cはコストと速度の問題を解決していません。DのROUGEは参照テキストとの表面一致しか測れず、そもそも本番トラフィックには参照(期待回答)が存在しないため適用できません。
問2. RAGアプリについて「回答が検索されたコンテキストに裏付けられているか」を自動で評価したい。使用すべき組み込みジャッジはどれか。
正解:C
「コンテキストに裏付けられているか」= groundedness(根拠性)であり、ハルシネーション検出に使います。Aの safety は有害性、Bの correctness は期待回答との一致(ground truth が必要)、Dの relevance は質問に答えているかを見る観点で、いずれもコンテキストとの突き合わせは行いません。
問3. 「回答は必ず敬語で書き、価格の断定的な約束をしない」という社内ルールへの準拠を、コードを書かずに自動評価したい。最も適切な方法はどれか。
正解:A
自然言語で書いた独自基準への準拠判定は guidelines ジャッジの典型用途で、コード不要という要件にも合致します。Bの correctness は期待回答との意味一致を見るもので文体ルールの判定には不適切です。Cはコードを書く必要がある上、「断定的な約束をしない」のような意味的判定は正規表現では困難です。Dのパープレキシティはモデルの予測不確かさの指標であり、ルール準拠とは無関係です。
問4. LLM-as-a-judge の限界に関する記述として最も適切なのはどれか。
正解:B
LLMジャッジには自己モデル寄り・長文寄りのバイアスが知られており、判定を盲信せず重要判断は人間レビューと組み合わせるのが原則です。Aはジャッジ自身が確率的なLLMであるため誤り、Cはジャッジ実行のたびにLLM推論コストが発生するため誤り、Dはヒューリスティック指標の説明であり、むしろ意味を捉えられることがLLMジャッジの強みです。
問5. Databricks における生成AIアプリの評価機能の現在の位置付けとして最も適切なのはどれか。
正解:B
従来 Mosaic AI Agent Evaluation として提供されていた組み込みジャッジや評価実行の機能は、MLflow 3 の統合評価フレームワーク(Tracing / Evaluation / LLM judges / Human feedback / Scorers)に統合され、mlflow.genai.evaluate() + mlflow.genai.scorers のスコアラーとして使う形への移行が公式に案内されています。試験では旧名称で出題される可能性もありますが、ジャッジの種類と役割は共通です。A・C・Dはいずれも現在の位置付けと異なります。