Optimiser le RAG pour les documents juridiques : leçons de l'Agentic RAG Legal Challenge
L'équipe de développement a testé le RAG sur un corpus de documents juridiques provenant du défi Agentic RAG Legal. L'objectif principal était d'améliorer la justesse des références et la précision des citations. Les documents provenant du DIFC (arrêts de justice, lois, actes réglementaires) ont été extraits à partir de fichiers PDF en utilisant une conversion visuelle en images, puis traités en Markdown via Qwen 3.5-9b sur un Mac Studio M3 Ultra.
Le découpage sémantique alimenté par les embeddings FRIDA (denses) et GTE (creux) a divisé 30 documents en environ 2 000 fragments. Chaque fragment contient :
- texte : une idée ou un fait complet
- chemin : identifiant du document source
- contexte : description du contenu environnant dans le document
Le contexte est généré par un modèle LLM (Qwen), qui reçoit à la fois le fragment et le document entier. Cette approche compense la perte de cohérence lors du découpage. Les embeddings sont stockés dans Qdrant. L'indexation de 30 documents a pris environ 2 heures, avec un goulot d'étranglement lié à la latence de pré-remplissage pendant la génération du contexte (15 à 20 secondes par fragment localement).
Pipeline de génération des réponses
Pour chaque requête :
- Intention : le modèle LLM génère des requêtes alternatives.
- Sélection : vectorisé via FRIDA/GTE, cherché dans Qdrant avec RRF, renvoyant les meilleurs fragments. Le LLM les rétroclasse et filtre les pertinents.
- Réponse : les fragments filtrés sont envoyés au LLM avec des instructions pour répondre et citer explicitement les numéros de fragment pour assurer la justesse.
Critères de notation du concours : Total = (0,7 × S_det + 0,3 × S_asst) × G × T × F. Le facteur clé G (justesse) valide la référence aux numéros de page. S_det mesure la précision des réponses déterministes (booléen, date, nom, nombre). S_asst évalue la qualité du texte libre via une notation basée sur un LLM.
Résultats expérimentaux et benchmarks
15 essais préliminaires (30 documents, 100 questions) ont montré une progression du RAG de base vers des versions optimisées. Itérations clés :
| Version | S_det | S_asst | G | Total |
|--------|--------|---------|---|--------|
| v3 (GPT-5.4) | 0,843 | 0,667 | 0,451 | 0,362 |
| v5 (CAG Qwen 1M) | 0,971 | 0,553 | 0,563 | 0,403 |
| v6 (BM25) | 0,943 | 0,540 | 0,390 | 0,269 |
| v7 (BM25 + RRF sémantique) | 0,871 | 0,567 | 0,717 | 0,468 |
| v11 (MORAG v3) | 1,000 | 0,680 | 0,757 | 0,664 |
| v15 (finale) | 0,986 | 0,733 | 0,901 | 0,780 |
G a progressé de 0,45 à 0,90 — cette amélioration a été décisive. Le BM25 pur a performé le plus faiblement (Total : 0,269). CAG (prompt complet avec 350K tokens dans Qwen 3.5-Flash) excellait en S_det (0,971) mais échouait sur la justesse.
Le RAG intégré d'OpenAI sur PDF a obtenu 0,362 — précision acceptable, mais citations médiocres.
Comparaison des approches : RAG vs alternatives
- BM25 : recherche rapide par mots-clés (TF-IDF), mais ignore le sens — faible G (0,390).
- CAG : contexte complet dans le prompt (1M tokens), haut S_det, mais justesse compromise sans références explicites.
- RAG hybride (MORAG) : FRIDA/GTE + RRF + rétroclassement par LLM + raisonnement adapté au type de question. A atteint 1,000 S_det et 0,901 G.
Élément agent : après sélection, le modèle décide autonomement les prochaines étapes (activation/désactivation du raisonnement, fixation de cartes).
MORAG (github.com/catonmoon/morag) a surpassé le RAG intégré d'OpenAI/Grok sur tous les critères.
Le Mac Studio M3 Ultra a géré efficacement l'indexation (embeddings natifs), mais peinait sur les tâches intensives en pré-remplissage — passage à OpenRouter.
Principales leçons
- La justesse (G) est le facteur dominant : même des réponses parfaites échouent sans citations précises par page.
- La récupération hybride (dense + creux + RRF) + le rétroclassement par LLM améliore fortement la pertinence des fragments.
- Le découpage sémantique avec génération de contexte préserve la cohérence sans le surcoût des grands modèles.
- Le type de question dicte le mode : raisonnement pour les réponses libres, direct pour les réponses déterministes.
— Editorial Team
Aucun commentaire pour le moment.