🍉

RAGAS:9つの指標と評価方法をコードを見ながらざっくり解説する

2024/07/28に公開

概要

本記事ではRAGASの概念や評価方法について論文や公式ドキュメンテーションの引用を交えながらざっくり解説していきます。

RAGASとは

RAGAS (Retrieval Augmented Generation Assessment)は2023年9月に提案されたRAGの評価を行うためのフレームワークです。

https://docs.ragas.io/en/latest/index.html

RAGASの特徴として、

  • 多角的な視点でRAGシステムの評価を行う
    • 関連性の高いコンテキストを取得できているかどうか
    • LLMが取得したコンテキストを忠実に活用できているか
    • 生成した回答の品質が高いかどうか
  • コンテキストについてアノテーションデータを必要としない(RAGにおいてどのコンテキストを取得することが正解なのかを定めなくて良い)

があります。

Evaluating RAG architectures is, however, challenging because there are several dimensions to consider: the ability of the retrieval system to identify relevant and focused context passages, the ability of the LLM to exploit such passages in a faithful way, or the quality of the generation itself.
With RAGAS, we put forward a suite of metrics which can be used to evaluate these different dimensions without having to rely on ground truth human annotations.

なぜアノテーションデータがないのに評価できるのか?

RAGASはRAGの性能を様々な視点による自動評価することができます。
なぜアノテーションデータがないにも関わらず自動で評価できるのかというと、内部的にOpenAI APIのようなLLMのAPIに評価用のプロンプトを投げているからです。

We now explain how these three quality aspects can be measured in a fully automated way, by prompting an LLM. In our implementation and experiments, all prompts are evaluated using the gpt-3.5-turbo-16k model, which is available through the OpenAI API.

次にRAGASの評価指標を見てみましょう。

RAGASの評価指標

文献では、

  • Faithfulness
  • Answer Relevance
  • Context Relevance
    の3つの指標が定義されています。

しかしRAGASのツールは拡張が行われており、2024/07/28現在は以下の9つの指標が定義されています。

  • Faithfulness
  • Answer Relevance
  • Context relevance
  • Context Precision🆕
  • Context Recall🆕
  • Context Entities Recall🆕
  • Answer Semantic Similarity🆕
  • Answer Correctness🆕
  • Aspect Critique🆕
  • Summarization Score🆕

ここからそれぞれの指標をどのように計算しているかを見ていきます。

1. Faithfulness

Faithfulnessは、生成された回答が与えられたコンテキスト(RAGで取得した情報)に基づいているかを図る指標です。
https://docs.ragas.io/en/latest/concepts/metrics/faithfulness.html

2. Answer Relevance

Answer Relevanceは、生成された回答が元の質問にどれだけ適切であるかを評価する指標です。
https://docs.ragas.io/en/latest/concepts/metrics/answer_relevance.html

3. Context Precision

Context Precisionは、コンテキスト内に存在する正解の関連アイテム(チャンク)が高順位にランク付けされているかどうかを評価する指標です。
https://docs.ragas.io/en/latest/concepts/metrics/context_precision.html

  • Step 1: 取得されたコンテキスト内の各チャンクが質問に関連しているかどうかを評価する
    • 例:
    (元の質問)「フランスはどこにありますか?」
    →チャンク 1: 「日本には47都道府県あります」❌Not Relevant
    →チャンク 2: 「首都はパリです」⭕Relevant
    →チャンク 3: 「フランスはヨーロッパの国です」⭕Relevant
    
  • Step 2: コンテキスト内の各チャンクに対してprecision@kを計算する
    • 例:Precision@1 = 0/1 = 0, Precision@2 = 1/2 = 0.5
  • Step 3: precision@kの平均(Context Precision)を計算する
    • 例:Context Precision = (0 + 0.5)/1 = 0.5

4. Context Recall

Context Recallは、取得されたコンテキストが正解とどの程度一致しているかを測定する指標です。基本的なステップはFaithfulnessと類似しています。
https://docs.ragas.io/en/latest/concepts/metrics/context_recall.html

  • Step 1: 正解を個々のstatementに分解する
    • 例:
    (正解)「フランスは西ヨーロッパにあります。首都はパリです。」
      →statement 1: 「フランスは西ヨーロッパにあります。」
      →statement 2: 「首都はパリです。」
    
  • Step 2: Step 1で取得したstatementがコンテキストに基づいているかを評価する
  • Step 3: Step 2の評価に基づいてRecallを計算する
    ― 例:statement 1が⭕Yes, statement 2が❌Noの場合、Context Recallは1/2=0.5になる。

5. Context entities recall

Context entities recallは、正解とコンテキストの両方に存在するエンティティの数を基に、取得されたコンテキストのrecallを評価する指標です。
つまり、正解にコンテキストのエンティティがどの程度含まれているかを測定します。
この指標は観光案内デスクや歴史的な質問応答などの事実ベースのユースケースで役立ちます。
https://docs.ragas.io/en/latest/concepts/metrics/context_entities_recall.html

  • Step 1: 正解の回答に存在するエンティティを抽出する
    • 例:
    Entities in ground truth (GE): [‘Taj Mahal’, ‘Yamuna’, ‘Agra’, ‘1631’, ‘Shah Jahan’, ‘Mumtaz Mahal’]
    
  • Step 2: 取得したコンテキストに存在するエンティティを抽出する
    • 例:
    Entities in context (CE1): [‘Taj Mahal’, ‘Agra’, ‘Shah Jahan’, ‘Mumtaz Mahal’, ‘India’]
    Entities in context (CE2) - [‘Taj Mahal’, ‘UNESCO’, ‘India’]
    
  • Step 3: Step 1で抽出したGEとStep 2で抽出したCEのRecallを計算する

