A demo answers the questions you tried. Production answers the ones you didn’t. Here is how we find the difference before your users do.
Every RAG demo looks good. Someone loads a folder of documents, asks the questions they already know the answers to, and the system answers them. Then it meets real users and real questions, and the answers get vague, out of date or confidently wrong.
Why demos flatter RAG
A demo tests the questions you thought of. Users ask the ones you didn’t: with typos, with internal jargon, about the one policy that changed last month. Retrieval fails quietly. The right passage is ranked eleventh, the model never sees it, and it fills the gap with something plausible.
Measure before you tune
Before we touch a prompt, we build a golden set: real questions from the people who will use the system, each paired with the passage that answers it. Then we score two things separately. Did retrieval find the right passage? Did the answer use it correctly?
# grade(answer, expected) is 1 when the answer matches the expected one, else 0
def evaluate(retrieve, answer, golden_set):
found = right = 0
for q in golden_set:
passages = retrieve(q.question)[:5]
found += q.passage in passages
right += grade(answer(q.question, passages), q.answer)
n = len(golden_set)
return found / n, right / nSplitting the score matters. If retrieval is the problem, a better prompt won’t help. If the answer is the problem, a better index won’t either.
What we watch in production
Once the system is live, the golden set keeps running, on every change and against a sample of real traffic. When accuracy drops, we know which half broke and we fix that half.
None of this is glamorous. It is the boring part of the work, and it is the part that decides whether anyone trusts the answers.
[Author name] · [Role] at Agentix · Published 4 November 2026

