# Atelier : annoter un jeu d’évaluation RAG

Exemple Nymphar du 13 octobre 2026. Produit Orion, documentation, questions, avis et arbitrages entièrement fictifs. Aucun modèle ou annotateur humain benchmarké.

## Exécution

Python 3.10+, bibliothèque standard uniquement. Aucun réseau ni clé API.

```bash
python3 valider_annotations.py --self-test
python3 valider_annotations.py jeu-annotation.json > rapport.json
```

Attendu : valid=true ; 6 questions, 6 passages, 5 groupes ; dev=3 et test=3 ; 11 paires déclarées, dont 10 avec deux avis ; 2 désaccords avant arbitrage ; accord brut=0.8 ; 1 paire explicitement non jugée et 25 paires non listées, également non jugées. Aucun score de retrieval ou de réponse finale n’est calculé.

## Règles du format

- Question : id, group_id, split (dev/test), corpus_version, formulation, answerability (answerable/unanswerable/clarify), reference_facts, evidence_sets, expected_behavior.
- Une question answerable exige des faits et au moins un ensemble de preuves. Tous les passages d’un ensemble sont nécessaires ; les ensembles sont des alternatives. Ici chaque ensemble n’a qu’un passage.
- Unanswerable signifie que la réponse manque au corpus autorisé. Clarify demande une précision. Ces deux états gardent les faits et ensembles vides, avec un comportement attendu renseigné.
- Note 0 : inutile dans le périmètre ; 1 : contexte ou élément partiel ; 2 : preuve directement exploitable. La note 2 ne prouve pas seule la complétude d’une réponse complexe.
- null et paire absente : non jugé. Jamais convertis automatiquement en 0.
- Tout désaccord finalisé ou changement de l’avis commun exige un arbitre et une raison. Un export de travail peut conserver final=null ; ce rapport le rend visible.
- Les deux avis restent distincts de l’arbitrage. Le rapport d’accord porte sur les avis initiaux non nuls.
- Chaque groupe reste dans un seul lot. Le regroupement sémantique doit être décidé avant l’export.
- L’empreinte de chaque passage est le SHA-256 de son champ text encodé en UTF-8. L’empreinte ne certifie ni l’origine ni l’exactitude du texte.

## Essais négatifs

Copier le JSON. Déplacer q1b vers test : erreur de groupe dev/test, sortie 1. Restaurer puis vider reason de la première annotation : erreur d’arbitrage, sortie 1. Le self-test automatise ces deux erreurs et six autres sur des copies en mémoire, sans modifier les fichiers.

## Limites

Contrôle structurel, pas validation sémantique. Ne prouve ni pertinence, représentativité, exhaustivité, qualité des faits ni absence de doublons inconnus. Le corpus source peut être commun aux lots si la cible est de nouvelles questions sur des documents connus ; l’étude de nouveaux documents requiert une séparation supplémentaire. Six questions ne permettent aucune conclusion statistique de production.

Adapter les consignes, rôle et périmètre à votre besoin. Les cas à vérifier restent dans votre processus de travail jusqu’à arbitrage, avant export dans ce format limité. Conserver les versions des annotations et du corpus avec les résultats. Après exercice, supprimer les copies locales inutiles.
