RAG conversationnel
sur contrats d'assurance
POC maison construit pour explorer 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.
Personne ne lit les CGV en entier.
Un contrat d'assurance, c'est plusieurs dizaines de 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.
Document long
Plusieurs dizaines de pages par contrat (CG + CP combinées), à indexer mentalement par le conseiller.
Plusieurs minutes
Pour trouver une réponse précise en lecture manuelle dans des CGV denses.
Friction
Au moment précis où la confiance dans le produit se joue.
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 observés sur ce prototype, sur un corpus restreint (2 PDFs). À lire comme des indicateurs d'exploration. Un vrai test set aurait été nécessaire pour les valider en KPI production.
Temps de réponse
Quelques secondes
Cible du POC. À comparer aux plusieurs minutes nécessaires pour la même recherche en lecture manuelle.
Sources citées
100%
Chaque réponse renvoie les chunks utilisés et les pages d'origine. Le lecteur peut vérifier.
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,01 €
Par requête, sur la base du tarif Claude Haiku 4.5 pour ~10 000 tokens en entrée. Embeddings HuggingFace gratuits dans la limite du free tier.
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.
Audit du livrable.
Ce que le POC démontre aujourd'hui, et ce qui resterait à faire 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 dans la limite du free tier HuggingFace.
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.
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.