Fine-tuning changes the model, not what you feed it
Prompting and RAG both leave the model's weights untouched. Prompting shapes the instructions you send, RAG adds relevant documents to the context window at query time, and in both cases the underlying model is exactly the same frozen set of parameters before and after you use it. Fine-tuning is different. It runs additional training on the model, nudging its actual weights so the behavior you want becomes baked in rather than requested.
That difference is also why fine-tuning is the heaviest tool of the three. It requires a prepared dataset, compute to run the training job, and a new model artifact to version, host, and maintain. You reach for it only when the thing you need genuinely can't be gotten reliably through instructions or context, because everything else is cheaper and faster to iterate on.
