What's the difference between RAG and prompt engineering?
RAG changes what’s in the model’s context by fetching new content at request time; prompt engineering changes how the model is instructed to use whatever’s already there. Prompt engineering edits the fixed parts of a request, the system instructions, the examples, the formatting rules, and it’s static: the same prompt runs on every request regardless of what’s being asked. RAG is dynamic: the question gets embedded, an index returns whichever chunks sit closest to it, and those chunks ride along in the context for that one request only, different content on every call. The two aren’t competing: a RAG pipeline still needs prompt engineering to tell the model how to use what it retrieved, cite it, prefer it over its own knowledge, say when nothing applies. What prompt engineering alone can’t do is hand the model facts it was never trained on or that changed since training, which is exactly the gap behind most production hallucinations: RAG closes it by changing the context, not the instructions.