Veille automatisée · Anti-hallucination

Une veille automatisée où un lien inventé est structurellement impossible

Le reproche le plus fréquent fait à l'IA en veille est justifié : elle cite des articles qui n'existent pas. J'ai construit une veille où ce risque est éliminé par l'architecture, pas par la confiance : le modèle ne manipule jamais d'URL. Il ne renvoie que des numéros de ligne, que le serveur remappe sur les vrais articles collectés. Un lien inventé n'est pas improbable — il est impossible. Cette page raconte les trois pannes successives qui ont conduit là, chiffres à l'appui : un premier outil qui servait des articles vieux de treize ans sans que rien ne plante, un filtre par mots-clés inutilisable, et un plafond de jetons qui a fini par produire la bonne conception. Âge médian des résultats aujourd'hui : quatre jours.

Next.jsTypeScriptGroq (Llama 3.1 + 3.3)RSS (17 flux)Cache mémoire

Le problème

Le premier symptôme n'était pas une panne : c'était pire. L'outil tournait depuis des semaines, ne plantait jamais, et personne ne relisait ce qu'il servait. Quand je l'ai enfin mesuré, l'article classé en tête sur « automatisation IA PME » avait treize ans, et sur 67 résultats, 65 dépassaient les trente jours — 34 avaient plus de six mois. La cause n'était pas le tri par l'IA, c'était la source : un agrégateur classe par pertinence, pas par date, et sans contrainte de fraîcheur il remonte le contenu intemporel le mieux optimisé pour le référencement. Le modèle recevait déjà de la bouillie, et en faisait une synthèse convaincante — ce qui est la pire des situations. Le socle refait, le problème s'est déplacé sans se résoudre : un filtrage par mots-clés bruts est tout simplement inutilisable, et c'est mesurable. Sur un socle réel de 440 articles, « RGPD » ne trouve RIEN — les articles écrivent « données personnelles » ; et « IA » trouve TOUT, les 440 sur 440, parce que ces deux lettres sont dans « média », « spécial » et « diagnostic ». Soit aveugle, soit inutile.

Ce que j'ai construit

  • Un socle fermé de 17 flux RSS choisis et vérifiés un par un — presse informatique, IA, économie, marketing, plus deux sources primaires de droit du numérique dont la CNIL — au lieu d'un agrégateur. Motif : l'agrégateur remontait des fermes de contenu et ne fournit QUE le titre. Ici chaque article arrive avec un extrait, donc le tri et l'analyse portent sur du texte réel, pas sur dix mots.
  • Un pipeline en trois étapes, dont une seule coûte des jetons là où ils sont utiles. Étape 1, expansion : un petit modèle traduit le sujet en 4 à 8 expressions de recherche — synonymes, sigle ET forme développée, institutions de référence. C'est ce qui rattrape « RGPD » → « données personnelles », « CNIL ».
  • Étape 2, classement déterministe, gratuit et instantané : correspondance sur frontières de mots — ce qui règle « IA » contre « média » — avec le titre pondéré trois fois plus que l'extrait. Un sujet cité dans le titre EST le sujet de l'article ; cité dans le corps, il n'est souvent qu'une mention.
  • Étape 3, sélection et analyse : un modèle plus fort relit les meilleurs candidats avec leurs extraits, tranche, et écrit ce que chaque info change pour un dirigeant de PME. C'est l'extrait qui rend cette étape possible : sur un titre seul, elle ne pourrait que paraphraser.
  • La contrainte qui a dicté toute l'architecture : la première conception faisait lire les 300 titres du socle par un petit modèle à chaque recherche. Mesuré, ça consommait 8 386 jetons par requête pour 6 000 jetons par minute autorisés — donc une erreur HTTP 413 systématique, à tous les coups. La leçon, transposable partout : mettre l'étape sémantique là où elle est bon marché, c'est-à-dire sur la requête de cinq mots, pas sur le corpus de trois cents articles. La contrainte technique n'a pas dégradé la solution : elle l'a trouvée.
  • Un cache mémoire de 30 minutes sur le socle : 17 appels réseau par demi-heure au lieu de 17 par recherche, avec déduplication des remplissages simultanés pour qu'une rafale de visiteurs ne déclenche pas quinze collectes en parallèle.
  • Une déduplication à deux niveaux : par URL, puis par signature de sujet — les mots significatifs du titre, normalisés et triés — pour que deux reprises de la même dépêche par deux médias n'occupent pas deux places dans la sélection.

