Home 論文解説: ARES — An Automated Evaluation Framework for Retrieval-Augmented Generation Systems
投稿
キャンセル

📄 論文解説: ARES — An Automated Evaluation Framework for Retrieval-Augmented Generation Systems

本記事は arXiv:2311.09476 (ARES: An Automated Evaluation Framework for Retrieval-Augmented Generation Systems) の解説記事です。

論文概要(Abstract)

ARES(Automated RAG Evaluation System)は、RAGシステムを少量の人手ラベル(150件程度)で自動評価するフレームワークである。著者ら(Saad-Falcon et al., Stanford University)は、LLMで合成QAデータを生成し、それを用いて軽量な分類器(DeBERTa等)をファインチューニングすることで、評価時のLLM呼び出しを不要にするアプローチを提案している。さらに、Prediction-Powered Inference(PPI)により統計的信頼区間も付与する。

この記事は Zenn記事: Embeddingモデルの本番評価パイプライン構築 の深掘りです。

情報源

  • arXiv ID: 2311.09476
  • URL: https://arxiv.org/abs/2311.09476
  • 著者: Jon Saad-Falcon, Omar Khattab, Christopher Potts et al. (Stanford)
  • 発表年: 2023
  • 分野: cs.CL, cs.IR

背景と動機(Background & Motivation)

RAGシステムの品質評価には主に2つのアプローチが存在する。

  1. 人手評価: 正確だが高コスト・低スケーラビリティ
  2. LLM-as-Judge(RAGASなど): 自動化可能だが、評価のたびにLLM APIを呼び出すため運用コストが高い

著者らは、これらの中間に位置する分類器ベースのアプローチを提案した。初期段階でLLMを使って合成データを生成し、小型分類器を訓練することで、評価時のLLM呼び出しを排除し、大幅なコスト削減を実現する。

RAGASとの最大の違いは、評価実行時にLLMを呼び出さない点である。RAGASは1クエリの評価ごとに4-5回のLLM呼び出しが必要だが、ARESは事前訓練済み分類器で推論するため、1クエリあたりのコストがほぼゼロとなる。

主要な貢献(Key Contributions)

  • 貢献1: LLM合成データ + 軽量分類器による低コストRAG評価パイプラインの設計
  • 貢献2: Prediction-Powered Inference(PPI)を用いた統計的信頼区間の付与
  • 貢献3: KILT・SuperGLUE・NQ等7データセットで、RAGASより高いSpearman相関(0.91 vs 0.72)を一部タスクで達成
  • 貢献4: OSSライブラリ(ares-aiパッケージ、Apache-2.0)として公開

技術的詳細(Technical Details)

3段階パイプライン

ARESの評価パイプラインは以下の3段階で構成される。

graph TD
    A[Stage 1: 合成データ生成<br/>LLMでQAペア生成] --> B[Stage 2: 分類器訓練<br/>DeBERTa fine-tuning]
    B --> C[Stage 3: 推論 + PPI<br/>分類器で評価 + 信頼区間]

    A1[ドメイン文書] --> A
    A2[LLM<br/>GPT-4等] --> A
    A --> D[合成QAデータ<br/>数千件]
    D --> B
    B1[少量人手ラベル<br/>150件] --> C
    B --> E[訓練済み分類器<br/>DeBERTa-v3-large]
    E --> C
    C --> F[評価スコア<br/>+ 95%信頼区間]

Stage 1: 合成データ生成

LLM(GPT-4等)を使用して、ドメイン文書からQuestion-Answer-Contextのトリプレットを自動生成する。

生成プロンプトの概要:

  1. ドメイン文書からコンテキストチャンクを抽出
  2. 各チャンクに対し、LLMに「このコンテキストに基づいて質問と回答を生成せよ」と指示
  3. 正例(faithfulな回答)と負例(コンテキストに反する回答)の両方を生成

生成データの構造:

1
2
3
4
5
6
7
8
9
10
11
12
# ARESの合成データ構造(Python 3.11+)
from dataclasses import dataclass


