Évaluation multi-méthode et arbitrage

Navigator, Agentic-RAG, Summary, Supervisé et CodeChooser sur un même échantillon, chronométrés

Author
Affiliation

Théo Ferry

Insee, SSP Lab

Published

16 September 2026

Contexte

Les pages précédentes évaluent chaque méthode séparément (modèle supervisé sur le jeu d’évaluation complet, diagnostic de l’espace d’embedding pour l’Agentic RAG). Cette page réunit les 4 méthodes de classification du projet — Navigator, Agentic RAG, Summary et le modèle supervisé de production — sur un même échantillon du jeu d’évaluation, et ajoute deux briques transverses :

  • MatchVerifier juge si le code de vérité terrain (apet2025) est lui-même correct, plutôt que de le prendre pour acquis — la vérité terrain d’un jeu de test annoté n’est pas plus fiable a priori que celle du jeu d’entraînement (cf. l’audit des labels d’entraînement dans la présentation).
  • CodeChooser arbitre entre la vérité terrain et les 4 prédictions quand elles ne s’accordent pas déjà toutes sur un seul code.

Chaque appel est chronométré individuellement, ce qui donne une vue concrète du coût en temps de chaque méthode — jusqu’ici non mesuré.

Le script reproductible est src/evaluation/evaluate_eval_set_multi_method.py.

Protocole

  • Échantillon : 60 lignes du jeu d’évaluation (data/eval/eval_set.parquet), graine fixée (seed=123) pour la reproductibilité.
  • Concurrence bornée : jusqu’à 6 appels en vol simultanément par étape (--concurrency 6), pour rester dans un temps raisonnable — chaque appel Navigator/Agentic-RAG/Summary étant lui-même une boucle agentique multi-tours.
  • Étapes, dans l’ordre : MatchVerifier sur la vérité terrain → les 4 classifieurs → arbitrage CodeChooser (dédup des codes par normalize_code, arbitrage sauté si tous les candidats s’accordent déjà).
  • Chaque ligne traitée est journalisée au fil de l’eau (checkpoint JSONL), même rationale que run_eval.py/verify_train_labels.py.

Résultats

Temps par étape

Le run complet a pris environ 1h52 en temps mur (avec concurrency=6) ; le “total (séquentiel)” ci-dessous est la somme des durées individuelles, à titre de coût en temps de calcul plutôt que de temps mur.

Étape Appels Échecs Moyenne Total (séquentiel)
Agentic-RAG 60 0 237.6 s 237.6 min
Summary 60 37 149.1 s 149.1 min
CodeChooser 44 24 132.4 s 97.1 min
Navigator 60 0 76.4 s 76.4 min
MatchVerifier 60 0 5.9 s 5.9 min
Supervisé 60 0 0.3 s 0.3 min

Constat inattendu : Agentic-RAG est en moyenne plus lent que Navigator, alors que son point de départ par similarité d’embedding est censé lui épargner des étapes de navigation. L’explication la plus probable n’est pas une propriété de la méthode elle-même mais la contention créée par concurrency=6 : plusieurs appels multi-tours simultanés vers le même point de terminaison LLM ont provoqué des openai.APITimeoutError répétées, chacune coûtant jusqu’à 60s (le timeout client configuré) avant repli ou nouvelle tentative.

Un écart de robustesse entre les méthodes

Navigator et Agentic-RAG n’ont échoué sur aucune des 60 lignes malgré ces timeouts : ce sont les deux méthodes qui héritent du garde-fou ajouté à BaseClassifier (descente forcée vers une feuille, filet de sécurité anti-non-final, cf. la présentation). Summary et CodeChooser, qui reposent tous les deux sur un simple Runner.run sans boucle Python au-dessus, n’ont pas ce filet : un timeout y interrompt l’appel purement et simplement.

  • Summary : 37/60 échecs (62%) — mais parmi les 23 réponses obtenues, 60.9% correspondent à la vérité terrain (contre 23.3% en comptant les échecs comme faux), donc la méthode n’est pas nécessairement moins précise que les autres, seulement moins fiable dans ces conditions de charge.
  • CodeChooser : 24/44 échecs (55%) sur les lignes nécessitant un arbitrage.

