Large language modelsRAG Explained: How Retrieval-Augmented Generation Works and When You Actually Need It