Aller au contenu principal

L'Aventure RAG Commence : Quand les Documents Apprennent a Parler

· 6 minutes de lecture
Jean-Noël Schilling
Locki one / french maintainer

Comment 60 captures d'ecran de reseaux sociaux sont devenues une memoire civique interrogeable en un apres-midi

La Question que Personne ne Pouvait Trancher

A six jours des elections municipales d'Audierne-Esquibien, un citoyen demande : "Que proposent les quatre listes pour l'economie locale ?"

Question simple. Reponse impossible — jusqu'a aujourd'hui.

Les propositions existaient, eparpillees entre les publications Facebook, les tracts PDF glisses sous les portes, les stories Instagram, et un programme participatif co-construit sur audierne2026.fr. Aucun etre humain n'avait lu l'integralite des propositions de chaque liste. Aucun journaliste n'avait eu le temps de tout recouper. L'information etait publique mais effectivement invisible, noyee dans le bruit de la campagne.

C'est cette breche qu'OCapistaine a ete construit pour combler. Pas pour juger. Pas pour recommander. Pour se souvenir — et pour aider les citoyens a comparer.

Du Crawling a la Comprehension

Pendant deux mois, OCapistaine a ete un batisseur sans voix. Il savait crawler des documents municipaux, valider des contributions citoyennes contre une charte, anonymiser les donnees personnelles, tracer chaque appel LLM via Opik. Il disposait d'une chaine de failover multi-fournisseurs, d'un scheduler, d'une interface Streamlit, d'une coordination Redis. Ce qu'il ne savait pas faire, c'etait la seule chose dont les citoyens avaient vraiment besoin : repondre a une question.

La piece manquante, c'etait la recherche. Pas par mots-cles — par comprehension semantique. Un citoyen qui demande "commerce local" doit trouver la proposition d'un candidat sur "dynamiser le centre-bourg" meme si les mots ne se recoupent pas. C'est ce que fait la recherche vectorielle : elle projette le sens dans un espace geometrique, ou la proximite est la pertinence.

L'Architecture de la Memoire

Le pipeline que nous avons construit aujourd'hui est deliberement minimal. Les elections sont dans six jours — l'existence compte plus que l'elegance.

ChromaDB stocke les vecteurs localement. Aucune dependance cloud, aucune cle API pour la recherche, aucune latence supplementaire. L'ensemble du corpus civique tient en memoire : 164 documents, 463 chunks, moins de 500 Mo avec le modele d'embedding.

Le modele d'embedding est le all-MiniLM-L6-v2 integre a ChromaDB via ONNX — pas de GPU necessaire, pas de soucis de compatibilite Python 3.13, pas de dependances lourdes. Il gere le francais correctement a cette echelle. La perfection est l'ennemie du deploye.

Mistral OCR a ete le heros inattendu. Quatre listes electorales avaient publie leurs programmes sous forme d'images sur les reseaux sociaux — photos de tracts imprimes, captures de publications Facebook, PDF scannes. Soixante fichiers au total. Le Document AI de Mistral les a tous traites sans erreur, extrayant le texte des JPG comme des PDF, produisant du markdown propre. Deux minutes d'appels API ont transforme du bruit visuel en savoir interrogeable.

Cinq Voix dans un Seul Index

Le store vectoriel contient desormais cinq voix distinctes :

SourceDocumentsContenu
Audierne-Esquibien 2026103Programme participatif co-construit + contributions citoyennes
Construire l'Avenir (LDVG)17Propositions de campagne + presentations des colistiers
Passons à l'Action ! (LDVD)24Positions editoriales + profils des candidats
S'unir pour Audierne-Esquibien (LDVG)15Plateforme de campagne + presentations de l'equipe
Cap sur Notre Futur (LDVD)5Manifeste programmatique + liste des candidats

Chaque document porte un tag list_name. Quand un citoyen demande a comparer les programmes, OCapistaine interroge chaque liste separement, rassemble les extraits les plus pertinents, et demande au LLM de synthetiser une comparaison neutre et factuelle. Pas d'editorial. Pas de classement. Simplement : voici ce que chaque liste dit sur votre sujet, avec les sources.

Tracer Chaque Conversation

Chaque interaction de chat cree une trace Opik avec l'identifiant de session Streamlit comme thread_id. A l'interieur de chaque trace, deux spans racontent l'histoire : un span retrieval qui enregistre quels chunks ont ete trouves et a quelle distance semantique, et un span synthesis qui note quel modele a repondu, combien de tokens il a utilises, et ce qu'il a dit.

Cela va au-dela du debugging. Apres les elections, ces traces deviendront un dataset. Quelles questions les citoyens ont-ils reellement posees ? Quels themes avaient la couverture la plus riche ? Ou la recherche a-t-elle echoue — renvoyant des chunks distants qui ne repondaient pas vraiment a la question ? C'est la boucle de retroaction qui rendra la prochaine iteration meilleure. Opik n'observe pas seulement — il retient ce que le systeme a appris sur ses propres limites.

Ce que Beta Signifie

C'est une beta. Le modele d'embedding est generique, pas ajuste pour le vocabulaire civique francais. Le chunking est base sur les caracteres, pas sur les phrases. Le mode comparaison ne pondere pas encore la pertinence des documents. Certains extraits OCR contiennent des references d'images qui ajoutent du bruit.

Mais beta a un sens precis ici : ca fonctionne assez bien pour etre utile. Un citoyen peut ouvrir une page Streamlit, poser une question en francais sur l'avenir de sa commune, et recevoir une reponse sourcee puisant dans le programme publie de chaque candidat. Ca n'existait pas hier.

Le Courant Profond

Il y a une tension philosophique au coeur de ce projet que le pipeline RAG rend visible. La democratie exige des citoyens informes. L'information exige l'acces. L'acces exige que quelqu'un — ou quelque chose — rassemble, structure et presente ce que les candidats ont dit.

Traditionnellement, c'etait le role de la presse locale, qui en France rurale s'amenuise. Des quotidiens regionaux comme Le Telegramme et Ouest-France couvrent toujours Audierne par leurs correspondants locaux, et le bulletin municipal Le Gwaien informe les residents de l'actualite administrative. Mais aucun media independant ne suit le detail de chaque programme electoral, ne compare les promesses entre les listes, ni ne rend cette comparaison accessible apres la campagne. Qu'est-ce qui comble ce vide aujourd'hui ? Des groupes Facebook ou l'information se melange a l'opinion. Le bouche-a-oreille. Des tracts de campagne qui arrivent une fois et sont perdus.

OCapistaine ne remplace pas le journalisme. Il remplace l'oubli. Il s'assure que ce qui a ete dit publiquement reste trouvable, comparable et imputable — pas seulement pendant la campagne, mais apres.

L'aventure RAG commence. Le navire a quitte le port. Voyons maintenant ou le courant nous emporte.


Articles lies : When the Bottleneck Moves | Programme Constitution