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 citationsRAGLe 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)RAGRé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 exceptionFine-tuningFine-tuningC'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 taskFine-tuningFine-tuningLe 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 taskFine-tuning ou décompositionFine-tuning or decompositionUn 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 callingFine-tuning + décodage contraintFine-tuning + constrained decodingLe comportement s'apprend ; la forme se garantit.The behaviour is learned; the shape is guaranteed.
Questions multi-sauts complexesComplex multi-hop questionsRAG + agentRAG + agentAucun 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 wrongRAG puis fine-tuningRAG then fine-tuningLe 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ètreParameterDépartStartRemarqueNote
r168–64 selon la complexité du comportement8–64 by behaviour complexity
lora_alpha2 × rConvention solideSolid convention
learning_rate2e-4Bien plus élevé qu'un fine-tuning completMuch higher than full fine-tuning
num_train_epochs2Presque toujours 1 à 3. Au-delà : mémorisationAlmost always 1–3. Beyond: memorisation
lot × accumulationbatch × accumulation2 × 4 = 8Montez l'accumulation quand la VRAM manqueRaise accumulation when VRAM is short
max_seq_length1024–2048Mesurez le taux de troncature sur vos donnéesMeasure the truncation rate on your data
datasetdataset100–1000Qualité > quantité. Incluez les cas difficilesQuality > quantity. Include hard cases
validationvalidation10–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 template Un 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

SignalSignalDiagnosticDiagnosisActionAction
Perte de validation qui remonteValidation loss risingSur-apprentissageOverfittingArrêter, reprendre au minimum de validationStop, resume from the validation minimum
Perte qui ne descend pasLoss not fallingTaux d'apprentissage trop bas, ou gabarit incohérentLearning rate too low, or inconsistent templateVérifier le gabarit d'abord, puis monter le tauxCheck the template first, then raise the rate
Réponses recopiées mot pour motAnswers copied verbatimMémorisation du datasetDataset memorisationMoins 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 tasksOubli catastrophiqueCatastrophic forgettingMélanger 10–20 % de données généralesMix in 10–20 % general data