3行でいうと

  • RAGの評価は、探す段階(取れたか、順番はよいか)と、答える段階(資料の通りか、質問に合うか)に分けます。
  • RAGASの忠実性は「答えの中の主張のうち、取れた資料で裏づけられた割合」です。正しいかどうかではありません。
  • 判定をAIにさせる指標は、人間との一致が完全ではありません。RAGAS論文では0.70〜0.95でした。
  • Anthropicは、探す段階を「上位20件に正解の資料が入らなかった割合」で測っています。

この記事は、実際に使って確かめた記録ではありません。この記事は公式の文書や論文を読んでまとめたものです。

先に結論

前提:RAGと、評価に出てくる言葉

RAG(検索拡張生成)は、質問に関係する資料をまず探し(検索)、その資料をAIに渡して答えさせる(生成)方式です。長い社内文書をAIに読ませたいときによく使われます。

RAGASの論文(arXiv 2309.15217)は、RAGの評価が難しい理由を、見るべき面が複数あるためだと述べています。論文が挙げる面は、取った資料が関係あって絞れているか、LLMがその資料を忠実に使えているか、生成そのものの質です。

2つの段階と、4つの指標

RAGASの公式文書の説明を、表にまとめました。指標は、おおむね0から1の範囲です(NoiseSensitivityだけ、低いほうがよい。Response Relevancyは、文書によると0から1に収まるとは限りません)。

段階 指標 何を測るか(文書の説明) 正解(reference)の要否
探す Context Precision 取れた資料のうち、関係あるものが上位に並んでいるか 参照回答または参照資料があるとき。ないときの版もある
探す Context Recall 必要な情報のうち、取れた資料で裏づけられる割合 必要(参照回答を主張に分けて確認)
答える Faithfulness 答えの主張のうち、取れた資料で裏づけられる割合 文書の例では使っていない
答える Response Relevancy 答えが質問の意図に合っているか。事実の正しさは見ない 不要

ここで大事な点が3つあります。

  1. Faithfulnessは「正しいか」ではなく「資料の通りか」です。 公式の式は、「答えの中の主張のうち、取れた資料から導ける数」÷「答えの中の主張の総数」です。資料自体が古ければ、資料の通りに答えても、現実とは違います。
  2. Response Relevancyは、事実の正しさを評価しません。 文書は、質問の意図に合っているか、余計な内容や不足がないかを見ると説明しています。答えから「想定質問」を3つ作り、元の質問との意味の近さ(埋め込みの類似度)を測る方式です。
  3. Context Recallは、正解がないと計算できません。 参照回答を主張に分け、各主張が取れた資料の中で裏づけられるかを確認します。したがって、評価用の「正解つきの質問」を作る手間は避けられません。
数字の例(僕らの計算です)

僕らの計算です。公式の式に簡単な数字を当てはめた例です。

Context Precision(順番が効く)。 3つの資料を取り、関係ある資料が1位と3位のとき、各位置の適合率は1位で1、3位で2/3です。式は「関係ある位置の適合率の合計 ÷ 関係ある資料の数」なので、(1 + 2/3) ÷ 2 ≒ 0.83になります。同じ3つでも、関係ある資料が2位と3位だと、(1/2 + 2/3) ÷ 2 ≒ 0.58に下がります。取れた中身は同じでも、並びが悪いと点が下がります。

Faithfulness。 答えに4つの主張があり、取れた資料で裏づけられるのが3つなら、3÷4 = 0.75です。RAGASの文書の例では、「アインシュタインは1879年3月20日にドイツで生まれた」という答えは、資料が3月14日と書いているので、2つの主張(ドイツ生まれ、3月20日生まれ)のうち1つだけ裏づけられ、0.5になります。

Context Recall。 参照回答が3つの主張に分かれ、取れた資料で裏づけられるのが2つなら、2÷3 ≒ 0.67です。

この3つの例は、指標の意味を示すための計算です。実際の点は、判定を行うAIの出来で変わります。

「探す」だけを測る別の方法

Anthropicの「Contextual Retrieval」の記事は、探す段階の失敗を1 − recall@20で測っています。つまり、上位20件に正解の資料が入らなかった割合です。同じ記事の数字は、埋め込みだけの場合の失敗率が5.7%、文脈をつけた埋め込みとBM25(単語の一致による検索)を組み合わせた場合が2.9%、さらに再順位付け(reranking、取った候補を並べ直す処理)を加えた場合が1.9%でした。これはAnthropicが自分たちのデータで測った数字で、他のデータにそのまま当てはまるとは限りません。

見立てです。この方式の良いところは、AIによる採点を使わないことだと思います。「この質問の正解はこの資料」と決めておけば、取れたかどうかは機械的に数えられます。判定のぶれが入りません。

AIの判定器そのものを作る方法もあります。ARES(NAACL 2024の論文、arXiv 2311.09476)は、資料の関連性、答えの忠実性、答えの関連性を測るために、自分で作った合成データで軽量な判定用モデルを学習させ、少数の人間の注釈で誤りを補正する方式です。論文の抄録によると、人間の注釈は数百件で足りるとされています。ただし、この記事は、実際に使って確かめた記録ではありません。

評価セットの作り方

OpenAIの評価の文書は、資料に対する質問応答(Q&A over docs)の評価設計の例として、次を挙げています。

RAGASには、評価用の質問を資料から自動で作る機能(testset generation)があります。公式文書は、1つの資料で答えられる質問(single-hop)と、複数の資料を結びつける必要がある質問(multi-hop)を区別しています。見立てです。自動生成の質問は、最初の足がかりに使い、中身を人間が読んで、正解の資料を確認してから評価に使うのが安全だと思います。

切り分けの表(見立てです)

見立てです。症状から、どちらの段階を疑うかを整理します。

症状 疑う段階 確かめること
正しい資料があるのに、答えが「資料にない」と言う 探す 正解の資料が上位に入っているか(recall、順位)
資料にない内容を、もっともらしく書く 答える Faithfulness。答えの主張を1つずつ資料と照らす
資料の通りだが、質問に答えていない 答える Response Relevancy。質問の意図を取り違えていないか
関係ない資料が大量に混じる 探す Context Precision。取る件数、閾値、再順位付けを見直す
古い資料の内容で答える 資料そのもの 評価の外。資料の更新日と版管理を確認

よくあるつまずき

気をつけること

出典

更新履歴