上級 13 分最適化

RAG:ローカルRAGの評価を、 chiffres

端的な回答

Ragasは、ドキュメント検索パイプラインの品質を、忠実性、回答の関連性、コンテキストの適合率と再現率という指標で数値化するオープンソースのPythonライブラリです(Apache 2.0ライセンス、GitHubで15,000を超えるスター)。評価用モデルと埋め込みモデルをローカルで動かすことで、全体をローカル環境で実行できます。そのため、評価するだけのためにドキュメントや回答を外部サービスへ送信する必要がありません。

数値がないままでは、文書検索パイプラインの調整は手探りになります。チャンクサイズを変え、埋め込みモデルを変更し、3つの質問への回答を見て感覚で判断することになります。Ragasは、こうした直感を数値で確かめられるPythonライブラリです。回答の質が悪いときに、原因が検索にあるのか、モデルにあるのかも切り分けられます。すべてローカルモデルで動作させることができるため、評価のために文書を外部サービスに送らずに済みます。

著者 Mohamed Meguedmi·更新 2026-09-29·Windows・macOS・Linuxでテスト済み

#「良さそう」だけでは不十分な理由

Ragasは、Apache 2.0ライセンスで提供されるオープンソースのPythonライブラリで、文書検索パイプラインの品質を数値化します。評価するのは、提供された文章に対する回答の忠実度、質問に対する関連性、取得したコンテキストの適合率と再現率です。これにより、検索側の誤りとモデル側の誤りを切り分けられます。Ollamaで提供するローカルモデルを評価役として動作させることもできます。ただし、そのモデルがRagasの要求する構造化出力形式に従い、コンテキストに質問、参照文章、回答のすべてを収められることが条件です。導入前に3つの点を押さえてください。スコアは同じシステムの2つのバージョンを比較するためのもので、絶対的な品質を採点するものではありません。テストセットはライブラリよりも重要です。そして、オンラインのチュートリアルには旧APIと新APIが混在しています。

回答が誤っている場合、同じ症状の背後にはまったく異なる2つの原因があります。取得した文章に情報が含まれていなかったか、情報は含まれていたのにモデルが的外れな回答をしたかのどちらかです。修正方法は同じではありません。前者ではチャンク分割と埋め込みを、後者ではモデルとプロンプトを調整します。測定しなければ手探りで修正することになり、3つの質問で改善しても、他の5つの質問では悪化していることに気づけません。

もう一つの落とし穴は比較です。「270億パラメータのモデルは、この場合、本当に優れているのか?」という問いに答えるには、議論するのではなく、同じ質問セットをもう一度実行します。それを可能にするのが、再現可能な評価です。RagasはGitHubで15,000を超えるスターを獲得しています。PyPIで公開されている最新バージョンは、2026年1月13日付の0.4.3で、リポジトリは別のGitHub組織(vibrantlabsai)へ移っています。使用するバージョンを固定してください。

#重要となる4つの測定項目

ローカルRAGキット

あなたのドキュメント、あなたのAI:あなたのPDF、メモ、メールを扱う信頼性の高いローカルRAG。何もクラウドに送信しません。

  • 永久に利用できるオンラインスペース
  • PDF + ファイル
  • 生涯アップデート
各指標で何が診断できるか
測定質問値が低下したときに示す問題測定に必要な入力
忠実性回答全体が、提供された文章によって裏付けられていますか?スコア:裏付けのある主張数 ÷ 回答内の主張の総数モデルが情報を捏造したり、外挿したりする質問、回答、取得された文章
回答の関連性回答は、尋ねられた質問に答えていますか?判定役は回答から3つの質問を生成し、それぞれと元の質問との類似度を比較します。プロンプトまたはモデルがテーマから外れている質問、回答、および埋め込みモデル
コンテキストの適合率役立つ文章の抜粋がランキングの上位に配置されているか?各順位での適合率の平均検索結果にノイズが混じる、または順位付けが適切でない質問、取得時の順序に並べたパッセージ、参照回答
コンテキスト再現率必要な情報をすべて取得できたか?取得した文章で裏づけられる、参照回答の主張の割合分割が細かすぎる、しきい値が厳しすぎる、埋め込みが不適切質問、文章の抜粋、参照回答

