RAG conversationnel
sur contrats d'assurance
POC maison construit pour explorer concrètement la chaîne RAG sur un cas réel : interroger en langage naturel des Conditions Générales et Particulières d'assurance. Projet exploratoire — ni optimisé ni maintenu en service.
Les CGV sont illisibles, et c'est un problème opérationnel.
Un contrat d'assurance, c'est 80 à 120 pages de PDF en typographie dense, avec des renvois entre clauses et des exclusions disséminées. Le conseiller passe un temps disproportionné à chercher la bonne réponse pour l'assuré, et l'assuré renonce souvent à poser la question. Friction maximale, sur le moment qui conditionne la confiance dans le produit.
~100 pages
par contrat (CG + CP combinées) à indexer mentalement
10-30 min
pour trouver une réponse précise en lecture manuelle
Friction
sur le moment qui construit (ou détruit) la confiance assuré
Pipeline RAG monté de bout en bout dans Flowise.
6 nœuds chaînés pour ce POC : ingestion, chunking, vectorisation, stockage, retrieval, génération. Objectif : me confronter à chaque brique pour comprendre en pratique les arbitrages d'un RAG, pas livrer un service industriel.
- 01
Ingestion PDF
Conditions Générales + Conditions Particulières uploadées. Mode « one document per page » pour préserver la granularité contractuelle.
- 02
Recursive Character Splitter
Découpage en chunks de 800 caractères, overlap 150. Préserve la cohérence sémantique des clauses sans rupture brutale.
- 03
Embeddings BAAI/bge-m3
Modèle multilingue état de l'art open-source via HuggingFace Inference. Vectorisation 1024 dimensions, gratuit jusqu'au seuil de volume.
- 04
In-Memory Vector Store
Stockage vectoriel en mémoire, top K = 10. Suffisant pour un corpus contractuel ; remplaçable par Pinecone ou Qdrant pour scaler.
- 05
ChatAnthropic Claude Haiku 4.5
Modèle de génération final, température 0,1 pour la factualité. Rapide et économique pour des Q&A multi-tours.
- 06
Conversational Retrieval QA Chain
Orchestration LangChain : récupération des chunks pertinents, injection dans le prompt, mémoire de conversation. Return Source Documents activé.
Question naturelle, réponse sourcée.
Le POC répondait à des questions en langage courant en récupérant les passages pertinents dans les 2 PDFs indexés (CG + CP), puis en formulant une réponse synthétique avec citations. Exemples de questions testées pendant le développement :
Quelle est la franchise pour un bris de glace en habitation ?
L'agent retrouve la clause de franchise correspondante dans les CGV, cite la page et le paragraphe.
La garantie vol couvre-t-elle un téléphone laissé dans la voiture ?
Récupération du périmètre vol et des exclusions ; réponse nuancée avec citation directe des conditions particulières.
Que faire en cas de dégât des eaux et dans quels délais déclarer ?
Combinaison de plusieurs passages (déclaration, expertise, délais légaux), restitués comme une procédure claire.
Ce que le POC a permis d'observer.
Ordres de grandeur mesurés sur ce prototype maison, sur un corpus restreint (2 PDFs). À lire comme des indicateurs d'exploration, pas comme des KPIs production — il aurait fallu un vrai test set pour les valider.
Temps de réponse
< 5 sec
Versus 10-30 minutes de lecture manuelle dans des CGV de 80-120 pages
Sources citées
100%
Chaque réponse est traçable, auditable, vérifiable. Pas de réponse sans citation.
Multilingue
bge-m3
Le modèle d'embeddings gère nativement FR, EN et 100+ langues — utile pour les assurés internationaux
Coût marginal
≈ 0,001€
Par requête (Haiku 4.5 + embeddings HuggingFace gratuits) — scalable sans réinjection budget
Stack du POC : Flowise (orchestration low-code RAG) · LangChain (Conversational Retrieval QA) · HuggingFace Inference (embeddings BAAI/bge-m3) · In-Memory Vector Store · Claude Haiku 4.5 via API Anthropic (génération, température 0,1). Pipeline assemblé visuellement pour comprendre l'enchaînement des briques, pas pour servir en production.
Ce que le POC posait, ce qu'il aurait fallu pour aller plus loin.
Un RAG démontre vite, mais se juge sur les détails : chunking, recall, guardrails, latence, coût. Lecture honnête de ce prototype : ce qui était en place côté chaîne technique, et ce qui manquait pour parler de service réel.
Confirmé — déjà en place
Ce qui est livré et démontrable.
Pipeline RAG complet
Splitter → embeddings → vector store → retrieval Top-K → injection prompt → LLM. Toutes les briques chaînées et fonctionnelles.
Embeddings BAAI/bge-m3
Modèle SOTA open-source multilingue (FR + 100 langues). Choix documenté, coût d'inférence gratuit jusqu'à un seuil.
Chunking explicite
Recursive Character Splitter, chunks 800 caractères, overlap 150. Paramètres choisis et reproductibles.
Citations sources actives
Return Source Documents activé sur la chain. Chaque réponse renvoie les chunks utilisés, traçables par l'utilisateur.
Conversational Retrieval QA Chain
Mémoire multi-tours préservée, le retrieval s'adapte au contexte de la conversation, pas juste à la dernière question.
Tool-use via LangChain
Claude appelait le retriever en tant qu'outil, orchestration gérée par la chain Flowise.
Fenêtre de contexte maîtrisée
Top-K=10 chunks de 800 chars = ~10 000 tokens contexte. Confortable pour Haiku 4.5.
Améliorations POC
À ajouter pour gagner en crédibilité démo — ROI fort, effort raisonnable.
Documenter la chunking strategy
Pourquoi 800/150 ? Tester alternatives (300/50, 500/100, 1000/200) sur un test set et publier le benchmark.
Test Top-K
Comparer précision vs latence/coût sur K=3, 5, 10. Documenter le trade-off optimal (« Top-3 = 85% précision, 2,1 s »).
Seuil de similarité cosine
Guardrail : si similarité du meilleur chunk < 0,6, répondre « Je n'ai pas trouvé d'information pertinente ». Évite les réponses hallucinées sur questions hors corpus.
Guardrail périmètre
Instruction explicite : refuser questions hors assurance (météo, politique). Teste avec questions off-topic pour valider.
KPI précision sur test set
50 questions validées par expert legal, mesure precision factual sur les réponses produites. À publier sur la page.
KPI Recall@K
Pour chaque question test, vérifier manuellement que le chunk attendu est dans le Top-K. Cible Recall@3 ≥ 90%.
KPI latence et coût détaillés
Décomposer : embedding query / vector search / génération LLM. Coût par question = tokens × prix.
Score similarité affiché
Pour chaque chunk cité, afficher le score cosine. Transparence sur la confiance du retrieval.
ReAct sur questions complexes
Pour les questions multi-doc (« différence entre A et B »), faire verbaliser la stratégie de retrieval avant la réponse.
Industrialisation
Nécessaire uniquement en production à l'échelle. À nommer mais pas à embarquer pour un POC.
HITL validation legal
Réponses sur sanctions / exclusions sensibles passent en review humaine avant affichage. Pas en POC, indispensable en prod régulée.
Vector store persistant
Passer d'In-Memory à Pinecone, Qdrant ou pgvector. Indispensable dès qu'on scale au-delà d'une démo.
Réindexation incrémentale
Pipeline de mise à jour des CGV quand l'assureur publie un avenant. Versioning des chunks et historisation.
Évaluation continue
RAGAS, ARES ou benchmark interne automatisé, détection de drift, alerting sur dégradation de précision.