Exactitude par méthode (60 lignes)

Deux références possibles pour juger une méthode : la vérité terrain administrative (apet2025) et le choix final de CodeChooser — disponible sur 36/60 lignes (16 unanimes + 20 arbitrages réussis, cf. répartition ci-dessous). La vérité terrain elle-même est ajoutée comme une méthode parmi les autres : c’est un classifieur humain, au même titre que les 4 automatiques, et elle peut donc se voir contredite par l’arbitrage.

Méthode vs vérité terrain (60 lignes) vs vérité terrain, parmi réponses obtenues vs choix CodeChooser (36 lignes avec décision finale)
Vérité terrain (humain) 75.0% (27/36)
Supervisé 50.0% 55.6% (20/36)
Navigator 46.7% 83.3% (30/36)
Agentic-RAG 45.0% 69.4% (25/36)
Summary 23.3% 60.9% (n=23) 36.1% (13/36)

Navigator rejoint le choix final de CodeChooser plus souvent (83.3%) que la vérité terrain elle-même (75.0%) : quand un arbitrage est nécessaire ou tranchable, CodeChooser donne le plus souvent raison à Navigator plutôt qu’au code administratif ou aux 3 autres méthodes.

La vérité terrain elle-même

MatchVerifier confirme le code de vérité terrain sur seulement 33/60 lignes (55%) — cohérent avec le doute déjà soulevé sur le jeu d’entraînement. La réponse finale (unanime ou arbitrée) ne rejoint la vérité terrain que sur 27/60 lignes (45%) :

Issue Lignes
Unanimes (tous les candidats s’accordent, donc = vérité terrain) 16
Arbitrage réussi, CodeChooser confirme la vérité terrain 11
Arbitrage réussi, CodeChooser corrige la vérité terrain 9
Arbitrage en échec (timeout CodeChooser) 24

Exemples d’arbitrage

CodeChooser reçoit un libellé et une liste de codes candidats dédupliqués (vérité terrain + les 4 prédictions), et rend exactement un de ces codes, avec une confiance et une explication — jamais un code inédit.

Libellé Vérité terrain Navigator Agentic-RAG Summary Supervisé Choix CodeChooser
Réparation d’équipements électriques 3314Y 33.14Y 33.14Y 33.14 3314Y 3314Y
Aménagement intérieur de véhicules, installation et réparation 2920Y 29.32Y 43.31Y 2920Y 29.32Y
Isolation thermique intérieur/extérieur, rénovation générale 4323Y 43.35Y 43.23Y 43.23Y 4323Y 43.35Y
CMPP 4291Y 86.22Y 86.93Y 8694H 86.93Y
Import-export, vente d’appareils électroménagers 4643H 46.43H 46.43H 4754Y 4643H
Conception et fabrication par impression 3D 7411Y 32.99Y 28.97Y 1813Y 32.99Y

✅ = le choix de CodeChooser rejoint la vérité terrain.

À retenir

  1. Le coût en temps est très inégal : de 0.3s (Supervisé) à près de 4 minutes par appel (Agentic-RAG) — un facteur ~800 entre la méthode la plus rapide et la plus lente.
  2. La robustesse aux timeouts n’est pas uniforme : seules Navigator et Agentic-RAG bénéficient du garde-fou de BaseClassifier. Étendre un mécanisme équivalent (retry + repli) à Summary et CodeChooser serait la prochaine amélioration naturelle avant d’augmenter la taille de l’échantillon.
  3. La vérité terrain du jeu d’évaluation mérite le même doute que celle du jeu d’entraînement — moins de la moitié des lignes de cet échantillon la voient confirmée par l’arbitrage final.

Reproduire ce run

uv run -m src.evaluation.evaluate_eval_set_multi_method \
    --n-samples 60 --seed 123 --concurrency 6 \
    --output-dir data/eval/multi_method