Diagnose before you adapt:
| Failure | Right fix | | --- | --- | | Model lacks your private/current facts | Retrieval (RAG) | | Model knows facts but formats or behaves wrongly | Prompting / few-shot | | Model consistently misses your domain style, taxonomy, or terse format at scale | Fine-tuning (LoRA) | | Needs multi-step actions in your systems | Tools / agents |
LoRA (low-rank adaptation) trains small adapter matrices instead of all weights — minutes to hours, cheap to host, easy to roll back. QLoRA adds 4-bit base quantisation so it fits on a single GPU.
python from peft import LoraConfig, get_peft_model cfg = LoraConfig(r=16, lora_alpha=32, target_modules=["q_proj", "v_proj"], lora_dropout=0.05) model = get_peft_model(base_model, cfg) # trains ~0.1% of parameters
Gotcha: fine-tuning does not reliably inject new facts — it shapes behaviour. Teaching facts by fine-tune usually produces confident, stale answers; keep facts in retrieval where you can update and cite them.