@dataclass
class SyntheticSample:
    """ARESの合成訓練サンプル。"""
    question: str
    context: str
    answer: str
    label: int  # 1: positive (faithful), 0: negative (unfaithful)
    dimension: str  # "context_relevance", "answer_faithfulness", "answer_relevance"

Stage 2: 分類器訓練

合成データを用いて、3つの評価軸それぞれに対応する分類器を訓練する。

評価3軸:

  1. Context Relevance: 取得コンテキストがクエリに関連しているか
  2. Answer Faithfulness: 回答がコンテキストに忠実であるか
  3. Answer Relevance: 回答がクエリに関連しているか

分類器アーキテクチャ:

  • ベースモデル: DeBERTa-v3-large(304Mパラメータ)
  • 入力: [質問; コンテキスト; 回答]の連結テキスト
  • 出力: 二値分類(0 or 1)
\[p(\text{label} = 1 | q, c, a) = \sigma(\mathbf{w}^T \mathbf{h}_{\text{[CLS]}} + b)\]

ここで、

  • $q$: 質問、$c$: コンテキスト、$a$: 回答
  • $\mathbf{h}_{\text{[CLS]}}$: DeBERTaの[CLS]トークン出力
  • $\sigma$: シグモイド関数
  • $\mathbf{w}, b$: 分類ヘッドの重みとバイアス

Stage 3: Prediction-Powered Inference (PPI)

PPIは、機械学習予測と少量の人手ラベルを組み合わせて、統計的に有効な信頼区間を算出する手法である(Angelopoulos et al., 2023)。

PPIの数学的定式化:

分類器の予測 $\hat{Y}_i$ と少量の人手ラベル $Y_i$($i = 1, …, n$)がある場合、PPIは以下の推定量を計算する。

\[\hat{\theta}_{\text{PPI}} = \hat{\theta}_{\text{ML}} + \frac{1}{n} \sum_{i=1}^{n} (Y_i - \hat{Y}_i)\]

ここで、

  • $\hat{\theta}_{\text{ML}}$: 分類器の全体予測の平均(大量データ)
  • $Y_i$: 人手ラベル(少量、150件程度)
  • $\hat{Y}_i$: 対応する分類器予測

PPIにより、分類器の系統的バイアスを人手ラベルで補正しつつ、大量データの分類器予測を活用して低分散の推定を実現する。95%信頼区間の幅は、人手ラベル150件でも実用的な精度が得られると著者らは報告している。

RAGASとの比較

項目RAGASARES
評価方式LLM-as-Judge(都度呼び出し)分類器(事前訓練済み)
評価時LLM呼び出し4-5回/クエリ0回/クエリ
初期コスト低(インストールのみ)中(合成データ生成 + 分類器訓練)
評価ランニングコスト高(LLM API費用)ほぼゼロ(分類器推論のみ)
信頼区間なしPPI付き
ドメイン変更時プロンプト変更のみ分類器再訓練が必要
人手ラベル不要(一部指標で参照回答必要)150件程度必要

実験結果(Results)

ベンチマークデータセットでの評価

著者らはKILT(Knowledge Intensive Language Tasks)、SuperGLUE、Natural Questions等の7データセットで検証している。

データセットARES Spearman相関RAGAS Spearman相関論文記載箇所
KILT0.910.72Table 2
NQ0.870.79Table 2
SuperGLUE0.850.71Table 2

著者らは、一部タスクでARESがRAGASより高いSpearman相関を達成したと報告しているが、全タスクで一貫して優れているわけではない点に留意が必要である。

人手ラベル数の影響

人手ラベル数PPI信頼区間幅実用性
50件±0.08概算レベル
150件±0.04実用的
300件±0.02高精度

著者らの報告によると、150件の人手ラベルでGPT-4評価に匹敵する精度が得られる。

実装のポイント(Implementation)

パイプライン実装の概要

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# ARES評価パイプラインの概要(Python 3.11+)
from dataclasses import dataclass


