Skip to content

Fab16BSB/SecretarIA

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 

Repository files navigation

SecretarIA

📚 Contexte

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.


⚙️ Technologies utilisées

  • Python 3.12
  • LangChain
  • Ollama
  • Hugging Face
  • API Flask
  • Swagger / Flasgger
  • Tests : Pytest

🗂️ Documents pris en charge

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.

Swagger – ajout de document
Exemple de l’interface Swagger pour ajouter un document


  • TXT ✔️

  • DOCX ✔️

  • CSV ✔️

  • ODT ➔ en cours d'implementation / test

  • EXCEL

    ✔️ 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 :

    Document de référence (FAQ)
    Document de référence – FAQ


  • PDF

    ✔️ Gestion des fichiers simples ou multi-pages.

    • PDF classique

      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 :

      Programme Nationnal du BUT Informatique (PDF)
      Document de référence – Programme national

      Secré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 national – Document 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. 😉

    • Slides

    ⚠️ 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%

    Slides Python – Document de référence
    Document de référence – Slides Python


  • 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%
    • Consulter l'image de référence

    Document de référence
    Document de référence – Schéma de la formation

    Document de référence
    Document de référence – FAQ


📊 Évaluation

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.

🖼️ Qualité du code

Le code a été testé avec un ensemble de tests Pytest et sa qualité analysée grâce à SonarQube.

Screen Sonar

Capture du rapport Sonar

✂️ Évaluation du chunking

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.


🔍 Évaluation du retrieval

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.

Comparaison globale des retrievers

Retrievers – Comparaison globale
Statistiques comparant les 3 types de retrievers testés (Cosine Distance, BM25, Hybrid).

Retrievers avec reranking
Statistiques comparant les 3 types de retrievers avec reranking appliqué.


Performance par retriever

Cosine Distance
Statistiques pour le retriever Cosine, avec et sans reranking.

BM25
Statistiques pour le retriever BM25, avec et sans reranking.

Hybrid
Statistiques pour le retriever Hybrid, avec et sans reranking.


✍️ Évaluation de la génération

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.

Hybrid
Statistiques pour la génération du système.


🛡️ Robustesse du système

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.

Matrice de confusion
Exemple de matrice de confusion pour la robustesse du système.


🛑 Limitations

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.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published