Contexte du stage :
L’utilisation d’agents conversationnels a littéralement explosé ces dernières années, suite à la mise à disposition massive de grand modèles de langage (LLMs) tels que chatGPT. Bien que très performants, ces outils sont généralement mis à disposition sous forme d’applications web ou bien de fonctionnalités intégrées à des logiciels. Dans ce second cas, les logiciels communiquent quasi-systématiquement avec des serveurs distants pour les tâches d’inférence ou d’amélioration de l’expérience utilisateur. La plupart des LLMs librement disponibles ne permettent alors pas de garantir la confidentialité et souveraineté des données qui leurs sont accessibles. Ceci est un réel frein à leur adoption dans de nombreuses entreprises ou structures publiques. Dans ce contexte, une solution largement émergeante est l’utilisation de réseaux de neurones de type LLM embarqués sur des serveurs locaux qui questionnent des bases de données internes aux structures (voir schéma ci-dessous). On parle alors de stratégie RAG pour Retreieval Augmented Generation, ce qui sera au coeur de ce stage. Le stage consistera en effet à mettre en place un agent conversationnel de type RAG pour l’évaluation des risques professionnels dans les unités CNRS. Un ensemble de documents de référence internes au CNRS seront utilisés pour alimenter le LLM. Le livrable sera une IA conversationnelle intégrée à une interface web, capable d’assister les unités dans la rédaction et la mise à jour du DUERP (Document Unique d’Évaluation des Risques Professionnels). Cette IA s’appuiera sur :
- La réglementation en matière de santé, sécurité et prévention des risques professionnels.
- Des modèles d’évaluation issus des unités du CNRS.
Le tout devra être simple d’utilisation et répondre aux exigences de sécurité informatique de l’établissement.
Description technique du projet :
Le projet inclura l’étude et la mise en œuvre de différentes stratégies de “chunking” (division de texte en segments pertinents) afin d’optimiser la recherche dans la base de données.
Plusieurs modèles de langage (LLM) seront évalués, aussi bien pour la partie embedding (indexation vectorielle) que pour la génération de réponses (inférence).
Des méthodes automatiques d’évaluation seront utilises pour mesurer la performance du système sur les deux étapes clés : la recherche (retrieval) et la réponse finale.
Enfin, le fine-tuning des modèles d’embedding et de LLM avec Pytorch pourra être envisagé afin d’adapter le système à des jeux de données spécifiques du CNRS. La solution sera ensuite intégrée et conteneurisée afin de pouvoir être déployée et utilisée sur un serveur distant. La solution sera codée en Python avec l’utilisation d’Ollama.
Compétences et apprentissages du stage :
- Utilisation d’un cluster HPC (soumission et suivi de jobs, optimisation des performances, exécution sur GPU, accès distant via SSH, etc)
- RAGs (Retrieval-Augmented Generation)
- Stratégies de chunking
- Gestion des embeddings
- Évaluation des performances de différents LLMs
- Fine-tuning des modèles
- Chiffrement et déchiffrement de bases de données
- Développement web
- Intégration du RAG dans un serveur web
- Mise à disposition via une interface en ligne sécurisée
Pour la montée en compétence sur l’ensemble de ces domaines et l’implémentation des solutions, le ou la stagiaire sera accompagné(e) par deux ingénieurs calcul ayant déjà travaillé sur des problématiques similaires.
Plus de détails sont disponibles dans le fichier de présentation du stage. Vous pouvez aussi envoyer votre CV et une lettre de motivation courte à Laurent Risser (lrisser@math.univ-toulouse.fr) pour candidater.