Ragasのドキュメントでは、回答の関連性は正確性を評価するものではないと明記されています。測るのは質問にどれだけ適合しているかだけで、不完全な回答や不要な詳細が多い回答は減点されます。そのため、回答の関連性は忠実性の代わりにはなりません。これらの数値は、組み合わせて読み解くことで役に立ちます。再現率が低く、忠実性が高い場合は、情報を捏造せずに答えているものの、十分な情報が与えられていないシステムを示します。検索・取得の部分を改善する必要があります。忠実性が低く、再現率が高い場合は、その逆です。情報はあったのに、モデルが話を作り足しています。この2つは、処理の流れのそれぞれ反対側にある段階で修正する必要があります。

i
忠実度は最初に確認すべき指標です
業務では、もっともらしくてもでたらめな回答は、回答がないことよりも大きな損失につながります。「文書には記載されていません」と認める処理チェーンのほうが、優れた回答を出していても、ときどき何の断りもなく間違える処理チェーンより望ましいのです。

#テストデータセットの構築

ここは手間のかかる部分で、何の影響もなく自動化できるわけではありません。有用なデータセットには、ユーザーが実際に尋ねた質問を、不器用な言い回し、独自の略語、入力ミスもそのまま含めます。ドキュメントを書いた人がきれいに言い換えた質問ではありません。

  1. 01
    実際の利用で出てきた質問から始める
    実際の使用場面から得られる30〜50の質問は、作り出された200の質問よりも価値があります。失敗した質問も含めてください。それらが最も教育的です。
  2. 02
    参照回答を記述
    各質問に対して、正解を一文または二文で記述します。Ragas はこれをコンテキストのリコール率を推定するために使用します。LLM ベースのバージョンでは、この参照を期待されるパッセージの代替として使用するため、パッセージを一つずつアノテーションする必要がありません。
  3. 03
    回答のないケースを保持する
    コーパスに答えが含まれていない質問です。良いシステムは、答えがないことを明示すべきです。こうしたケースがなければ、その能力を測定することはできません。
  4. 04
    評価用データセットを固定する
    システムを変更する際に、評価用の問題セットまで変更してはいけません。そうすると、時点間の比較ができなくなります。

Ragasは、コーパスそのものから合成テストセットを作るための生成支援機能も提供しています。ドキュメントでは、シングルホップの質問(単一の情報源)とマルチホップの質問(複数の情報源を結び付ける必要があるもの)を区別し、具体的な質問と抽象的な質問も扱っています。公式ガイドでは、英語以外の言語のコーパスに適応させる方法を、スペイン語を例に紹介しています。実際のユーザーの質問が十分に蓄積される前に、最初の評価を始めるためのものです。便利な出発点ではありますが、決して実際の質問の代わりにはなりません。すべて合成されたテストセットでは、不自然な言い回しや入力ミスが抜け落ちます。まさにそうしたものが、文書検索の実際の弱点を明らかにするのです。

#すべてをローカルで実行

Ragasは評価に2つのモデルを使用します。質問、文章の抜粋、回答を読む評価モデルと、類似度の測定に使う埋め込みモデルです。RagasのクイックスタートではデフォルトでOpenAIを使用しますが、Ollamaを使う方法も紹介しています。接続先をhttp://localhost:11434/v1に設定したOpenAI互換クライアントを、llm_factory関数に渡します。埋め込みモデルが必要なのは回答の関連性だけで、忠実度、コンテキストの適合率と再現率には評価モデルだけを使用します。

ローカルの評価モデルが信頼できるためには、2つの条件があります。1つ目は構造化出力です。現在の評価指標では、評価モデルに、指定された形式で中間的な判断を出すことを求めます(主張の抽出、判定など)。ローカルモデルが通常の文章で回答してこの要件を満たせないと、JSONエラーや空のスコア(NaN)が生じます。OneUptimeのガイドでは、一連の評価を始める前に、ごく小さな呼び出しで評価モデルをテストすることを勧めています。モデルの最小サイズを定めた公式情報はありません。ご自身で検証する必要があります。2つ目はコンテキストです。Ollamaは、VRAMが24 GiB未満の場合、デフォルトで4,000トークンのコンテキスト長を適用します。ドキュメントでは、負荷の高いタスクにはこの値(変数 OLLAMA_CONTEXT_LENGTH)を増やすことを勧めています。コンテキスト長を超えてしまう評価モデルは、実際には切り詰められたテキストを採点しています。

Python:ローカルジャッジ(Ragas の現在の API)
# pip install ragas openai
from openai import AsyncOpenAI
from ragas.llms import llm_factory
from ragas.metrics.collections import Faithfulness, ContextRecall

# Client compatible OpenAI pointé sur Ollama (la clé est un simple libellé)
client = AsyncOpenAI(api_key="ollama", base_url="http://localhost:11434/v1")
juge = llm_factory("mistral", provider="openai", client=client)  # nom du modèle tiré avec ollama pull

