JA EN
体系RAG・検索拡張
·★ 会員·論文·16分で読めます

RAG評価の実務 — 「なんとなく良い」を数字にする

RAGの改善が迷子になるのは、良し悪しを一つの感覚で見ているからだ。検索と生成を切り離して測る指標、忠実性と関連性の定義、合成QAで評価セットを作る手順とその落とし穴、そして何問あれば数字を信じてよいのかまでを1から積み上げる。

対象textタスクevaluation

RAGAS: Automated Evaluation of Retrieval Augmented Generation

一次資料 — この記事の根拠

この解説の公開 2026-08-27

RAGAS: Automated Evaluation of Retrieval Augmented GenerationarXiv:2309.15217論文ページ·PDF

新人が出してきた報告書を、どこで見るか

新人に「うちの育休制度、配偶者が自営業の場合どう扱われるか調べて」と頼んだとします。30分後に報告書が返ってきました。ざっと読んで「まあ良さそうだね」で終わらせると、次にもっと良い報告書が出てくる保証はどこにもありません。何が良かったのか、本人にも伝わっていないからです。

上司として見るべき点は、少なくとも三つに分かれています。

  1. そもそも該当する資料に辿り着けたか。 就業規則の第8章を一度も開いていないなら、そこから先は全部あてずっぽうです。
  2. 開いた資料に書いてあることだけで書いたか。 もっともらしい一文が、実はどの資料にも書かれていない — これが一番タチの悪い失敗です。
  3. 聞いたことに答えているか。 育休制度の一般論を丁寧にまとめてあっても、配偶者が自営業の場合の話が無ければ報告書としては不合格です。

RAG(検索拡張生成)の評価は、これとまったく同じ構造をしています。仕組み全体はRAGの基礎と設計パターンで扱ったので、この記事は「では、どうやって数字にするか」だけを1から積み上げます。

一つの数字では、直すべき場所が分からない

RAGを一本の箱として見て、最終回答の良さだけを採点したとします。スコアが0.62でした。さて、明日から何を直しますか。

答えられません。RAGは少なくとも二段構えで、失敗の起き方が四通りあるからです。

生成が正しい 生成が誤り
検索が当たり 正解 生成側の問題(無視・誤読・幻覚)
検索が外れ まぐれ(モデルの記憶で当てた) 検索側の問題

右の二つは、まったく別の対処を要求します。右上ならプロンプトや生成モデル、右下ならチャンク設計や埋め込みモデルです。そして左下の「まぐれ」が最も危険です。評価セットが有名な一般知識ばかりだと、検索が壊れていてもスコアが下がらないからです。社内文書のRAGを一般常識の質問で評価すると、この罠にまっすぐ落ちます。

だから原則は一つ。検索と生成を切り離して測る。 順番も決まっていて、検索が正解を持ってこられない質問は生成側をどれだけ磨いても正答できません。まず検索を単体で健全化してから、生成を見る。

検索を測る: 入っているか、上にあるか

検索側の評価は、各質問に「正解チャンク」の集合を紐づけておくところから始まります。ある質問 qq に対する正解チャンクの集合を GG、検索が返した上位 kk 件を RkR_k と書きます。

Recall@k=RkGG\mathrm{Recall@}k = \frac{|R_k \cap G|}{|G|}
(1)

言い換えると、「本来拾ってほしかった資料のうち、上位k件に何割が入っていたか」です。分母が正解の総数なので、正解が3件あって1件しか拾えなければ0.33になります。生成の上限を決めるのはこの数字で、ここが0.6なら回答の正解率は原理的に0.6を超えません(まぐれを除いて)。

ただしRecall@kは順位を見ていません。1位に正解があっても10位にあっても同じ値です。実際にはコンテキストの前の方に置かれた文書ほど参照されやすいので、順位も測りたい。そこで使うのが nDCG@k です。まず順位を割り引きながら関連度を足し上げます。

DCG@k=i=1krelilog2(i+1)\mathrm{DCG@}k = \sum_{i=1}^{k} \frac{\mathrm{rel}_i}{\log_2(i+1)}
(2)

reli\mathrm{rel}_iii 位の文書の関連度(無関係なら0、関連なら1、強く関連なら2、といった点数)、log2(i+1)\log_2(i+1) は順位が下がるほど大きくなる割引です。1位は log22=1\log_2 2 = 1 でそのまま、2位は約1.58で割られ、8位なら約3.17で割られます。つまり下の順位で当てても点が薄くなるという式です。これを「理想的に並べたときのDCG」で割って0〜1に揃えたものがnDCGです。

もう一つ、現場でよく使う MRR(Mean Reciprocal Rank)は「最初の正解が何位に出たか」の逆数の平均です。3位なら 1/31/3。1件だけ正解があればいい種類の質問(FAQ検索など)にはこちらが素直です。

ここで見落としやすいのが、距離指標の選び方だけで上位の顔ぶれが変わることです。下の図でクエリ点をドラッグし、内積・コサイン・L2を切り替えてみてください。同じ文書集合でも top-5 が入れ替わります。Recall@kは、こういう地味な設定の差をきちんと数字にしてくれます。

FIG 1クエリをドラッグして距離指標を切り替える。正規化していないベクトルを内積で引くと、長いベクトル(=長いチャンク)が実力以上に上位へ割り込む

チャンクの切り方そのものが検索結果を左右する話はチャンキング戦略にありますが、そこで比較の物差しとして使うのが、いま定義したRecall@kとnDCG@kです。

生成を測る: 忠実性と関連性

検索が健全になったら、次は生成です。ここで測りたいのは冒頭の2番と3番、つまり忠実性(Faithfulness)回答関連性(Answer Relevance)です。この二つは独立していて、片方だけ高い状態が普通に起こります。

忠実性は「回答の各主張が、渡したコンテキストから裏付けられるか」です。測り方の基本形は、回答を一文ずつの主張に分解して、それぞれをコンテキストと突き合わせる方式です。

Faithfulness=コンテキストで裏付けられた主張の数回答に含まれる主張の総数\mathrm{Faithfulness} = \frac{\text{コンテキストで裏付けられた主張の数}}{\text{回答に含まれる主張の総数}}
(3)

つまり「言ったことのうち、何割に証拠があるか」。回答全体を「幻覚あり/なし」の二値で見ないのがポイントです。実務の回答は5文中4文が正しく1文だけ捏造、という形で壊れます。二値で見るとその1文を見逃すか、逆に全体を不正解にして改善の手がかりを失うかのどちらかになります。

RAGASが提供する主要な指標は、いま見た軸で整理すると分かりやすくなります。

この先にあるもの

§

ここから先は会員限定です

解説記事371本・教科書26章・学生モード48単元・論文精読6本が、月額¥490ですべて読み放題になります。新しい解説は毎日3本ずつ増えます。いつでも解約でき、解約後も期間の終わりまで読めます。

会員の方はログインすると続きが表示されます

参考文献

  1. RAGAS: Automated Evaluation of Retrieval Augmented Generation. arXiv:2309.15217論文ページ·PDF

本記事は上記論文の本文にもとづいて執筆しています。数値・主張は原典を優先してください。

コメント

コメントにはログインが必要です