Aller au contenu principal
Insights & Analyses
Intelligence Artificielle

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.

MG

Martial GNINHI

Directeur Technique & Architecte IA

15 Février 2025#RAG#LLM#Evaluation#Production#Qdrant#Ragas
01 // CONTEXTE & CAS D'USAGE RÉELAssurance & Santé

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.

02 // LE PROBLÈME EN PRODUCTION

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.

ERR_01 // CHUNKING_NAÏF

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.

Perte de 38% de recall sur clauses croisées
ERR_02 // ILLUSION_ROUGE_BLEU

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.

Faux sentiment de sécurité en pré-prod
ERR_03 // SILENT_DRIFT

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.

Réponses anachroniques en production
03 // APPROCHE & ARCHITECTURE

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

Ragasv0.2.14· Calcul de la triade (Faithfulness, Context Precision, Relevance)
Qdrantv1.11.0· Base vectorielle avec support hybride Dense/Sparse
Cohere Rerankv3.5· Reranker cross-encoder haute précision
NeMo Guardrailsv0.9.1· Garde-fous anti-hallucination & sécurité
TruLensv1.4.0· Monitoring continu de la triade en production

Les 4 étapes séquentielles du pipeline de production

STAGE 01

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.

Pattern : Hierarchical Chunking + Document Tree
STAGE 02Latence < 45ms

Recherche 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.

Pattern : Reciprocal Rank Fusion (RRF)
STAGE 03Precision@5 > 93%

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.

Pattern : Cross-Encoder Reranking
STAGE 04

Garde-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.

Pattern : Self-Correction & Fallback Guardrails
ragas_eval_pipeline.py — Assertion de Faithfulness en CI/CD
python
# É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 results

Ce test unitaire tourne sur 500 questions de référence avant tout merge sur la branche principale.

04 // ARBITRAGES TECHNIQUES & LIMITES ASSUMÉES

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.

NOTE DE TRANSPARENCE : Nous refusons de présenter le RAG comme une solution magique instantanée. Chaque gain de précision s'achète en latence d'inférence ou en coût de calcul.
Latence P95 vs Fidélité documentaire
Arbitrage retenu :

Reranker systématiquement les 30 premiers candidats avec un modèle cross-encoder lourd.

Le coût assumé :

Ajout de 120 ms à 180 ms (à titre indicatif) sur le temps de réponse total de la requête.

Mitigation déployée :

Parallélisation du fetch et streaming progressif des premières réflexions de l'agent dans l'interface utilisateur.

Couverture d'évaluation vs Coûts d'API
Arbitrage retenu :

Échantillonnage asynchrone à 5% en production au lieu d'un scoring à 100% en direct.

Le coût assumé :

Détection des dérives statistiques sur plusieurs heures plutôt qu'en temps réel immédiat.

Mitigation déployée :

Banc de 500 questions fixes exécuté en CI/CD avant chaque mise en production logicielle.

05 // RÉSULTATS & MESURES CONTEXTUALISÉES

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.

Faithfulness Ragas

0.94

Score de 0.71 sur l'architecture initiale sans reranking

Taux d'hallucinations résiduellesÀ titre indicatif

< 1.2%

Échantillon annoté manuellement par des juristes

Contexte superflu éliminéÀ titre indicatif

-45%

Économie de tokens injectés dans le prompt final

Protocole de mesure //Mesures réalisées sur un banc de 500 requêtes contractuelles représentatives et un corpus de test de 1 200 documents d'assurance. Les scores de fidélité sont calculés selon le protocole Ragas 0.2 avec un juge GPT-4o. Les pourcentages d'hallucinations sont mentionnés à titre indicatif selon l'échantillon d'audit humain interne 2025.

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.
06 // POUR ALLER PLUS LOIN · SOLUTIONS & SERVICES

Prolonger cette architecture sur vos projets

Découvrez les services d'ingénierie et les solutions métiers directement liés à cette problématique :

Vous concevez ou auditez une architecture similaire ?