LogoKalli
Chatbot

Fine-tuning

Fine-tuning

Le fine-tuning consiste à adapter un modèle de base (foundation model) à un domaine précis en l’entraînant sur des exemples représentatifs. Dans nAI'vi, il sert à ancrer des connaissances « stables » (peu susceptibles d’évoluer) directement dans le modèle, afin de:

  • Améliorer la précision et la cohérence sur le périmètre métier ciblé.
  • Réduire la dépendance au contexte injecté par le RAG pour ces informations durables.
  • Diminuer la latence/coût liés à de grands contextes, tout en conservant le RAG pour les contenus dynamiques.

Pourquoi l’utiliser dans nAI'vi ?

  • Spécialiser chaque bot avec des connaissances cœur de métier qui changent rarement.
  • Éviter de répéter en contexte (RAG) des informations statiques à chaque requête.
  • Garder le RAG en « faible poids » (low weight) pour compléter avec l’information récente, sans supprimer aucune source.

Comment ça marche ?

Sources de données (projet)

  • Les « chunks statiques » sont extraits et étiquetés en amont (via le site) puis lus depuis PostgreSQL.
  • Le module apps/chatbot/src/finetuning/utils.py charge ces chunks via common.db.get_static_chunks() et construit des datasets.

Pipeline implémenté

  1. Chargement des chunks statiques depuis la DB (load_dataset).
  2. Séparation train/éval (train_test_split_df ou interne à load_dataset).
  3. Génération de fichiers JSONL (save_jsonl) → combined_train.jsonl, combined_eval.jsonl.
  4. Création/gestion du job de fine-tuning (create_fine_tuning_job, manage_fine_tuning_job).

Note: la création de job attend des identifiants de fichiers côté Mistral. Selon votre compte, une étape d’upload peut être nécessaire avant create_fine_tuning_job. Adaptez en conséquence si votre client requiert un upload explicite.

Script CLI

Un script d’orchestration est fourni : apps/chatbot/src/finetuning/__main__.py.

Exemple (depuis apps/chatbot/) :

# Windows PowerShell (venv activé)
python -m finetuning --model open-mistral-7b --steps 100 --lr 1e-4

Le script :

  • Initialise le client Mistral via config/config.py et common/mistral.py.
  • Ouvre la connexion PostgreSQL via config/config.py et common/db.py.
  • Génère les JSONL via process_datasets().
  • Lance le job (create_fine_tuning_job + manage_fine_tuning_job).
  • Sauvegarde l’ID du modèle fine-tuné dans model_id.txt.

Bonnes pratiques

  • Curater les chunks vraiment « stables » (définitions, référentiels, procédures peu changeantes).
  • Couvrir les intentions usuelles dans les exemples QA.
  • Versionner jeux de données, hyperparamètres, et modèles.
  • Évaluer régulièrement et itérer.

Références code

  • apps/chatbot/src/finetuning/utils.py
  • apps/chatbot/src/finetuning/__main__.py
  • apps/chatbot/src/common/db.py

Ce que le projet prévoit

  • Sélection et préparation de chunks documentaires « statiques » pour constituer le dataset.
  • Entraînement/évaluation des modèles (ex: Mistral) sur ces exemples, par bot.
  • Gestion multi-bots: datasets & modèles spécialisés, tests/évaluations par personnalité.

Image suggérée: pipeline « Sélection chunks statiques → Dataset → Fine-tuning → Évaluation → Déploiement + RAG low-weight »

Consultez src/finetuning/ pour les utilitaires et scripts liés au fine-tuning.