The single most useful thing you can do for a RAG system is to stop judging it by vibes. RAG combines a retrieval step, which searches a knowledge base, with a generation step, where a language model writes an answer from the retrieved text, and the two fail in different ways the AWS explainer. Google Cloud makes the same point sharply: if retrieved information is irrelevant, a generated answer can be perfectly grounded in its sources and still be off-topic or wrong Google Cloud's RAG overview. Separating the two stages is what lets you debug instead of guess Evidently's RAG evaluation guide.
The labeled set is the foundation. For each evaluation item you record four things: the user question, the gold passage or passages that contain the answer, a reference answer written by someone who knows the domain, and an optional note about the question type (factoid, lookup of a specific identifier, multi-hop, or unanswerable).
Fifty items is enough to start. One hundred is comfortable. The arithmetic matters more than the number: a 50-item set has a resolution of 2 percentage points, so a change from 0.72 to 0.76 recall is one item either way. Treat small movements as noise until the set grows.
Two rules keep the set honest. First, sample questions from real usage logs where you have them, and write the rest by hand from the corpus, not from the chunk list, so you do not unconsciously pick questions whose answers you know are easy to retrieve. Second, include about 10 percent unanswerable questions, where the correct behavior is to say the knowledge base does not cover it. A pipeline that never says "I don't know" is not being tested for the failure mode users complain about most.
Anthropic's contextual retrieval work used 248 queries, each with a single golden chunk, to measure retrieval changes, which is a useful reference point for scale Anthropic's contextual retrieval post. You probably do not need that many to make decisions, but you do need the gold-passage discipline.



