INSIGHT #01 // INTELLIGENCE ARTIFICIELLE & RAG
Évaluer un système RAG en production : métriques, biais et garde-fous
Comment dépasser les démos pour construire une suite d'évaluation continue fiable avec Ragas, TruLens, recherche hybride et réordonnancement sémantique.
Martial GNINHI
Directeur Technique & Architecte IA
Secteur & Contexte
Assurance & Mutuelle de santé
Contraintes d'exploitation
Corpus vivant de 150 000 polices contractuelles scannées (80 à 250 pages), tableaux d'exclusion et avenants successifs
Enjeu critique
Tolérance zéro aux hallucinations sur les clauses d'exclusion et barèmes de remboursement ; conformité ACPR & RGPD
Dans les secteurs hautement réglementés comme l'assurance santé, un POC RAG sur cinq documents PDF propres séduit toujours en comité de direction. Mais le passage à l'échelle sur 150 000 polices contractuelles scannées révèle une réalité brutale : le taux de bonnes réponses chute drastiquement sans que personne ne s'en aperçoive avant qu'un client ne reçoive une indemnisation erronée. Déployer un RAG en production exige un banc d'évaluation continu capable de mesurer objectivement la fidélité documentaire à chaque mise à jour.
Pourquoi les métriques traditionnelles et le chunking naïf échouent
En production, les défaillances d'un pipeline RAG ne proviennent presque jamais du modèle de langage lui-même, mais de la rupture d'alignement entre l'étape de retrieval et le générateur.
Fragmentation des tableaux de garanties
Un chunking fixe à 1 000 tokens coupe les grilles tarifaires et tableaux d'exclusion au milieu d'une ligne, privant l'embedding de son en-tête contextuel.
Inadéquation des métriques de surface
Les scores BLEU et ROUGE mesurent l'alignement lexical, ignorant complètement si le chiffre de remboursement généré a été inventé ou extrait fidèlement.
Dérive silencieuse à la mise à jour contractuelle
Sans banc de régression automatique, l'ajout d'un avenant 2025 crée des conflits de versions non résolus avec les conditions générales 2023.
Pipeline à 2 étages, triade Ragas et garde-fous déterministes
Nous structurons l'architecture autour d'un principe fondamental : ne jamais laisser le générateur deviner ce que le retriever n'a pas formellement prouvé.
Stack & Composants de production qualifiés
Les 4 étapes séquentielles du pipeline de production
Ingestion sémantique & Chunking hiérarchique
Extraction OCR structurée avec conservation de l'arborescence des titres (H1-H4) et sérialisation Markdown des tableaux de garanties.
Hierarchical Chunking + Document TreeRecherche hybride Dense/Sparse sur Qdrant
Double vectorisation : BM25 pour le vocabulaire exact (codes d'actes CCAM) et embeddings bge-m3 pour la proximité sémantique conceptuelle.
Reciprocal Rank Fusion (RRF)Reranking Cross-Encoder sélectif
Filtrage fin des 30 candidats initiaux vers les 5 chunks décisifs via Cohere Rerank v3.5 ou bge-reranker-large.
Cross-Encoder RerankingGarde-fous & Inférence avec NeMo
Vérification pré/post-génération : détection d'injections de prompt et blocage automatique si le score d'adhérence documentaire est < 0.85.
Self-Correction & Fallback Guardrails# Évaluation continue en pipeline CI/CD avec Ragas 0.2+
from ragas import evaluate
from ragas.metrics import faithfulness, answer_relevancy, context_precision
from datasets import Dataset
def assert_rag_quality(test_bench_dataset: Dataset, min_faithfulness: float = 0.90):
"""Bloque le déploiement si le score de fidélité factuelle régresse."""
results = evaluate(
test_bench_dataset,
metrics=[faithfulness, answer_relevancy, context_precision],
)
score = results["faithfulness"]
assert score >= min_faithfulness, (
f"Régression critique détectée : Faithfulness {score:.3f} < seuil {min_faithfulness}"
)
return resultsCe test unitaire tourne sur 500 questions de référence avant tout merge sur la branche principale.
Arbitrages techniques sans complaisance marketing
Toute décision d'architecture d'entreprise implique de renoncer à un idéal théorique. Voici les compromis délibérés de cette implémentation.
Reranker systématiquement les 30 premiers candidats avec un modèle cross-encoder lourd.
Ajout de 120 ms à 180 ms (à titre indicatif) sur le temps de réponse total de la requête.
Parallélisation du fetch et streaming progressif des premières réflexions de l'agent dans l'interface utilisateur.
Échantillonnage asynchrone à 5% en production au lieu d'un scoring à 100% en direct.
Détection des dérives statistiques sur plusieurs heures plutôt qu'en temps réel immédiat.
Banc de 500 questions fixes exécuté en CI/CD avant chaque mise en production logicielle.
Résultats mesurés & Rigueur méthodologique
Évolution des métriques entre l'architecture initiale naïve et le pipeline à deux étages avec garde-fous.
0.94
Score de 0.71 sur l'architecture initiale sans reranking
< 1.2%
Échantillon annoté manuellement par des juristes
-45%
Économie de tokens injectés dans le prompt final
Bénéfices d'exploitation constatés :
- Fin des validations d'indemnisation contestées par les assurés pour cause de clauses inventées.
- Temps d'instruction moyen d'un dossier complexe réduit de 40 minutes à 12 minutes.
- Capacité d'ingérer un nouvel avenant contractuel en moins de 15 minutes avec garantie de non-régression.
- Traçabilité complète de chaque assertion avec citation exacte du paragraphe source.
Prolonger cette architecture sur vos projets
Découvrez les services d'ingénierie et les solutions métiers directement liés à cette problématique :
Service 01 — Raisonnement & RAG
Architecture RAG Haute Précision, embeddings bge-m3, Qdrant et garde-fous pour LLM d'entreprise.
Synthèse clinique & extraction NLP
Extraction automatisée et structuration de données non structurées sous contraintes de conformité.
Agents de conformité réglementaire
Surveillance et audit de 100% des flux transactionnels avec détection d'anomalies en temps réel.
Vous concevez ou auditez une architecture similaire ?