The difference between RAG that demos well and RAG that survives real questions is what happens when retrieval comes back thin. A basic pipeline generates anyway. An agentic one notices and goes back.
The pipeline, stage by stage
Evaluate retrieval separately from generation
The single most useful habit in this area: score the two halves independently. A bad answer from good context is a generation problem; a good answer from bad context got lucky. Faithfulness, context recall, context precision and answer relevance each tell you which half to fix.
Track unanswerable questions too. A system that confidently answers something its corpus does not cover is worse than one that says it does not know, and only a dedicated eval slice catches it.




