なぜLLM EvalsとA/Bテストはセットで考えるべきか
多くのチームがLLMベースの機能を開発する際、「どう評価するか」という問いに直面します。単にLLM Judge(判定器)を作ってスコアを付け、それで終わりにしてしまうケースが多いのですが、Spotifyの最新の研究はそれだけでは不十分だと指摘しています。
Spotifyによると、全A/Bテストのうち約12%だけがリリース可能な肯定的結果に繋がります。残りの64%は「回帰の発見」「アイデアの排除」「仮説の洗練」といった有効な学習を提供します。つまり、勝率だけで実験の価値を判断してはいけないということです。
そこにLLM Evalsという新しいツールが登場しました。関連性、一貫性、トーン、意図の一致など、従来は人間が直接評価していた次元を、自動でより速く、安価に測定できるようになりました。問題は、この2つのツールを「どちらか一方」と見る視点です。Spotifyはこれがフォーク(分岐)ではなくファネル(漏斗) の関係であるべきだと強調します。
「LLM Evalsは実験の前に使うものであり、実験を代替するものではない」
この概念を理解することが、LLMベースのシステムを適切に評価する第一歩です。
検証(Verification)と妥当性確認(Validation)の違い
Spotifyの研究者SchultzbergとOttensは、2つの概念を明確に区別します:
- Evals = 検証(Verification):出力が品質基準を満たしているか?
- 実験 = 妥当性確認(Validation):実際のユーザーが予測通りに反応するか?
Evalsは実験の帯域を消費する前に有望でない候補をふるい落とし、その後の実験の**Hit Rate(成功率)**を高めます。例えば、信頼を損なうコンテンツを検出するLLM Judgeを作ったとしましょう。このJudgeはチームが気づかなかったパターンを発見し、そのパターンをプロダクト修正に繋げます。修正がデプロイされた後、同じJudgeが「違反件数の減少」を確認します。これがEvalsの2つの役割です:何を改善すべきか発見し、改善が実際に実現されたか確認すること。
しかし、Evalsは次の問いに答えることはできません:
「改善版を受け取ったユーザーが実際に良い体験をしたか?」 「信頼喪失が離脱に繋がるのを防げたか?」
この問いには、実際のユーザーを対象とした実験が不可欠です。ここにファネル構造の意味があります。

ファネル構造:Evals -> 実験 -> キャリブレーションフィードバック
SpotifyはEvalsと実験を繋ぐ2つのキャリブレーションレイヤーと1つのフィードバックループでシステムを設計します。
1. 第一のキャリブレーション:従来の定量指標
精度、再現率、ランキングスコアなどの既存メトリクスをLLM Judgeが代替するのではなく、併用します。
2. 第二のキャリブレーション:LLM Judgeスコアと実際のユーザー結果のマッピング
Evalsは**プロキシ(代理指標)**です。スコアが実際に重要な結果を追跡している限りにおいてのみ有効です。LLM Judgeが「バリアントAの方が良い」と言うとき、実際にユーザー体験が向上しているか確認する必要があります。
例えば、AnthropicがOpus 4.5モデルをリリースした際、QodoのコーディングEvalsは改善を示せませんでしたが、実際には長いタスク(long tasks)で大きな向上がありました。逆のケースも多くあります。Judgeが表面的なパターンにスコアを偏らせる現象です。
実践コード例:簡易LLM Judge + A/Bデータキャリブレーションパイプライン
# LLM Judgeスコアと実際の実験結果を比較し、キャリブレーション係数を計算する例
import numpy as np
from sklearn.metrics import mean_squared_error
# サンプルデータ:LLM Judgeスコア(0〜1)と実際のユーザーコンバージョン率(0〜1)
eval_scores = np.array([0.85, 0.72, 0.91, 0.63, 0.78])
actual_conversion = np.array([0.12, 0.09, 0.15, 0.07, 0.11])
# MSEでキャリブレーション誤差を計算
mse = mean_squared_error(actual_conversion, eval_scores)
print(f"キャリブレーション誤差 (MSE): {mse:.4f}")
# キャリブレーション係数:単純な線形回帰でJudgeスコア -> 実際のコンバージョン率を予測
from sklearn.linear_model import LinearRegression
model = LinearRegression()
model.fit(eval_scores.reshape(-1, 1), actual_conversion)
print(f"キャリブレーション係数 (傾き): {model.coef_[0]:.3f}")
print(f"キャリブレーション係数 (切片): {model.intercept_:.3f}")
# キャリブレーションされたJudgeスコア
calibrated_scores = model.predict(eval_scores.reshape(-1, 1))
print(f"キャリブレーション後スコア: {calibrated_scores}")
このようなキャリブレーションループがなければ、Evalsは「意見」に過ぎず、「証拠」にはなりません。Spotifyはこのループを継続的に回し、Evalsが徐々に正確な検証ツールになるようにしています。
ガードレールメトリクス(Guardrail Metrics)の重要性
Spotifyのチームは、リリースした実験の約42%をロールバックしています。セッション長の減少、クラッシュ率の上昇、リテンションの低下といったセカンダリメトリクスで回帰を発見したためです。Evalsやオフライン評価ではこれらの問題を全く捉えられません。
「ガードレールの要点は、最適化対象ではないが気にかける次元を観察すること」
Evalsは一つの次元の実装品質を測定します。実験はプロダクションシステムとエンドユーザーへの影響を定量化します。この2つはセットで運用すべきです。

