Évaluation RAG sur disque (corpus/ + train.json)
Objectif
Guider les agents à travers les benchmarks filesystem de NVIDIA RAG Blueprint : préparer corpus/ et train.json, exécuter scripts/eval/evaluate_rag.py, ajuster les flags de retrieval et de génération pour les comparaisons de qualité, interpréter les sorties JSON RAGAS, et diagnostiquer les défaillances (erreurs HTTP/stream, contextes vides, collection non correspondante, API judge).
Pour les tests de latence, débit et charge, utilisez la skill rag-perf (scripts/rag-perf, docs/performance-benchmarking.md) — pas cette skill.
Quand ne pas utiliser
N'utilisez pas cette skill pour : déployer ou réparer des services (utilisez rag-blueprint) ; évaluer des APIs sans le layout corpus/ + train.json ; expériences ML générales sans lien avec cet évaluateur ; monitoring/alerting en production ; ou benchmarking de latence/débit (utilisez rag-perf).
Prérequis
- Repo cloné ; exécutez les commandes depuis la racine du repo (les imports et chemins supposent cela).
- Python 3.11+ et uv ; dépendances eval :
uv sync --project scripts/eval. - Serveur RAG et ingestor accessibles (par défaut souvent
localhost:8081/8082). NVIDIA_API_KEYpour RAGAS (voir hygiène des credentials) ;RAG_EVAL_JUDGE_MODELoptionnel.- Les racines de dataset passées à
--dataset-pathscontiennent chacunecorpus/ettrain.json.
Instructions
- Préparer les données — Assurez-vous que chaque répertoire de dataset correspond au layout et aux règles de
train.jsondansreferences/dataset-and-conversion.md. Quand les sources arrivent sous forme de liens publics (sites ou pages dataset), matérialisez les documents souscorpus/— préférez PDF pour le contenu multimodal afin que les images restent intégrées ; convertissez CSV/JSONL/etc. en utilisant les patterns là-bas. - Exécuter eval —
uv run --project scripts/eval python scripts/eval/evaluate_rag.pyavec--dataset-paths,--host, et--port. Voirreferences/benchmark-execution.mdpour les exemples de commande, sorties et erreurs. Utilisezreferences/evaluate-rag-cli.mdpour les détails au niveau des flags. - Ajuster la qualité — Modifiez
--top_k/--vdb_top_k, les toggles de reranking et query-rewriting, et les overrides de génération (--temperature,--top-p,--max-tokens) comme documenté dansreferences/benchmark-execution.mdquand vous comparez les configs de retrieval/génération pour les scores RAGAS. - Analyser les résultats — Utilisez
references/result-analysis.mdpour les scripts ; examinezrag_*_evaluation_summary.jsonpour les métriques RAGAS principales. - Diagnostiquer les erreurs — Utilisez le tableau de signaux d'erreur et la section Dépannage ci-dessous.
Exemples
Définir la clé API sans mettre les secrets dans l'historique shell (patterns préférés) : charger depuis un fichier env ignoré par git ou un gestionnaire de secrets ; évitez de commiter .env ; renouvelez les clés si exposées. Détails : references/benchmark-execution.md#credential-hygiene-nvidia_api_key.
Eval minimal (clé déjà dans l'environnement) :
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
Afficher le JSON du résumé en beau format :
python3 -m json.tool results/my_dataset/rag_my_dataset_evaluation_summary.json
Plus d'exemples (ignorer l'ingestion, balayage qualité) : references/benchmark-execution.md.
Limitations
- Le comportement de l'évaluateur est fixe au contrat filesystem et à
evaluate_rag.py; il ne se substitue pas aux judges offline personnalisés ou aux benchmarks non-RAG. - Les choix de Vector DB / embedding suivent l'ingestor déployé et l'environnement RAG — non surpassés par ce CLI seul.
- Les scores dépendent de la qualité du retrieval, la disponibilité du judge model, et
NVIDIA_API_KEY; les contextes vides donnent des métriques RAGAS partielles (voir références). - Les détails procéduraux larges vivent sous
references/pour garder le routage concis ; lisez ces fichiers quand l'utilisateur a besoin d'une conversion pas-à-pas, des flags complets, ou de tables d'erreurs.
Dépannage
| Erreur / signal | Cause probable | Que faire |
|---|---|---|
Sortie immédiate mentionnant NVIDIA_API_KEY |
Clé manquante ou invalide | Définir la clé via un canal sécurisé ; voir hygiène des credentials dans references/benchmark-execution.md. |
train.json must be a JSON array |
Mauvaise forme JSON | Array de niveau supérieur d'objets ; validez per references/dataset-and-conversion.md. |
Moins de lignes dans evaluation_data.json que train.json |
Défaillances par-query | Vérifiez stderr : erreurs réseau ou stream JSON ; voir table d'erreurs dans benchmark-execution. |
generated_contexts vide partout |
Lacune du retrieval | Vérifiez collection, ingestion, top_k / vdb_top_k, et ingestor_server_url sans suffixe /v1. |
| Ingestor 404 sur upload | Mauvaise URL de base ingestor | Passez http://host:port uniquement — le code ajoute /v1/. |
Table de signaux complète : references/benchmark-execution.md#common-error-cases-and-signals.
Pièges
- Exécuter depuis la racine du repo : les chemins et imports dans
scripts/eval/evaluate_rag.pysupposent cela ; un mauvais répertoire casse silencieusement les imports. --ingestor_server_url: passezhttp://host:portsans/v1— le code ajoute/v1/automatiquement. Inclure/v1cause des 404s sur les appels ingestor.- Paramètres Vector DB / embedding : non définis par ce CLI ; configurez via l'ingestor déployé et les vars env du serveur RAG (p.ex.
APP_VECTORSTORE_URL, embedding model). --model/--llm_endpoint: transmis verbatim uniquement quand explicitement définis ; omettez pour garder le LLM configuré du serveur.- Collections obsolètes : les données ingérées d'une précédente exécution persistent sauf si vous utilisez
--force_ingestion. Utilisez--collectionavec un nom unique quand vous comparez la qualité entre exécutions isolées. - Métriques de contexte vide : si tous les
generated_contextssont vides, les scores RAGAS ne calculent quenv_accuracyet laissent les deux autres métriques blanches — ce n'est pas un succès silencieux.
Source de vérité
| Élément | Localisation |
|---|---|
| Driver | scripts/eval/evaluate_rag.py (CORPUS_DIRECTORY = corpus, EVAL_DATA = train.json) |
| README humain (toujours dans-repo) | scripts/eval/README.md |
| CLI complet (flags, défauts) | scripts/eval/evaluate_rag.py --help ; references/evaluate-rag-cli.md |
| Dataset / conversion | references/dataset-and-conversion.md |
| Exécutions, sorties, erreurs | references/benchmark-execution.md |
| Scripts d'analyse de résultats | references/result-analysis.md |
| Latence / débit | Skill rag-perf, docs/performance-benchmarking.md |
Playbook agent
- Exécuter eval —
uv sync --project scripts/evalpuisuv run --project scripts/eval python scripts/eval/evaluate_rag.pyavec les--dataset-paths,--host, et--portrequis (et envNVIDIA_API_KEY). L'argument--ingestor_server_urlest optionnel (par défauthttp://localhost:8082) ; ne le passez que quand vous surpassez l'endpoint ingestor. - Ajustement qualité — Voir
references/benchmark-execution.md:--top_k/--vdb_top_k, toggles de reranker et query-rewriting,--temperature,--top-p,--max-tokens. - Conversion de données — Suivez
references/dataset-and-conversion.md. - Analyser les résultats —
references/result-analysis.md; scan rapide :python3 -m json.tool results/<dataset>/rag_<dataset>_evaluation_summary.json. - Diagnostic d'erreurs —
references/benchmark-execution.md#common-error-cases-and-signals.