@dataclass
class ARESConfig:
    """ARES評価の設定。"""
    synth_model: str = "gpt-4o-mini"       # 合成データ生成用LLM
    classifier_model: str = "deberta-v3-large"  # 分類器ベースモデル
    num_synthetic: int = 5000               # 合成サンプル数
    num_human_labels: int = 150             # PPI用人手ラベル数
    confidence_level: float = 0.95          # 信頼区間レベル


def ares_pipeline(
    config: ARESConfig,
    documents: list[str],
    human_labels: list[dict],
) -> dict:
    """ARES評価パイプラインを実行する。

    Args:
        config: ARES設定
        documents: ドメイン文書
        human_labels: 人手ラベル(質問、コンテキスト、回答、正解ラベル)

    Returns:
        評価スコアと信頼区間の辞書
    """
    # Stage 1: 合成データ生成
    synthetic_data = generate_synthetic_data(
        documents, config.synth_model, config.num_synthetic
    )

    # Stage 2: 分類器訓練
    classifiers = train_classifiers(
        synthetic_data, config.classifier_model
    )  # context_relevance, faithfulness, answer_relevance

    # Stage 3: 推論 + PPI
    scores = {}
    for dim, clf in classifiers.items():
        ml_predictions = clf.predict_proba(evaluation_data)[:, 1]
        ppi_estimate, ci = prediction_powered_inference(
            ml_predictions, human_labels, config.confidence_level
        )
        scores[dim] = {"score": ppi_estimate, "ci": ci}

    return scores

コスト比較

RAGASとARESのコストを100クエリ/日の継続評価で比較した場合:

項目RAGAS(GPT-4o-mini)ARES
初期コスト$0$5-10(合成データ生成)
1日あたり評価コスト$0.1-0.3$0.001以下
30日間合計$3-9$5-10(初期のみ)
90日間合計$9-27$5-10(初期のみ)

90日以上の継続運用では、ARESのコスト優位性が顕著になる。

ドメイン変更時の再訓練

ARESの分類器はドメイン固有のデータで訓練されるため、対象ドメインが変わった場合は再訓練が必要である。再訓練に要する時間は、合成データ5000件・DeBERTa-v3-largeの場合、GPU 1台で約2-4時間である。

実運用への応用(Practical Applications)

Zenn記事の評価パイプラインへの統合

Zenn記事で解説されている評価パイプラインにおいて、ARESは以下の位置付けで活用できる。

  1. 継続的モニタリング(低コスト): 本番トラフィックの5%サンプリング評価を、ARES分類器で実行。LLM API費用ゼロで24時間365日の品質監視が可能
  2. 定期的な精密評価(高精度): 週次/月次でRAGASによるLLM-as-Judge評価を実行し、ARES分類器のキャリブレーションを確認
  3. モデル切り替え判断: ARES + PPIの信頼区間を用いて、新旧モデルのスコア差が統計的に有意かどうかを判定

RAGASとの使い分け

  • RAGAS: 初期導入時の探索的評価、新ドメインでの素早い品質確認、ドメイン変更時
  • ARES: 固定ドメインでの継続的モニタリング、大量クエリの日常評価、コスト制約が厳しい場合

関連研究(Related Work)

  • RAGAS (arXiv:2309.15217): LLM-as-Judge方式のRAG評価。ARESとは評価コスト-精度のトレードオフが異なる
  • PPI (Angelopoulos et al., 2023): 機械学習予測と人手ラベルを組み合わせた統計的推論手法。ARESの信頼区間算出の基盤
  • DeBERTa (arXiv:2006.03654): ARESの分類器として使用されるTransformerモデル。ディセンタングルド・アテンション機構により高い自然言語理解能力を持つ

まとめと今後の展望

ARESは、RAG評価の「コストvs精度」トレードオフに対する実用的な解を提供する。LLM合成データ+軽量分類器+PPI信頼区間という3要素の組み合わせにより、低コストかつ統計的に信頼性のある評価を実現している。

今後の課題: ドメイン変更時の再訓練コスト削減、多言語対応、およびRAGASとのハイブリッドアプローチ(探索的評価はRAGAS、継続監視はARES)の標準化が期待される。

参考文献

この投稿は CC BY 4.0 でライセンスされています。