Ce projet a été développé durant ma 2ᵉ année d'ATER à l'IUT de Montreuil (2024-2025).
SecretarIA est un chatbot de type RAG (Retrieval-Augmented Generation) conçu pour répondre aux questions des étudiants en s’appuyant sur différents documents administratifs, tels que le programme national, la FAQ, la charte de l’établissement, et bien d’autres.
L’idée du projet est née d’un besoin concret : le département informatique de l’IUT ne disposait pas de secrétaire fixe depuis plusieurs mois. J’ai donc décidé de mettre à profit mes compétences en deep learning pour créer un outil capable de répondre aux étudiants, tout en me familiarisant avec la conception d’un système RAG.
- Python 3.12
- LangChain
- Ollama
- Hugging Face
- API Flask
- Swagger / Flasgger
- Tests : Pytest
L’ajout de documents dans SecretarIA est presque entièrement automatisé :
il suffit d’importer le fichier, puis éventuellement de préciser quelques informations optionnelles comme la page de début, la page de fin ou la source du document.

Exemple de l’interface Swagger pour ajouter un document
-
✔️ Prise en charge des fichiers simples ou multi-feuilles.
**SecretarIA bonjour en quoi puis-je vous aider ?
Qu'est-ce que les 24h INFO ?
Réponse : Les 24h INFO sont un événement organisé par les IUT de France, d'une durée de 24 heures, durant lequel chaque IUT d'informatique peut envoyer une équipe pour tenter de remporter la compétition.
Trois épreuves sont proposées : généralement, il s'agit d'une épreuve d'algorithmique, d'une épreuve de web et d'une épreuve de cybersécurité.Sources :
- Fichier : FAQ.xlsx
- Date : 11/09/2025 17:39:36
- Page : 1
- Passage : 11
- Score : 65%
- Consulter l'image de référence
- Fichier : FAQ.xlsx
-
✔️ Gestion des fichiers simples ou multi-pages.
-
SecretarIA bonjour, en quoi puis-je vous aider ?
En quoi consiste le cours de Complément Web ?
Réponse :
Le cours de Complément Web (ressource R4.Real.10) vise à compléter les techniques de développement web afin d'atteindre des capacités de développement full-stack.Il s'articule autour des compétences suivantes :
- Développer une solution informatique pour un client (conception, codage, test, intégration).
- Optimiser des applications en fonction de critères techniques (temps d'exécution, consommation de ressources).
- Satisfaire les besoins des utilisateurs en intégrant des méthodes agiles pour piloter un projet informatique.
- Assurer la sécurité des données (intégrité, confidentialité) et la restitution des données via la programmation et la visualisation.
Les savoirs de référence incluent : la programmation web (côté client et serveur), l'ergonomie et l'accessibilité, la sécurité (filtrage, injection, encodage).
Le cours s'appuie sur la SAÉ 4.Real.01 (Développement d'une application complexe) et intègre des apprentissages critiques comme l’évaluation de l’impact environnemental, la formalisation des besoins clients.Volume horaire : 17 heures (dont 13 heures de TP).
Sources :
- Annexe 2 – BUT Informatique (PDF)
- Date : 11/09/2025 08:52:53
- Pages : 143–144
- Passage : 2
- Score : 47%
- Consulter l'image de référence

Document de référence – Programme nationalSecrétarIA bonjour en quoi puis-je vous aider ?
Combien d'heures dure le cours de programmation multimédia ?
Réponse :
Le cours de programmation multimédia dure 9 heures, dont 6 heures de TP (travaux pratiques).Sources :
- Programme Nationnal du BUT Informatique (PDF)
- Date : 11/09/2025 08:52:33
- Pages : 156–157
- Passage : 2
- Score : 48%
- Consulter l'image de référence

