RAG vs fine-tuning — fiche de décisionRAG vs fine-tuning — decision sheet
Une question tranche : ajoutez-vous de la connaissance (des faits) ou changez-vous un comportement (style, format, tâche) ?One question settles it: are you adding knowledge (facts) or changing a behaviour (style, format, task)?
1. La table de décisionThe decision table
BesoinNeed
RéponseAnswer
PourquoiWhy
Répondre à partir de vos documents, avec citationsAnswer from your documents, with citations
RAG
Le RAG sait quel document a servi. Le fine-tuning ne le sait pas.RAG knows which document was used. Fine-tuning does not.
Faits qui changent souvent (tarifs, procédures, catalogue)Facts that change often (prices, procedures, catalogue)
RAG
Réindexer prend des secondes ; réentraîner prend des heures et « oublie ».Re-indexing takes seconds; retraining takes hours and "forgets".
Format de sortie strict, appliqué sans exceptionStrict output format, applied without exception
Fine-tuningFine-tuning
C'est un comportement, pas une connaissance. RAG ne l'impose pas de façon fiable.That is a behaviour, not knowledge. RAG does not impose it reliably.
Jargon maison, ton spécifique, tâche répétitiveIn-house jargon, specific tone, repetitive task
Fine-tuningFine-tuning
Le modèle connaît l'info mais ne la présente pas comme vous voulez.The model knows the info but does not present it the way you want.
Réduire le coût par appel sur une tâche répétitiveCutting per-call cost on a repetitive task
Fine-tuning ou décompositionFine-tuning or decomposition
Un petit modèle affiné remplace un gros prompt — mais décomposer coûte souvent moins cher.A small tuned model replaces a big prompt — but decomposing is often cheaper.
Appel d'outil systématique et fiableConsistent, reliable tool calling
Aucun des deux seuls n'y suffit : il faut plusieurs récupérations enchaînées.Neither alone suffices: you need several retrievals chained.
Le fond est bon mais la forme toujours fausseSubstance right, form always wrong
RAG puis fine-tuningRAG then fine-tuning
Le RAG apporte les faits, le fine-tuning impose la forme. C'est le cas d'usage idéal du LoRA.RAG supplies facts, fine-tuning imposes form. This is LoRA's ideal use case.
🎯 Règle de séquencement : commencez toujours par le RAG. Il est réversible, immédiat, citable et débuggable. Le fine-tuning ne se justifie que lorsque vous avez déjà un RAG qui fonctionne et que le problème restant est un problème de forme.Sequencing rule:always start with RAG. It is reversible, immediate, citable and debuggable. Fine-tuning is justified only when you already have a working RAG and the remaining problem is one of form.
2. Le pipeline RAG, avec les points de contrôleThe RAG pipeline, with checkpoints
INGESTION -> DÉCOUPAGE -> EMBEDDING -> STOCKAGE -> RÉCUPÉRATION -> GÉNÉRATION CITÉE
│ │
┌──────────┘ CONTRAINTE : taille des fragments <= └─► ÉTAGE 2
│ fenêtre du modèle d'embedding faithfulness
│ (granite-embedding du lab = 512 tokens)
└─► ÉTAGE 1 : recall@k, MRR
DÉFAILLANCES ET CORRECTIONS
« ne trouve jamais le bon document » -> étage 1
découpage (structurel) · modèle d'embedding (MTEB) ·
recherche hybride (dense + lexical) · reranking · réécriture de requête
« a le bon document mais raconte autre chose » -> étage 2
prompt · contrainte de citation · modèle génératif plus grand ·
MOINS de fragments (un fragment pertinent bat cinq approximatifs)
⚠️ Le piège du découpage : un fragment plus long que la fenêtre d'embedding est tronqué silencieusement à l'indexation. Aucune erreur, mais la seconde moitié n'existe pas dans le vecteur. Sur le lab, granite-embedding a une fenêtre de 512 tokens : visez 300–400 tokens par fragment, avec chevauchement.The chunking trap: a chunk longer than the embedding window is silently truncated at index time. No error, but the second half does not exist in the vector. On the lab, granite-embedding has a 512-token window: aim for 300–400 tokens per chunk, with overlap.
⛔ Mesuré sur le lab : une forte similarité ne signifie pas « contient la réponse ».Measured on the lab: high similarity does not mean "contains the answer".Sur la question « quelle est la formule du cache KV », les 5 fragments récupérés venaient tous de la bonne leçon (le premier à 0,898 de similarité) — mais c'étaient les fragments du quiz et du récapitulatif, pas la section contenant la formule. La génération a répondu « la formule n'est pas mentionnée » puis a improvisé une tautologie. Cause : découpage non structurel. Cinq questions sur huit trouvaient pourtant le bon document au rang #1 (recall@5 = 0,62).On the question "what is the KV cache formula", all 5 retrieved chunks came from the right lesson (the first at 0.898 similarity) — but they were the quiz and recap fragments, not the section containing the formula. Generation answered "the formula is not mentioned" then improvised a tautology. Cause: non-structural chunking. Yet five of eight questions found the right document at rank #1 (recall@5 = 0.62).
3. QLoRA — hyperparamètres de départQLoRA — starting hyperparameters
ParamètreParameter
DépartStart
RemarqueNote
r
16
8–64 selon la complexité du comportement8–64 by behaviour complexity
lora_alpha
2 × r
Convention solideSolid convention
learning_rate
2e-4
Bien plus élevé qu'un fine-tuning completMuch higher than full fine-tuning
num_train_epochs
2
Presque toujours 1 à 3. Au-delà : mémorisationAlmost always 1–3. Beyond: memorisation
lot × accumulationbatch × accumulation
2 × 4 = 8
Montez l'accumulation quand la VRAM manqueRaise accumulation when VRAM is short
max_seq_length
1024–2048
Mesurez le taux de troncature sur vos donnéesMeasure the truncation rate on your data
datasetdataset
100–1000
Qualité > quantité. Incluez les cas difficilesQuality > quantity. Include hard cases
validationvalidation
10–20 %
Jamais le jeu qui sert à l'évaluation finaleNever the set used for final evaluation
⛔ La défaillance silencieuse n°1 : le gabarit de chatSilent failure #1: the chat templateUn gabarit différent de celui du modèle de base et l'entraînement converge quand même — la perte descend, tout semble normal — mais le modèle produit des réponses dégradées. Relisez un exemple formaté à l'œil avant chaque entraînement (tokenizer.apply_chat_template). Le script du lab 7 l'affiche pour cette raison.A template different from the base model's and training still converges — loss falls, everything looks normal — but the model produces degraded answers. Re-read one formatted example by eye before every training run (tokenizer.apply_chat_template). The Lab 7 script prints it for that reason.
4. Signaux d'alarme pendant l'entraînementWarning signals during training
SignalSignal
DiagnosticDiagnosis
ActionAction
Perte de validation qui remonteValidation loss rising
Sur-apprentissageOverfitting
Arrêter, reprendre au minimum de validationStop, resume from the validation minimum
Perte qui ne descend pasLoss not falling
Taux d'apprentissage trop bas, ou gabarit incohérentLearning rate too low, or inconsistent template
Vérifier le gabarit d'abord, puis monter le tauxCheck the template first, then raise the rate
Réponses recopiées mot pour motAnswers copied verbatim
Mémorisation du datasetDataset memorisation
Moins d'époques, rang plus bas, plus de diversitéFewer epochs, lower rank, more diversity
Régression sur les tâches généralesRegression on general tasks
Oubli catastrophiqueCatastrophic forgetting
Mélanger 10–20 % de données généralesMix in 10–20 % general data