日本開発コミュニティでの適用コンテキスト
国内の開発現場では特に迅速なリリースプレッシャーの中で、A/Bテストを「コスト」と見なす傾向があります。しかしSpotifyのデータが示すように、実験なしでリリースし、主要ビジネスメトリクスで大きな回帰を見逃した場合、そのコストは遥かに大きくなります。
- 大規模プラットフォーム企業:LLMベースのレコメンデーション、検索、チャットボット機能を導入する際、オフラインEvalsだけを信じてリリースすると、ユーザー離脱を招くリスクがあります。必ず小規模A/Bテストで検証しましょう。
- スタートアップ:リソースが限られていても、「クイック方向性テスト」用の実験と「リリース判断」用の実験を分ける習慣が重要です。Evalsで方向性を定め、実験で確信を得る構造を作りましょう。
本アプローチの限界または注意点
- Evalsは長期的なユーザー行動を捉えるのが難しい:構造上、長時間のタスクや長期的な行動変化はEvalsでは測定が困難です。
- LLM Judge自体もバイアスを持つ可能性がある:Judgeが特定のパターン(例:長い回答、特定のキーワード)にスコアを偏らせる現象を継続的にモニタリングする必要があります。
- キャリブレーションループの運用にもコストがかかる:オンライン-オフライン信号のキャリブレーションを自動化しないと、むしろ管理負担が増える可能性があります。
合わせて読みたい記事
- SpotifyがAIエージェントで76%のPR増加を解決した方法(feat. Honk, Backstage)
- Colab MCPサーバ公開!AIエージェントがGoogle Colabを直接制御する時代に

結論:ループを閉じよ
Spotifyが提案する最終的なワークフローは以下の通りです:
- Evalsを早期に、頻繁に実行し、最良の処方を見つける。
- 実験で実際のユーザーとシステムが予測通りに反応するか検証し、最適化していないメトリクスもモニタリングする。
- A/Bテストデータ自体にLLM Evalsを再実行する。Judgeが好んだバージョンが実際にユーザーにとって良いパフォーマンスを発揮したか確認する。
- Evalスコアと実験結果の乖離が大きい場合、それ自体が診断の宝庫です。各サイクルが次のキャリブレーションをよりスマートにします。
「成功は基本をしっかり行い、それをスケールさせることから生まれる。システムが使うのに十分シンプルで、信頼できるだけ厳格であるときに価値は倍増する。」
LLM Evalsは実験文化を上流に拡張します。実験前に最良の処方を見つけ、実験後にJudgeをキャリブレーションしましょう。このファネルが適切に機能すれば、12%の成功率も十分意味のある数字になります。
次のステップとしての学習方向
- 根拠資料:Spotify Engineering Blog 原文
- 実際にLLM Judgeを実装し、簡易なA/Bテストデータとキャリブレーションパイプラインを構築してみてください。
- ガードレールメトリクスの設計についてさらに学び、ご自身のサービスに適したセカンダリメトリクスを定義することをお勧めします。