fidelite = Faithfulness(llm=juge)
resultat = fidelite.score(
    user_input="Où se trouve la tour Eiffel ?",
    response="La tour Eiffel se trouve à Paris.",
    retrieved_contexts=["La tour Eiffel est située à Paris, en France."],
)
print(resultat.value)  # entre 0 et 1
→
闇雲にやり直すより、過去の実行を再現する
評価を実施するたびに、テストしたシステムとRagasのバージョンを記載した日付付きファイルに結果を保存してください。そうすれば、6か月後にも「コンテキストの精度はいつから低下したのか?」に答えられ、ユーザーからの苦情をきっかけに低下を再発見する事態を避けられます。
!
古いAPI、テレメトリ
多くのチュートリアルでは、今もLangchainLLMWrapperとevaluate関数を使っています。これは旧APIで、ドキュメントではバージョン0.4で非推奨となり、1.0で削除されると案内されています。もう一点、Ragasはデフォルトで匿名化された利用データを収集しますが、変数RAGAS_DO_NOT_TRACKをtrueに設定すれば無効にできます。オフラインで行う必要がある評価では、この変数をtrueに設定してください。

#結果を正しく読み取る

これらは指標であり、点数ではありません
忠実性スコアが0.82でも、「回答の82%が正しい」という意味ではありません。この数値は、同じシステムの2つのバージョンを比較するためのもので、絶対的な品質を保証するものではありません。
ジャッジにはバイアスがあります
LLMを評価者として使う手法についての代表的な論文(arXiv 2306.05685)は、回答の提示位置、冗長さ、自己選好に関するバイアスを説明しています。評価を繰り返す際は、同じ評価者を使い続けてください。そうしないと、結果の差はシステムではなく評価者の違いを測ることになります。
1回の評価だけでは何も証明できません
生成結果は変動します。小さなテストセットで数百分の誤差はノイズと見なせます。
手動でいくつかの事例を確認してください
数値はどこに注目すべきかを示しますが、何が問題なのかまでは教えてくれません。一連の評価で結果が最も悪かった10件からは、全体の平均値よりも多くのことを学べます。
二つの評価方法とその有用性
方法これによって得られるものその制限
いくつかのケースを人がレビュー重要な判断に関わるテーマで、唯一の実質的な品質確認規模の拡大に対応できず、評価を実施するたびに専門家の時間を要する
ローカル評価モデル(Ragas)再現可能で、インストール後は無料。2つのバージョンを素早く比較できます位置、冗長さ、自己選好によるバイアスがあります。スコアは絶対的な真実を示すものではありません。
ユーザー評価(親指を立てる)実際の使用状況を反映しており、無料で収集可能ですフィードバックが少ないことが多く、「いいね」だけではどの段階で失敗したか分かりません

#具体的なユースケース

分割サイズを選ぶ
チャンクのサイズを256、512、1024トークンの順に変えて同じテストセットを再実行すると、未検証の好みで選ぶのではなく、構成ごとの再現率を数値で得られます。
エンベディングモデルの変更を検証する
新しい埋め込みモデルであっても、一般ベンチマークで優れていると発表されても、あなたの特定のコーパスにおけるコンテキストの精度を低下させる可能性があります。その点は、ローカルでのテストによってのみ確認できます。
リランカーの追加を正当化する
リランキング前後のコンテキストの精度を比較すれば、改善の効果を数値化できます。そうしなければ、会議で共有される印象にとどまってしまいます。
コーパス更新後の性能低下を追跡する
新しいドキュメントの追加は検索の精度を低下させる可能性があります。毎回インポート後に固定されたテストデータを再実行することで、ユーザーが気づく前に性能の低下を検出できます。
2つのサービス提供業者またはアーキテクチャから選ぶ
同じ文書処理パイプラインを構築するための2つの競合案を比べる場合、同じテストセットと同じコーパスで得られたスコアを使えば、営業デモよりも早く優劣を判断できます。

#キャンペーンの管理

評価の実施頻度
分割方法、埋め込みモデル、生成モデルのいずれかを変更するたびに実施します。安定したシステムでは、毎日評価を実施する必要はありません。
テストコーパスのサイズ
質問セットは小規模なままです。一方、評価対象の文書コーパスは、本番環境のコーパスを現実に即して再現したコピー、またはそのコーパス全体である必要があります。
キャンペーンの実際のコスト
各メトリクスではジャッジが複数回呼び出されます(忠実度の場合:アサーションの抽出、および各アサーションの検証)。そのため、コストは質問数とメトリクス数の積に比例して増加します。50問の実行前に5問で計時を行い、その結果に基づいてキャンペーンを計画してください。

