P / 03 · Plateforme RAG · IA auto-hébergée
ENSET AI
Une plateforme RAG académique auto-hébergée : étudiants et personnel discutent avec leurs PDF, reçoivent des réponses en streaming avec les pages sources, et l’administration pilote l’ensemble depuis une console.
Auto-hébergé · CI verte sur main
Explorer le dépôt- Python
- Flask
- React
- PostgreSQL
- MinIO
- Qdrant
- Redis
- Docker
Espace de discussion documentaire avec import de PDF.
Source de l’imageBesoin & utilisateurs
Étudiants et personnel veulent des réponses tirées de leurs supports de cours, pas de la mémoire générale d’un modèle, et leurs documents comme leurs conversations doivent rester privés. L’école a aussi besoin d’un outil qu’elle peut héberger, administrer et auditer, pas d’un notebook de démonstration.
Réalisation
L’ingestion extrait le texte des PDF, le découpe en fragments qui se chevauchent, les vectorise avec all-MiniLM-L6-v2 et les stocke dans Qdrant. À chaque question, Flask vérifie l’accès à chaque document, récupère les passages pertinents et diffuse la réponse en SSE avec les pages sources. PostgreSQL conserve utilisateurs, rôles, conversations et journaux d’audit ; MinIO garde les PDF originaux ; Redis sert à la limitation de débit. La couche LLM est indépendante du fournisseur (Gemini, Groq, Mistral, OpenRouter, etc.) et se règle depuis l’administration. La console gère utilisateurs, documents, annonces, audit, paramètres et un contrôle de santé en direct de la base, du stockage, des vecteurs et des fournisseurs.
Choix technique
Organiser le stockage en couches avec une source de vérité : PDF et métadonnées sont durables, les vecteurs se reconstruisent à partir d’eux. Isoler complètement l’assistant public du chat privé : il ne voit que le contexte public validé par l’administration, jamais d’identifiants de session ou de document, et ne journalise que des métadonnées avec IP et user-agent hachés.
En pratique
La CI exécute lint et build du frontend, lint du backend et 30 tests, dont des tests de confidentialité des documents. Des correctifs de production sont documentés : un verrou consultatif Postgres empêche les workers gunicorn de se bloquer sur les migrations, et un TTL sur le cache des paramètres propage les changements à tous les workers.
Limites actuelles
- Les citations montrent les passages retrouvés ; elles ne prouvent pas que la réponse est juste.
- L’ancrage de l’assistant public est une consigne donnée au modèle, pas une frontière garantie : son contexte public ne doit contenir aucune donnée privée.
Sur GitHub
- TypeScript
- 1 étoile
- Mise à jour


