Une IA qui cite ses sources et sait dire « absent de votre base »
Par Protypa · Mis à jour le 5 min de lecture
La réponse courte
Un assistant généraliste produit une réponse plausible, y compris quand il ne sait pas. Sur un montant, une échéance ou une clause, une réponse plausible mais fausse est pire que pas de réponse.
Pour qu'une IA soit utile sur vos documents, elle doit tenir trois engagements :
- Répondre uniquement depuis vos pièces, jamais depuis ses connaissances générales.
- Citer la pièce et la page de chaque valeur, pour que vous puissiez vérifier.
- Refuser quand les pièces ne disent rien : « absent de votre base » plutôt qu'une invention.
C'est la promesse de Subsidia Light. Le reste de ce guide explique comment elle est tenue, et surtout où elle ne l'est pas.
Comment ça marche
1. Les pièces sont lues et rangées
Cortex, la couche de connaissance de Subsidia, lit les PDF (avec reconnaissance de caractères locale pour les scans), Word, Excel, CSV, PowerPoint, e-mails (.eml et .msg, pièces jointes comprises), images, pages web et texte. Le plafond est de 25 Mo par fichier téléversé. Les pièces arrivent à la main, ou par Drive, OneDrive, boîte mail ou dossier surveillé, et sont rangées dans le dossier auquel elles appartiennent.
2. La recherche retrouve les passages
La recherche est hybride : une recherche plein texte et une recherche sémantique sont fusionnées, la question composée peut être décomposée en sous-questions, puis un modèle classe les meilleurs candidats. Ce classement est protégé par des garde-fous : s'il ne montre aucun signal, ou s'il écarte le meilleur candidat de la fusion, il est ignoré plutôt que de fausser l'ordre. Light transmet au modèle au plus douze passages numérotés.
3. Le modèle répond sous contrainte
Un seul appel au modèle, avec des règles strictes : répondre uniquement depuis les passages numérotés, citer entre crochets, et dire clairement que les documents ne couvrent pas la question si c'est le cas. Quand une question nomme un dossier, seules les pièces de ce dossier sont utilisées. Quand elle n'en nomme aucun et que la meilleure pièce existe dans plusieurs dossiers, Light renvoie la liste des dossiers au lieu de répondre.
4. La provenance est calculée, pas demandée
C'est le point qui distingue ce système d'un simple « mets tes sources ». Les balises de provenance ne sont pas laissées au modèle : le moteur retire toutes celles que le modèle a posées, puis les recalcule lui-même, sans appel au modèle. Il marque les ancres (un nombre, une date, un montant, un nom propre) : retrouvée dans une pièce qui parle du même sujet, l'ancre est marquée et renvoie à elle ; introuvable, elle est signalée ; le reste (raisonnement, opinion) n'est pas marqué.
Les couleurs du surlignage dans l'application :
| Couleur | Signification |
|---|---|
| Vert | Affirmation sourcée, cliquable pour vérifier le passage |
| Jaune | Valeur masquée au modèle externe par le bouclier de données personnelles |
| Rouge | Hors de vos documents : connaissance du modèle |
| Bleu | Issu d'une recherche web, la page est ouvrable |
On marque l'ancre et non la phrase, parce qu'une phrase mélange presque toujours un fait et une appréciation : marquer la phrase entière étendrait la garantie à ce qui n'a pas été vérifié.
Essayer par l'API
Le SDK TypeScript @protypa/subsidia a une méthode ask() qui enchaîne ces étapes : elle cherche dans Cortex, fait répondre le modèle uniquement depuis les passages (via le Gateway signé), vérifie chaque affirmation contre ces mêmes passages et contrôle les deux certificats sur votre machine. Si rien n'est retrouvé, elle n'appelle pas le modèle (answered: false).
import { Subsidia } from '@protypa/subsidia'
const subsidia = new Subsidia({ apiKey: process.env.SUBSIDIA_API_KEY }) // sk_live_...
const answer = await subsidia.ask({ question: 'Quel est le loyer mensuel ?' })
answer.text // "Le loyer mensuel est de 1 200 EUR [1]."
answer.citations // [{ n: 1, source: 'Bail.pdf', page: 3, content: '…' }]
answer.ok // aucune affirmation n'est non couverte ou contredite
answer.proofs // les deux certificats, vérifiés hors ligne
Pour obtenir une réponse ancrée via une simple URL de base, ajoutez +cortex à l'adresse du modèle (pulse-auto+cortex) : le Gateway récupère les passages et engage leurs empreintes dans le certificat. Si rien ne correspond, l'appel se poursuit sans ancrage, ce que le certificat reflète (pas de champ grounding). Voir le guide de la passerelle.
Contrôler un texte déjà écrit : le Vérificateur
Le Vérificateur fait l'inverse : vous collez un texte (une note produite par un autre outil, un projet de courrier), il le confronte à vos pièces. Chaque affirmation reçoit un verdict : vérifiée, non couverte, contredite ou non vérifiable (un raisonnement ou un avis n'est pas un défaut). Aucun modèle n'est appelé : une garantie de provenance produite par un modèle serait une garantie qu'il faut croire. Le résultat se recalcule à l'identique, et le rapport est signé. Le guide Vérifier un texte généré par ChatGPT détaille la démarche.
Ce que cela ne fait pas
- « Absent de votre base » ne veut pas dire « n'existe pas ». Cela veut dire : non retrouvé dans ce qui est indexé et visible pour vous. Un document non ingéré, un scan mal numérisé, un dossier restreint auquel vous n'avez pas accès : dans tous ces cas, la réponse sera « non couvert ».
- La recherche peut rater le bon passage. Pour les questions de type énumération (« quelles sont les prochaines échéances ? »), le passage qui liste la réponse perd souvent contre de la prose qui parle simplement du sujet : nous avons mesuré un registre classé 55e par la recherche sémantique sur ce type de question. Des mécanismes élargissent la recherche dans ce cas, sans l'éliminer. Un petit modèle local classe aussi moins bien qu'un gros modèle.
- Le vert garantit la valeur, pas la phrase. Une valeur marquée est bien dans la pièce citée ; le raisonnement autour n'est pas contrôlé. Le Vérificateur ne contrôle que nombres, montants, dates, références et noms propres, et seulement face aux pièces qu'on lui donne : il peut classer « non couverte » une valeur présente dans une pièce qu'on ne lui a pas fournie.
- La contradiction est volontairement étroite : même sujet, même unité, valeur différente. Les dates sont ignorées, trop souvent voisines dans un dossier pour en tirer un verdict honnête. Cortex signale aussi les désaccords entre deux pièces, au lieu de trancher.
- Light ne raisonne pas à votre place. Face à l'inconnu, il refuse ; il ne se forme pas d'avis. Pour une analyse ouverte, c'est le Chat avec agents, dont les réponses sont plus fortes mais moins vérifiables.
- Une question sur le corpus n'est pas une question dans le corpus. « Où est-il question de ce mot ? » est une recherche, pas une question factuelle : elle rend les passages avec leur document et leur page, sans appel au modèle.
- Ce n'est pas un avis juridique ni comptable. Le système dit d'où vient une valeur, pas si une clause est opportune.
Checklist avant de s'appuyer sur une réponse
- Chaque montant, date ou nom de la réponse est-il surligné en vert et renvoie-t-il à une pièce ?
- Avez-vous ouvert la pièce et la page pour les valeurs qui comptent ?
- Si la réponse est « non couvert », le document attendu est-il bien indexé et dans le bon dossier ?
- La question nommait-elle le dossier, ou plusieurs dossiers contiennent-ils la même pièce ?
- Pour un texte venu d'ailleurs, l'avez-vous passé au Vérificateur avant de l'envoyer ?
Questions fréquentes
Que répond l'IA quand l'information n'est pas dans mes documents ?
Elle le dit, dans la langue de la question, par une phrase du type « Les documents ne couvrent pas cette question », et peut suggérer de reformuler ou d'ajouter une pièce. La consigne donnée au modèle interdit de répondre depuis ses connaissances générales, de deviner ou d'estimer.
Comment vérifier qu'une valeur citée vient bien de mes documents ?
Chaque valeur retrouvée dans une pièce est surlignée en vert et renvoie à son passage : en la survolant ou en cliquant, vous ouvrez la pièce et la page. Ce marquage est calculé par le moteur, sans appel au modèle, et non demandé au modèle, car un petit modèle local ne respecte pas toujours une consigne de balisage.
Une IA qui cite ses sources peut-elle quand même se tromper ?
Oui. Le surlignage vert garantit que la valeur figure dans la pièce citée, pas que la phrase qui l'entoure est juste. Et si la recherche ne ramène pas le bon passage, la réponse peut être « non couvert » alors que l'information existe. Le contrôle humain sur la pièce reste la dernière étape.
Que faire quand l'IA dit « absent » mais que je sais que c'est dans un document ?
Vérifiez d'abord que le document est bien indexé (statut prêt) et visible depuis votre dossier. Testez ensuite la recherche seule, qui rend les passages avec leur document et leur page sans appel au modèle. Un scan est lu par reconnaissance de caractères locale : une mauvaise numérisation peut rendre une valeur introuvable.
Peut-on contrôler un texte écrit par un autre outil contre mes documents ?
Oui, avec le Vérificateur : chaque affirmation reçoit un verdict (vérifiée, non couverte, contredite ou non vérifiable) face à vos pièces, sans aucun appel à un modèle, donc de façon reproductible. Il ne réécrit rien et ne donne aucun pourcentage de fiabilité.
Que se passe-t-il quand la question concerne un client sans le nommer ?
Si la meilleure pièce existe dans plusieurs dossiers, Light renvoie la liste de ces dossiers au lieu d'une réponse : le moteur ne choisit pas un client au hasard. Une question qui nomme un dossier ne cherche que dans ce dossier.