#この方法の限界

モデルを使った評価とは、ある人工知能に別の人工知能を評価させることです。この方法は有用で低コストですが、完全ではありません。性能の後退を検出し、複数のバリエーションを順位付けできます。ただし、事実誤認が責任問題につながる重要な分野では、人間によるレビューの代わりにはなりません。また、評価を実施するたびに計算時間を消費します。ユーザーへのサービス提供にも使っているマシンでは、利用が集中する時間帯を避け、夜間や週末など負荷が低いときに実行します。

冗長性バイアスについては、直感に反するため、もう少し説明が必要です。OneUptimeの記事では、長い回答の中では、評価役が評価基準のキーワードを引用し、網羅的に見せ、説得力のある根拠を示す機会が増えると説明されています。そのため、評価対象のモデルにより長い回答を促すプロンプトは、ユーザーへの回答を改善しなくても、スコアを上げる可能性があります。忠実性については、RagasのドキュメントでもHHEM-2.1-Openを使った別方式が紹介されています。これはVectaraが提供する、ハルシネーション検出用の小型で無料の分類器です。検証の段階を専用モデルに置き換えるもので、ローカルの評価役が不安定な場合に試してみるとよいでしょう。

最も簡単な対策は、測定方法をそろえることです。ある評価者で得た忠実度スコアを、別の評価者で得たスコアや第三者が公表したスコアと比較してはいけません。数値が意味を持つのは、同じ評価者、同じ評価プロンプト、同じバージョンの指標を使った、同一の測定条件の中だけです。これは内部比較のための道具であり、普遍的なランキングではありません。

#FAQ

Ragas はクラウドモデルを使わずに動作しますか?+
はい。ただし、ローカルの評価モデルを明示的に設定する必要があります。このライブラリはApache 2.0ライセンスで公開され、GitHubで15,000を超えるスターを獲得しています。クイックスタートではOpenAIをデフォルトで使用しますが、ガイドではOllamaを接続先にしたOpenAI互換クライアントの例が示されています。埋め込みモデルが必要なのは、回答の関連性を評価する場合だけです。テレメトリを無効にするには、RAGAS_DO_NOT_TRACKを有効にしてください。
テストセットには何問必要ですか?+
実際の質問を30から50件用意すれば、明らかなリグレッションを検出するための実用的な基盤として十分です。それ以上の場合、価値はテスト対象のドキュメンテーションチェーンに投げかけられる質問の総数よりも、ケースの多様性(コーパス内に回答が存在しない質問を含む)から生まれます。
最初に確認すべき測定値はどれですか?+
まずは忠実性です。誤りに責任が伴う業務の場では、でっち上げの回答は、回答がない場合よりも大きな損失につながるからです。次に見るのはコンテキストの再現率です。これは、回答の表現を評価する前に、そもそも回答時に必要な情報が利用可能だったかどうかを示します。
Ragas を使って2つのモデルを比較できますか?+
はい、これは特に有用な使い方の一つです。同じ質問セット、同じコーパス、同じ評価者を使い、生成モデルだけを変更します。より大きなモデルによって、ご自身の実際の文書に対する回答が改善するかどうかを確かめるには、これが唯一の適切な方法です。
ローカルで動作する評価用モデルは信頼できますか?+
2つのバージョンを比較するには十分な信頼性があります。ただし、Ragasが要求する構造化出力の形式に従うこと(個別の呼び出しでテストしてください)と、読む必要のある内容がすべてコンテキストに収まることが条件です。OllamaはVRAMが24 GiB未満の場合、デフォルトで4,000トークンを適用します。重要な判断に関わるテーマでの人間によるレビューに代わるものではなく、位置、冗長性、自己選好のバイアスもあります。
Ragasは自動的にテストデータセットを生成できますか?+
はい。このライブラリには、コーパスから合成質問を生成する支援機能があります。実際の質問が十分に蓄積される前に、最初の評価を始めるのに役立ちます。ただし、ユーザーが実際に尋ねた質問の代わりにはなりません。ユーザーのぎこちない言い回しによって明らかになる弱点は、整った合成データセットでは決して同じようには表れません。
このガイドは役に立ちましたか?

ご意見、誤りのご指摘、補足はありますか?ぜひお知らせください。皆さんにとってより良いガイドにするために役立ちます。