Document de référence – Programme national😉 Envie de vérifier ces réponses ? N’hésite pas à cliquer sur le lien indiqué et à te rendre à la page correspondante. 😉
⚠️ Les présentations (slides) ne sont pas encore totalement prises en charge.**SecretarIA bonjour en quoi puis-je vous aider ?
Quels sont les caractéristiques du langage Python ?
Réponse :
Les caractéristiques du langage Python sont :- Langage de haut niveau
- Interprété
- Dynamiquement typé
- Typage fort
- Gestion automatique de la mémoire
- Orienté objet
- Un langage défini par les indentations
Sources :
- Fichier : introduction_au_langage_de_programmation_python.pdf
- Date : 10/09/2025 20:11:41
- Pages : 7–9
- Passage : 2
- Score : 70%
-
-
Images
⚠️ L’indexation des images est possible grâce à un modèle IA compatible, mais cette fonctionnalité est encore en cours d’optimisation.SecretarIA bonjour en quoi puis-je vous aider ?
En quoi consiste la formation du BUT ?
Réponse :
La formation du BUT se déroule sur 3 ans, organisée en six semestres.
Elle inclut des parcours différenciés à partir de la deuxième année, tels que :- « Réalisation d’applications : conception, développement, validation »
- « Administration, gestion et exploitation des données »
Des stages obligatoires sont prévus :
- 8 à 10 semaines en deuxième année
- 12 à 16 semaines en troisième année
L’alternance est également possible à partir de la deuxième année (ou dès la première année pour le BUT GACO), remplaçant les stages.
Sources :
-
Fichier : formation_BUT.jpeg
- Date : 11/09/2025 17:42:35
- Page : 1
- Passage : 2
- Score : 61%
-
Fichier : FAQ.xlsx
- Date : 11/09/2025 17:39:36
- Page : 3
- Passage : 14
- Score : 50%
Les résultats présentés ici correspondent à la première version du système et donnent un aperçu de la qualité du code ainsi que des performances des différentes fonctionnalités.
Le code a été testé avec un ensemble de tests Pytest et sa qualité analysée grâce à SonarQube.
Pour l’indexation des documents, plusieurs métriques sont utilisées pour évaluer la qualité des chunks :
-
Boundary Clarity & Chunk Stickiness (issus de MoC: Mixtures of Text Chunking Learners for RAG, [arXiv:2503.09600v1])
- Boundary Clarity : mesure si les frontières des chunks correspondent aux coupures sémantiques naturelles.
- Chunk Stickiness : évalue la cohérence interne de chaque chunk.
-
HOPE (Holistic Passage Evaluation) ([arXiv:2505.02171])
Combine la cohérence interne du chunk, son indépendance vis-à-vis des autres, et sa fidélité au document d’origine.
⚠️ Dans la majorité des cas, la validation finale des chunks c'est faite manuellement via la visualisation des chunks présents dans la base de données.
Trois types de retrievers ont été testés :
- Cosine Distance : recherche basée sur la similarité cosinus entre les embeddings.
- BM25 : modèle probabiliste classique de recherche d’information.
- Hybrid : combinaison de Cosine Distance et BM25 pour tirer parti des deux approches.
Les métriques utilisées pour mesurer les performances sont les suivantes :
- Rappel : proportion de passages utiles réellement retrouvés.
- Taux de réussite : au moins un passage pertinent a été trouvé.
- MRR (Mean Reciprocal Rank) : prend en compte la position du premier bon passage.
- NDCG (Normalized Discounted Cumulative Gain) : évalue la pertinence et l’ordre des passages retrouvés.
Statistiques comparant les 3 types de retrievers testés (Cosine Distance, BM25, Hybrid).
Statistiques comparant les 3 types de retrievers avec reranking appliqué.
Statistiques pour le retriever Cosine, avec et sans reranking.
Statistiques pour le retriever BM25, avec et sans reranking.
Statistiques pour le retriever Hybrid, avec et sans reranking.
La qualité des réponses générées par le modèle est évaluée à l’aide de plusieurs métriques :
- BLEU : mesure la correspondance des n-grammes entre la réponse générée et la référence, reflétant la précision lexicale.
- ROUGE-1 : mesure la correspondance des unigrammes (mots individuels) entre la réponse et la référence.
- ROUGE-2 : mesure la correspondance des bigrammes (paires de mots) entre la réponse et la référence.
- ROUGE-L : mesure la plus longue sous-séquence commune (Longest Common Subsequence) pour évaluer la similarité globale.
- METEOR : combine correspondances exactes, synonymes et racines des mots pour une évaluation plus flexible de la similarité.
- BERT Score : mesure la ressemblance sémantique entre la réponse générée et un exemple de référence à l’aide d’embeddings contextualisés.
- F1 Score : évalue la précision et le rappel des mots utilisés dans la réponse par rapport à la référence.
La robustesse du système est évaluée en mesurant sa capacité à :
- Fournir une réponse correcte lorsqu’une information pertinente est disponible.
- Renvoyer une réponse automatique ou adaptée lorsqu’aucune réponse précise n’est trouvée.
Les métriques utilisées pour cette évaluation sont :
- Vrais positifs (VP) : réponses correctes correctement identifiées.
- Faux positifs (FP) : réponses incorrectes identifiées comme correctes.
- Vrais négatifs (VN) : absence de réponse correcte correctement identifiée.
- Faux négatifs (FN) : réponses correctes manquées.
- Matrice de confusion : visualise l’ensemble des performances du système.
Exemple de matrice de confusion pour la robustesse du système.
Cette première version du système comporte plusieurs limites connues :
- Absence d’interface graphique : le système est actuellement utilisable uniquement via le terminal ou l’API.
- Chunking non testé via agent : le chunking avec un agent n’a pas encore été expérimentée ni comparée à la méthode actuelle.
- Évaluation à approfondir : certaines fonctionnalités nécessitent des tests supplémentaires pour confirmer les performances et la robustesse du système.
- LLM "Judge" non testé : l’utilisation d'un LLM as judge pour évaluer le système n’a pas pu être réalisée en raison de limitations matérielles.











