RAG評価(RAGAS、Recall@K)
忠実性、回答の関連性、コンテキストの適合率、recall@Kを測定し、変更による改善を確認します。
「RAG評価(RAGAS、Recall@K)」はCoddyKit上の無料AI Agentsレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはAI Agents学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 AI Agentsコースには全4レッスンが含まれています。
測定できないものは改善できない
RAGには、チャンクサイズ、top-K、再ランキングモデル、プロンプト、モデルなど、多くの調整項目があります。指標がなければ、変更はすべて当て推量になります。
RAGの主要な指標
- 検索:適切なチャンクを取得できたか
- 忠実度:回答がチャンクの内容に基づいているか
- 回答の関連性:回答が質問に答えているか
- コンテキストの適合率/再現率:取得したチャンクのうち有用なものの割合
Recall@K
(質問、関連するチャンクIDのリスト)のペアからなるゴールドセットを作成します。取得した上位K件のチャンクに関連するものが含まれる頻度を測定します。
def recall_at_k(eval_set, k=5):
hits = 0
for item in eval_set:
retrieved = retriever(item['question'], k=k)
if any(c.id in item['relevant_ids'] for c in retrieved):
hits += 1
return hits / len(eval_set)Precision@K
取得したチャンクのうち、関連するものは何割でしょうか。
def precision_at_k(eval_set, k=5):
total_relevant = 0
total_retrieved = 0
for item in eval_set:
retrieved = retriever(item['question'], k=k)
total_relevant += sum(1 for c in retrieved if c.id in item['relevant_ids'])
total_retrieved += k
return total_relevant / total_retrievedMRR(Mean Reciprocal Rank)
最初に見つかる関連ドキュメントは、どれほど上位にランク付けされているでしょうか。
def mrr(eval_set, k=10):
total = 0
for item in eval_set:
retrieved = retriever(item['question'], k=k)
for rank, c in enumerate(retrieved, start=1):
if c.id in item['relevant_ids']:
total += 1 / rank
break
return total / len(eval_set)忠実度(LLM-as-Judge)
LLMを使って、回答内の各主張がコンテキストによって裏付けられているかを確認します。
judge_prompt = '''
Given the context and answer, identify each factual claim in the answer.
For each claim, judge whether the context supports it.
Return {claims: [{claim, supported: true/false}]}.
'''
result = judge_llm.invoke(judge_prompt.format(context=ctx, answer=ans))回答の関連性
逆方向の判定です。LLMに「この回答はこの質問への回答になり得ますか」と尋ねます。質問と無関係な出力を検出できます。
RAGASフレームワーク
RAGASを使うと、上記の指標を自動化できます。
# pip install ragas
from ragas import evaluate
from ragas.metrics import faithfulness, answer_relevancy, context_precision, context_recall
results = evaluate(
dataset, # HF dataset with question, contexts, answer, ground_truth
metrics=[faithfulness, answer_relevancy, context_precision, context_recall]
)
print(results)ゴールドセットの構築
人手で厳選した20〜200個の(質問、期待される回答、関連チャンク)タプルを用意します。次の内容を網羅してください。
- 一般的なクエリ
- エッジケース
- 敵対的な入力(コーパス外の質問)
合成評価セット
ブートストラッピングとして、LLMにドキュメントからQ&Aペアを生成させます。品質は低くなりますが、高速です。
synth_prompt = 'Read this document and write 3 questions a user might ask, with answers from the doc:\n{doc}'
# Use as a starting point; humans curate later.
print(synth_prompt)
LangSmithとLangfuseのデータセット
どちらのツールでも、本番環境のトレースを評価用データセットに変換できます。うまくいかなかった実際の質問を50件選び、正しい回答をラベル付けして、ベンチマークとして使います。
1つの指標を過度に最適化しない
Recall@Kを最大化すると、Precision@Kが低下することがあります(偽陽性が多くなるため)。複数の指標と複合指標を追跡してください。
本番環境でのA/Bテスト
ユーザー満足度と相関するオフライン評価を用意できたら、本番環境で変更をA/Bテストし、指標とユーザーの高評価率の両方を比較できます。
Recall@Kの定義
Recall@5 = 0.8は何を意味するでしょうか。
まとめ
ゴールドセットを構築します。Recall@K、Precision@K、MRR、忠実度、回答の関連性を測定します。RAGASを使って自動化し、指標に基づいて反復的に改善します。
AI チューターと学ぶ AI Agents — 無料
ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。
- コース
- 60
- レッスン
- 239
よくある質問
「RAG評価(RAGAS、Recall@K)」レッスンは無料ですか?
はい。「RAG評価(RAGAS、Recall@K)」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、AI Agentsコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 AI Agentsコースには全4レッスンが含まれています。
「RAG評価(RAGAS、Recall@K)」で何を学びますか?
忠実性、回答の関連性、コンテキストの適合率、recall@Kを測定し、変更による改善を確認します。 ブラウザで直接実行するハンズオンコードでAI Agentsを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
AI Agentsを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのAI Agentsは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。
「RAG評価(RAGAS、Recall@K)」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このAI Agentsレッスンでコードを書いて実行できますか?
はい。すべてのAI Agentsレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- Cross-Encoderによる再ランキング
- HyDE:仮想ドキュメントEmbedding
- マルチベクトル検索(ColBERT)
- RAG評価(RAGAS、Recall@K)