Depuis fin janvier 2026 je me passionne pour la technologie du RAP, avec un objectif: construire un RAG assistant qualité en agroalimentaire. Beaucoup d'itérations, plusieurs versions ratées, et des choix techniques qui ne sont pas toujours évidents. Voici l'état actuel du projet et ce qui a été appris en chemin.

Le problème de départ

La documentation réglementaire en agroalimentaire — GBPH, fiches ANSES, référentiels IFS/ISO 22000 — est rédigée par des universitaires et des vétérinaires. Le langage est précis, exhaustif, et totalement inaccessible à un ouvrier qui cherche une réponse rapide, ou à un patron boucher qui a son CAP mais pas les codes universitaires. D'où le lexique bidirectionnel et les quatre modes de réponse, sujet développé plus bas.

Ces référentiels publics sont le socle. L'intérêt réel est d'y ajouter les documents internes : procédures maison, fiches techniques, recettes propriétaires. Un artisan n'a pas envie que ses secrets de fabrication transitent sur les serveurs d'un tiers. Pour un groupe industriel, c'est une contrainte non négociable — d'où le choix d'une architecture locale, sans aucune donnée envoyée à l'extérieur.

L'objectif : interroger 109 documents officiels + la documentation interne avec les mots du terrain et obtenir une réponse reformulée et actionnable, adaptée au profil de la personne qui pose la question, sans que les secrets et procédures internes ne s'éparpillent dans des serveurs tiers.

Ce qui n'a pas fonctionné (versions 1 et 2)

Les modèles d'embedding — j'ai essayé un modèle de vectorisation fait maison avec 50 vecteurs, juste pour bien comprendre la technologie. Les résultats étaient très pauvres, un modèle linguistique déjà pré-entrainé sait qu'une noisette est un fruit à coque ou que le sanglier est du gibier. J'ai essayé des modèles plus lourds, certains qui vectorisaient via une API externe. Envoyer les données sur internet pour les vectoriser dans un RAG souverain, c'est une contradiction. Abandonné.

ChromaDB + SentenceTransformers + Redis sur VPS — cette combinaison fonctionne mal avec Python 3.12 sur un VPS Infomaniak. Instabilités, conflits de dépendances, performances dégradées. La migration vers Qdrant avec FastEmbed (ONNX, MiniLM-L6-v2, 384 dimensions) donne une base de travail très stable.

La taille des chunks — trop petits, le contexte est perdu. Trop grands, les résultats sont bruités. 47 158 chunks pour 109 documents à ce jour, après plusieurs itérations.

Ce qui fonctionne

La recherche hybride — combinaison de recherche sémantique par vecteurs et de recherche textuelle BM25/TF-IDF, avec double scoring et ranking fusionné. La sémantique pour les questions vagues, le textuel pour les termes précis.

Le lexique bidirectionnel — c'est le point clé. Traduction dans les deux sens entre termes terrain et termes documentation. Une question posée avec les mots d'un ouvrier enrichit automatiquement la requête avant vectorisation. La réponse est ensuite reformulée dans le langage du profil.

Deux exemples concrets : - les informations les plus claires sur la conservation des crustacés cuits se trouvent dans le GBPH charcutier — pas dans le GBPH traiteur, mareyeur ou poissonnier. Sans exploration multi-documents, cette réponse reste introuvable.

  • une question terrain "comment décongeler des pavés de morue avant cuisson?" permet d'aller fouiller dans "décongélation des denrées" dans les 109 documents et de reformuler une réponse personnalisée qui concerne les pavés de morue, pas des denrées.

L'indexation asynchrone — l'ingestion de nouveaux documents se fait en arrière-plan via Celery. L'interface reste fluide pendant que le système ingère.

Les quatre modes de réponse — adaptés au contexte :

  • Action rapide — 3 meilleurs chunks, réponse quasi instantanée et actionnable. Pour l'ouvrier en atelier.
  • 🔍 Diagnostic — 8 chunks, réponse plus complète. Pour identifier une cause.
  • 📋 Procédure — 10 chunks, reformulation structurée. Pour rédiger ou vérifier une procédure.
  • 📊 Analyse — 15 chunks, exploration croisée multi-documents. Pour le responsable qualité ou pour aller explorer en profondeur la documentation ou un thème précis.

La pertinence des chunks et la qualité de reformulation (Mistral Small, temperature 0.1) sur des questions terrain complexes reste surprenante.

Les documents pertinents s'affichent à la bonne page et au bon endroit sur la page pour une vérification rapide des sources.

Ce qui n'est pas encore là

Le mode terrain PWA offline — une Progressive Web App autonome qui embarquerait l'interface, les documents et les vecteurs pré-calculés pour fonctionner sans connexion sur une tablette. Prévu, pas encore implémenté.

Le système tourne actuellement sur un serveur de test (4 Go de RAM, VPS Infomaniak). Stable, mais pas encore à pleine puissance.

Testeurs recherchés

Des retours de professionnels des métiers de bouche et responsables qualité en industrie agroalimentaire seraient utiles : ce qui manque, ce qui répond à côté, ce qui surprend dans le bon sens.

Contact via optimizer-labs.fr/contact.

Base documentaire : 109 documents officiels (GBPH, fiches ANSES pathogènes, référentiels AFNOR/IFS/ISO 22000), 47 158 chunks indexés.