rag-eval について
rag-evalは、`corpus/`と`train.json`を使い、NVIDIA RAG Blueprintのファイルシステムベースの品質評価を行うスキルです。データ準備、設定比較、結果分析、エラー調査を案内し、性能テストは対象外です。
主な機能
- 01`corpus/`と`train.json`のデータ準備
- 02`evaluate_rag.py`によるベンチマーク実行
- 03検索と生成設定の調整
- 04RAGAS評価結果の確認
- 05評価エラーの調査
活用シーン
- 01検索・生成設定の比較
- 02ローカルデータセットでのRAG品質測定
- 03空のコンテキストや失敗したクエリの調査
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ promptingcompany/ nv-skills --skill rag-evalインストール後、Claude Code で/rag-evalを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
BENCHMARK.mdskill-card.mdskill.oms.sigeval/h100.jsonnvidia_hosted.jsonreferences/benchmark-execution.mddataset-and-conversion.mdevaluate-rag-cli.mdresult-analysis.md詳細
オンディスク RAG 評価(corpus/ + train.json)
目的
NVIDIA RAG Blueprint のファイルシステムベンチマークについて、エージェント向けに説明します。corpus/ と train.json の準備、scripts/eval/evaluate_rag.py の実行、品質比較のための検索・生成フラグの調整、RAGAS JSON 出力の解釈、エラー(HTTP/ストリームエラー、空のコンテキスト、コレクションの不一致、ジャッジ API)の切り分けを扱います。
レイテンシ、スループット、負荷テストには、rag-perf スキル(scripts/rag-perf、docs/performance-benchmarking.md)を使用してください。このスキルは使用しないでください。
使用しない場合
以下の場合、このスキルは使用しないでください。サービスのデプロイや修復(rag-blueprint を使用してください)、corpus/ + train.json のレイアウトを使用しない API の評価、この評価ツールに関係のない一般的な ML 実験、本番環境の監視/アラート、レイテンシ/スループットのベンチマーク(rag-perf を使用してください)。
前提条件
- リポジトリがクローン済みであること。コマンドはリポジトリのルートから実行してください(インポートとパスはこの前提です)。
- Python 3.11+ と uv。評価用依存関係:
uv sync --project scripts/eval。 - 接続可能な RAG サーバー と ingestor(デフォルトは
localhost:8081/8082の場合が多いです)。 - RAGAS 用の
NVIDIA_API_KEY(認証情報の管理を参照)。RAG_EVAL_JUDGE_MODELは任意です。 --dataset-pathsに渡す各データセットのルートに、corpus/とtrain.jsonが含まれていること。
手順
- データを準備する — 各データセットディレクトリが、
references/dataset-and-conversion.mdに記載されているレイアウトとtrain.jsonの規則に従っていることを確認します。データソースが公開リンク(サイトやデータセットのページ)として提供される場合は、ドキュメントをcorpus/の下に配置します。マルチモーダルコンテンツでは、画像を埋め込んだままにできるため、PDF を推奨します。CSV/JSONL などは、同ファイルのパターンに従って変換します。 - 評価を実行する —
--dataset-paths、--host、--portを指定して、uv run --project scripts/eval python scripts/eval/evaluate_rag.pyを実行します。コマンド例、出力、エラーについてはreferences/benchmark-execution.mdを参照してください。フラグの詳細はreferences/evaluate-rag-cli.mdを参照してください。 - 品質を調整する — RAGAS スコアで検索/生成の設定を比較する際は、
references/benchmark-execution.mdの説明に従って、--top_k/--vdb_top_k、リランカーとクエリ書き換えの切り替え、生成のオーバーライド(--temperature、--top-p、--max-tokens)を調整します。 - 結果を分析する — スクリプトについては
references/result-analysis.mdを参照し、主要な RAGAS メトリクスはrag_*_evaluation_summary.jsonを確認します。 - エラーを切り分ける — エラーシグナルの表と、以下のトラブルシューティングセクションを参照してください。
例
シェルの履歴にシークレットを残さずに API キーを設定する(推奨方法): Git で追跡対象外の環境ファイルまたはシークレットマネージャーから読み込みます。.env をコミットしないでください。キーが漏えいした場合はローテーションしてください。詳細:references/benchmark-execution.md#credential-hygiene-nvidia_api_key。
最小限の評価(キーはすでに環境に設定済み):
uv sync --project scripts/eval
uv run --project scripts/eval python scripts/eval/evaluate_rag.py \
--dataset-paths /path/to/my_dataset \
--host localhost \
--port 8081
サマリー JSON を整形して表示する:
python3 -m json.tool results/my_dataset/rag_my_dataset_evaluation_summary.json
その他の例(取り込みのスキップ、品質の一括評価):references/benchmark-execution.md。
制限事項
- 評価ツールの動作はファイルシステムの仕様と
evaluate_rag.pyに固定されており、カスタムのオフラインジャッジや RAG 以外のベンチマークの代わりにはなりません。 - ベクトル DB/埋め込みの選択は、デプロイ済みの ingestor と RAG の環境変数に従います。この CLI だけでは上書きされません。
- スコアは検索品質、ジャッジモデルの利用可否、
NVIDIA_API_KEYに依存します。コンテキストが空の場合、RAGAS メトリクスは一部のみ算出されます(参考資料を参照)。 - 手順の詳細は**
references/**以下に記載されています。案内を簡潔に保つため、段階的な変換手順、すべてのフラグ、エラー一覧が必要な場合は、それらのファイルを参照してください。
トラブルシューティング
| エラー/シグナル | 考えられる原因 | 対処方法 |
|---|---|---|
NVIDIA_API_KEY に言及して即時終了する | キーがない、または無効です | セキュアな経路でキーを設定してください。認証情報の管理については、references/benchmark-execution.md を参照してください。 |
train.json must be a JSON array | JSON の形式が正しくありません | トップレベルをオブジェクトの配列にしてください。references/dataset-and-conversion.md に従って検証してください。 |
evaluation_data.json の行数が train.json より少ない | クエリごとの処理に失敗しています | stderr を確認してください。ネットワークまたはストリーム JSON のエラーが考えられます。benchmark-execution のエラー表を参照してください。 |
generated_contexts がすべて空 | 検索に問題があります | コレクション、取り込み、top_k/vdb_top_k、および /v1 サフィックスのない ingestor_server_url を確認してください。 |
| アップロード時に Ingestor が 404 を返す | Ingestor のベース URL が正しくありません | http://host:port のみを渡してください。コードが /v1/ を追加します。 |
シグナルの全表については、references/benchmark-execution.md#common-error-cases-and-signals を参照してください。
注意点
- リポジトリのルートから実行してください:
scripts/eval/evaluate_rag.py内のパスとインポートはこれを前提としています。作業ディレクトリが間違っていると、インポートが警告なく失敗します。 --ingestor_server_url:http://host:portを渡し、/v1は付けないでください。コードが自動的に/v1/を追加します。/v1を含めると、Ingestor への呼び出しで 404 が発生します。- ベクトル DB/埋め込み設定:この CLI では設定されません。デプロイ済みの Ingestor と RAG サーバーの環境変数(例:
APP_VECTORSTORE_URL、埋め込みモデル)で設定してください。 --model/--llm_endpoint:明示的に設定した場合にのみ、そのまま転送されます。サーバーに設定済みの LLM を使うには省略してください。- 古いコレクション:
--force_ingestionを使わない限り、前回の実行で取り込まれたデータは残ります。実行ごとの品質を比較する際は、一意の名前を--collectionに指定してください。 - コンテキスト指標が空:
generated_contextsがすべて空の場合、RAGAS はnv_accuracyのみを採点し、ほかの 2 つの指標は空欄のままになります。これはエラーのない成功ではありません。
正式な情報源
| 項目 | 場所 |
|---|---|
| ドライバー | scripts/eval/evaluate_rag.py(CORPUS_DIRECTORY = corpus、EVAL_DATA = train.json) |
| 人間向け README(常にリポジトリ内) | scripts/eval/README.md |
| CLI 全体(フラグ、デフォルト値) | scripts/eval/evaluate_rag.py --help、references/evaluate-rag-cli.md |
| データセット/変換 | references/dataset-and-conversion.md |
| 実行、出力、エラー | references/benchmark-execution.md |
| 結果分析スクリプト | references/result-analysis.md |
| レイテンシ/スループット | rag-perf スキル、docs/performance-benchmarking.md |
エージェント向け手順
- 評価を実行する —
uv sync --project scripts/evalを実行し、続けて必須の--dataset-paths、--host、--port(および環境変数NVIDIA_API_KEY)を指定してuv run --project scripts/eval python scripts/eval/evaluate_rag.pyを実行します。引数--ingestor_server_urlは省略可能です(デフォルトはhttp://localhost:8082)。Ingestor のエンドポイントを変更する場合にのみ指定してください。 - 品質を調整する —
references/benchmark-execution.mdを参照してください。--top_k/--vdb_top_k、リランカーとクエリ書き換えの切り替え、--temperature、--top-p、--max-tokensについて説明しています。 - データを変換する —
references/dataset-and-conversion.mdに従ってください。 - 結果を分析する —
references/result-analysis.mdを参照してください。簡易確認にはpython3 -m json.tool results/<dataset>/rag_<dataset>_evaluation_summary.jsonを実行します。 - エラーを切り分ける —
references/benchmark-execution.md#common-error-cases-and-signalsを参照してください。