Copilote documentaire - Assistant RAG qui cite ses sources ou s'abstient
Sotis AI
Description
Dans un établissement de santé, retrouver une procédure validée dans une gestion électronique de documents suppose souvent de savoir d'avance où elle est rangée. Un assistant en langage naturel réglerait le problème, à une condition : ne jamais inventer, parce qu'une réponse plausible mais fausse sur un protocole de soins est un risque patient. C'est cette condition, et non la qualité des réponses, qui a dicté l'architecture. Le démonstrateur répond à un appel d'offres hospitalier portant sur une GED existante ; son corpus est fictif, sept documents et quinze passages indexés.
Points clés
L'incertitude y est une contrainte structurelle, pas un réglage :
• Abstention forcée tant qu'aucun passage ne porte de signal lexical réel, et décidée avant la génération : une question hors corpus ne déclenche aucun appel au modèle de langage
• Récupération hybride BM25 et embeddings, qui retombe silencieusement sur le lexical seul si la clé, les vecteurs ou le modèle manquent
• Routage de version : un passage périmé fait co-récupérer sa version en vigueur, et l'application distingue ce cas de celui où aucune version en vigueur n'est récupérable
• Jetons et coût estimés par réponse, lus dans un fichier de prix versionné : un modèle absent du fichier n'affiche aucun coût plutôt qu'un coût inventé
Outils & Technologies
Approche & Méthodes
• BM25 écrit à la main en Python pur, fusionné linéairement avec la similarité cosinus des embeddings
• Verrou d'abstention structurel plutôt que seuil calibré, pour rester robuste à un changement de modèle d'embeddings
• Détection d'intention sociale à deux niveaux, dont le placement dans le pipeline est ce qui préserve la règle d'abstention
• Trace structurée des quatre étapes renvoyée à chaque appel, passages écartés et scores compris
• Aucune dépendance scientifique lourde : la récupération tient en Python standard