上述の例では、CE1は正解に含まれるエンティティであるGEを多く含むため、エンティティのカバレッジが良く、Recallが高くなっています。
これらの2つのコンテキストが同じセットのドキュメントから取得された場合、エンティティが重要なユースケースでは、『CE1のメカニズムがCE2のメカニズムよりも優れている』と言えます。

6. Answer Semantic Similarity

Answer Semantic Similarityは、生成された回答と正解の意味的な類似性を評価する指標です。この評価は正解と生成された回答に基づき、値は0から1の範囲内で与えられ、スコアが高いほど生成された回答と正解の整合性が高いことを示します。
https://docs.ragas.io/en/latest/concepts/metrics/semantic_similarity.html
指定された埋め込みモデルを使用して、正解のベクトル化を行います。

  • Step 1: 指定された埋め込みモデルを使用して、正解のベクトル化を行う
  • Step 2: 同じ埋め込みモデルを使用して、生成された回答のベクトル化を行う
  • Step 3: 2つのベクトル間のコサイン類似度を計算する

7. Answer Correctness

Answer Correctnessは、生成された回答の正確性を正解と比較して評価するものです。
Answer Semantic Similarityとの違いは、生成された回答と正解の類似度をベクトルで評価するのではなく、回答に含まれるstatement単位のF値で評価する点です。
https://docs.ragas.io/en/latest/concepts/metrics/answer_correctness.html

  • Step 1: 生成された回答と正解に含まれるstatementからTP, FP, FNを抽出する
    • TP (True Positive): 正解と生成された回答の両方に存在するstatement
    • FP (False Positive): 生成された回答に存在するが、正解には存在しないstatement
    • FN (False Negative): 正解には存在するが、生成された回答には存在しないstatement
    • 例:
    正解: 「アインシュタインは1879年にドイツで生まれました。」
    生成された回答: 「アインシュタインは1879年にスペインで生まれました。」
    
    TP: [アインシュタインは1879年に生まれた]
    FP: [アインシュタインはスペインで生まれた]
    FN: [アインシュタインはドイツで生まれた]
    
  • Step 2: Step 1で判定したTP, FP, FNを用いてF1スコアを算出する
  • Step 3: Answer Semantic Similarityとの重み付き平均を算出する

8. Aspect Critique

Aspect Critiqueは、harmfulnessやcorrectnessなどの事前に定義された視点に基づいて評価を行う指標です。
https://docs.ragas.io/en/latest/concepts/metrics/critique.html
デフォルトでサポートされている評価視点は以下の5つです。(独自の視点を追加することも可能なようです)

  • harmfulness
  • maliciousness
  • coherence
  • correctness
  • conciseness
  • Step 1: 評価視点に基づいたプロンプトを用いて、LLMで複数回評価を行う
  • Step 2: Step 1の判定結果の多数決を取る
    • 例:Step 1の3回の評価結果が①⭕Yes, ②❌No, ③⭕Yesだった場合、Outputは⭕Yesとなる

9. Summarization Score

Summarization Scoreは、コンテキストから重要な情報をどれだけうまく取り入れられているかを評価する指標です。この指標はRAGがsummarizationの用途で用いられている場合に適切な評価指標です。
https://docs.ragas.io/en/latest/concepts/metrics/summarization_score.html
この指標は**『良いサマリーはコンテキスト(またはテキスト)に含まれる重要な情報をすべて含むべき』**という考えが反映されています。

評価指標のまとめ

指標 説明 元の質問 コンテキスト 生成された回答 正解
Faithfulness 生成された回答が与えられたコンテキストに基づいているかを評価する指標。
生成された回答に含まれるstatementがコンテキストに基づいているかのYes/NoのAccuracyをとる。
Answer Relevance 生成された回答が元の質問にどれだけ適切であるかを評価する指標。
生成された回答から逆に質問を生成し、元の質問とのコサイン類似度との平均を計算する。
Context Precision コンテキスト内に存在する正解の関連アイテムが高順位にランク付けされているかを評価する指標。
コンテキスト内のチャンクと元の質問の関連判定のPrecision@kの平均をとる。
Context Recall 取得されたコンテキストが正解とどの程度一致しているかを測定する指標。
正解をstatementに分解し、個々のstatementがコンテキストに基づいているかのRecallを計算する。
Context Entities Recall 正解とコンテキストの両方に存在するエンティティの数を基にrecallを評価する指標。
Answer Semantic Similarity 生成された回答と正解の意味的な類似性を評価する指標。Answer Correctnessとの重み付き平均をとる。
Answer Correctness 生成された回答の正確性を正解と比較して評価する指標。Answer Semantic Similarityとの重み付き平均をとる。
Aspect Critique 特定の視点(harmfulnessやcorrectnessなど)に基づいて評価を行う指標。
評価視点に基づいてLLMでYes/Noの評価を行い、評価結果の多数決をとる。
Summarization Score サマリーがコンテキストから重要な情報をどれだけうまく取り入れているかを評価する指標。
コンテキストに含まれるキーフレーズを抽出し、キーフレーズを元に生成した質問に生成されたサマリーが答えられた政党数を計算する。

Discussion