Les garde-fous (c'est là que tout se joue)

  • Aucune URL produite par le modèle n'atteint l'affichage : titres, sources, âges et liens sont reconstruits depuis la collecte. Un indice qui ne correspond à rien, ou répété, est écarté.
  • Une liste vide est une réponse valide et attendue. Le modèle a pour consigne d'écarter les hors-sujets de la présélection automatique, les contenus promotionnels et les listes d'outils, et de ne rien retenir si rien n'est pertinent. Deux articles justes valent mieux que cinq dont trois à côté — c'est ce qui distingue une veille d'un flux de bruit.
  • Interdiction explicite de paraphraser le titre : il est déjà affiché au-dessus. Le commentaire doit dire ce que l'information change concrètement, sinon il n'a pas lieu d'être.
  • Température basse (0,2) : sur un tri factuel, la créativité du modèle est un défaut, pas une qualité.
  • Troncature propre à la fin de phrase ou au dernier mot entier. Un modèle qui déborde laisserait un « …vigilance accrue en matière » à l'écran : bien plus amateur qu'une phrase courte.
  • Résilience du socle : si une collecte revient vide — coupure réseau, flux tous en erreur — alors qu'un socle précédent existe, on sert l'ancien, périmé mais réel, plutôt qu'un vide que le visiteur lirait comme « aucune actualité sur ce sujet ».
  • Filtrage déterministe du sujet AVANT tout appel réseau ou modèle : une requête manifestement hors-cadre est rejetée sans coûter un jeton. Une vitrine professionnelle ne doit pas pouvoir afficher n'importe quoi, ni servir de proxy à qui que ce soit.
  • Journalisation du sujet recherché pour mesurer l'usage, sans adresse IP ni aucune donnée permettant d'identifier qui l'a saisi.

En chiffres

Relevé sur l'outil en service, avant puis après la refonte du socle et du pipeline de tri.

Résultats de plus de 30 jours
Avant65 / 67
Âge de l'article le mieux classé
Avant13 ans
Âge médian des résultats
Après4 jours

Ce que j'ai accepté de perdre

  • La couverture s'arrête aux thèmes du socle : numérique, IA, cybersécurité, droit du numérique, économie des entreprises. Un sujet sectoriel pointu n'y sera pas. Plutôt que de faire semblant, l'interface propose des sujets réellement couverts et l'état vide le dit franchement. Chez un client, le socle est constitué de SES sources : la limite disparaît avec le catalogue.
  • Le cache vit par instance serveur : chaque instance qui démarre à froid paie une collecte complète. Acceptable pour une démonstration publique, à remplacer par un cache partagé dès que le trafic le justifie.
  • Plusieurs flux pressentis ont été écartés parce qu'ils ne répondent pas — erreurs 404, 403, ou absence de RSS. Chaque source du socle a été testée une par une, et celles qui ont échoué sont documentées dans le code pour qu'on ne les réessaie pas à l'aveugle.

Ce que ça donne chez vous

  • Veille concurrentielle : surveiller en continu un panel de concurrents et ne recevoir que les mouvements qui comptent.
  • Veille réglementaire : suivre les textes d'un secteur et être alerté sur ce qui change vraiment, avec la source d'origine.
  • Newsletter automatisée : la même mécanique branchée sur vos sources internes et externes, qui produit un brouillon prêt à relire et à diffuser.

Un besoin de cette nature ?

Décrivez votre situation à mon assistant, ou écrivez-moi à contact@visual-concept.net. Premier retour sous 24 h, sans engagement.