第9章 — RAG評価トライアド
LLM Primer III: RAGで強化するエンタープライズAI を章ごとに紹介していくウォークスルー、第9回です。3つの異なる失敗が、ひとつの症状に潰れ込む — そこにこの分野が、3つの頭を持つ尺度を考案して、どの症状がどれかをやっと教えてくれるようにした話。
この章がなぜあるのか
RAG システムは3つの異なる場所で失敗しえて、外から見ると失敗は同じに見えます。検索器が誤ったコンテキストを引く。モデルが正しいコンテキストを無視する。モデルがコンテキストを尊重するが、訊かれたのと違う問いに答える。本番のチームならどこも、ある時点で「ひとつの失敗を直そうとして別の失敗を測っていた」経験があります。この章は、その間違いを防ぐ、小さく粘り強い語彙の話です。
同時に、シフトの話でもあります。古典的な情報検索は、ラベル付きの正解 — クエリと、それに対応する既知の正しい文書 — に対して評価され、ラベルに対して適合率・再現率が計算されました。RAG は、そんなラベルが存在しない世界で動きます。問いは開放的で、答えは生成的で、関連するコンテキストはモデルがその瞬間に必要としたもの。トライアドは、この世界向けに設計されています。参照との一致ではなく、段と段の整合を測ります。
9.1 なぜ信号は1つではなく3つか
新しいチームの直感は、最終回答を採点することです。ユーザーが問いを打ち、システムが応答を生み、それが正解か不正解か。直感は失敗します — 最終回答は各段の合成で、失敗したときどの段を直すべきかを合成は教えてくれない。正しい文書を逃したのか、引いて無視したのか、使って違う問いに答えたのか。3つの異なるバグ、3つの異なる修正、ひとつの区別できない症状です。
トライアドはパイプラインを、情報が生き残るか失われるかが決まる3つの場所に分けます。検索、グラウンディング、答え。それぞれが自分の尺度を持つ: コンテキスト関連性、グラウンデッドネス、回答関連性。構造を有用にしているのは、3つが網羅であることではなく(網羅ではありません)、独立 であることです。一方が良く他方が悪いことが起き、起きたとき、チームはどこを見るべきかが分かる。新しい埋め込みモデルを出したら、コンテキスト関連性が動くべき。新しいプロンプトを出したら、グラウンデッドネスが動くべき。動くべきものが動けば、変更が効いたと分かる。単一のエンドツーエンドスコアは、これらをすべて、デバッグできない何かに潰します。
9.2 コンテキスト関連性 — 正しいコンテキストを引けたか
コンテキスト関連性は、検索されたチャンクが問いに 関する ものか、文単位で、LLM ジャッジに採点させます。検索の精度を捉えます — コンテキスト窓のうち関連する素材に費やしている割合。スコアが高いなら、検索器はトークンを浪費していない。低いなら、ノイズを連れ帰っていて、モデルは品質とレイテンシの両方で代価を払います — 長い無関係なコンテキストが生成を劣化させることは繰り返し示されています。
コンテキスト関連性が 捉えない のは再現率です — モデルが本来必要としたチャンクをすべて引けたか。1つの完璧なチャンクを引き、他に何もなければ満点になりますが、答えに2つ必要で2つ目を逃していた、ということが起きえます。再現率は別の問題で、答えを含む文書が分かっているキュレーション集に対して計測します。この章は知っておきたい人工物も名指しします: アグレッシブなチャンキングはコンテキスト関連性を、必ずしも回答を改善しないまま膨張させます。固定 top-k 上の重みなし平均は、4〜10位の無関係チャンクがモデルにほぼ影響しない場合でも、検索器を悪く見せえます。
9.3 グラウンデッドネス — モデルはコンテキストを尊重したか
グラウンデッドネスは、忠実性とも呼ばれ、逆の問いを訊ねます: モデルが生成した主張のうち、検索コンテキストで裏付けられる割合はいくつか。標準計算は、回答を原子的な主張に分解し、各主張についてジャッジに「コンテキストが支持するか」を尋ねます。分解の部分が大事です。長い答えを1ブロックで評価すると、たいてい「全面的に裏付け」か「全面的に裏付けなし」のどちらかに振れて、ジャッジは全体の趣旨が傾く方に解消します。原子的主張は、ジャッジに各主張を独立に評価させ — ほぼ正しい回答に1文だけコンテキストが支持しなかった主張、というよくある失敗を捕まえます。
本章はグラウンデッドネスの非対称さに正直です: 創作は罰するが省略は罰しない。回答を拒否したモデルは満点を取ります。正しくよく裏付けられた回答だが、コンテキストの重要な留保を落としたモデルもまた高得点になります。これはモデルではなくプロンプトの問題を浮上させやすい尺度でもあります。コンテキスト関連性が高くグラウンデッドネスが低いとき、答えはたいていモデルではなくシステムプロンプトにあります — 指示がモデルをコンテキスト内に留めるには柔らかすぎる。モデルを責める前に、プロンプトを締めてください。
9.4 回答関連性と、参照なし評価へのシフト
回答関連性はいちばん誤解されやすい尺度です。正答性は測りません、グラウンディングも測りません。答えが、訊かれた問いに応えているかを測ります。事実として正しい答えが、ちょっと違う問いに答えていたら低得点。丁寧な拒否も低得点。標準計算は巧妙な反転です: 答えが与えられたとき、それがもっともらしい応答となる問いを生成させ、それと元の問いを比較する。近ければオンターゲット、ずれていればモデルが脱線した。
参照なし評価へのシフトがいちばん効くのもここです。これらの尺度のどれも、ラベル付き正解と比較する形では計算できません — 許容される回答の空間は無限で枚挙できないからです。だから分野は LLM-as-a-Judge に収斂しました: フロンティアモデルが、文書化されたプロンプトで各尺度を採点する。手法はスケールし、安く、人の判断とおおむね相関します。同時によく文書化された失敗モードもあります — ペア比較の位置バイアス、長さバイアス、モデル系列バイアス、静かなモデル更新を跨ぐ較正ドリフト、そしてジャッジと生成器が訓練コーパスを共有することで相関した形で失敗する深い問題。防御は技術ではなく運用です: ジャッジモデルとプロンスを固定し、手ラベルの小集合に対して較正し、ジャッジ判定の小さな割合を人手レビューに回し、ジャッジ変更を歴史比較を無効にする再ベースライン事象として扱う。
第9章を踏まえて
トライアドは「何を測るか」の語彙を与えます。実際の計測の運用 — ジャッジのプロンプト、分解のロジック、埋め込みの選択、サンプリングレート、ダッシュボード、アラート — は教えません。それをゼロから組むチームはほとんどなく、過去2年で、トライアドを実践的に計測可能にするフレームワークが少数登場しました。本番評価がどんな手触りであるべきかについて、それぞれの意見を持っています。第10章でそれらを並べて歩きます。
次回 — 第10章: 主要な評価フレームワーク。 RAGAS、TruLens、DeepEval と、可観測性プラットフォーム — 各々何のためのものか、メトリックファーストのライブラリと本番プラットフォームの境界はどこか、そしてまだどれも閉じていない「評価ギャップ」。