Retrieval-augmented generation gets recommended as a default so often that teams forget it's a tool with real tradeoffs, not a universal fix.
RAG shines when your underlying facts change frequently and you need traceability back to a source document. Fine-tuning shines when you need the model to reliably follow a specific style, format, or domain-specific reasoning pattern.
Most production systems we build end up using both: RAG for facts, light fine-tuning or few-shot examples for behavior. The mistake we see most often is trying to solve a behavior problem with more retrieved context.
Before reaching for either, build an evaluation set. Without one, you're optimizing based on vibes, and vibes don't scale past a demo.