Quick Answer: Measure RAG retrieval by freezing the corpus, running a labeled query set, and scoring whether the right chunks appear in the top k. Do not start with chatbot thumbs-up. Generation can hide a dead index or blame a live one.
RAG retrieval performance is the measured rate at which a retriever returns the judged-relevant chunks for a query before any generator writes an answer. Enterprise teams use it to decide whether to change chunking, embeddings, filters, or the index itself. Latency and cost are separate instruments.
This page is a measurement method. It is not a hybrid-search architecture guide and not a security audit of the corpus. If you cannot name k, the gold documents, and the corpus version, you are scoring anecdotes.
Which metrics actually describe retrieval?
| Metric |
What it answers |
When it misleads |
| Recall@k |
Did any gold chunk appear in the top k? |
Ignores order if you only need “present” |
| Hit rate |
Share of queries with at least one gold hit |
Same as recall@k when each query has one gold set |
| MRR |
How soon the first gold chunk appears |
Punishes useful later passages on long queries |
| nDCG@k |
Did graded relevance land near the top? |
Needs graded labels, not binary bookmarks |
| Precision@k |
How much of the window is junk? |
Looks fine while recall is collapsing |
Pick one primary metric and keep it for a quarter. Recall@k is the usual primary for regulated search because missing a policy clause is worse than ranking it third. Add MRR when users only read the first passage. Add nDCG when legal and FAQ chunks have different value.

Do not mix faithfulness, toxicity, or answer exact-match into the retrieval score. Those measure the generator and the prompt. A perfect answer from a leaked system prompt can coexist with a broken index. Split the reports.
How do you build a gold set that survives a week?
Start from production queries, not from titles you wish users typed. Sample across easy lookups, rare identifiers, and adversarial paraphrases. For each query, mark the chunk IDs that must appear, not the whole source PDF. Two annotators should agree or the item is dropped.
Freeze the corpus hash and the embedding model name with the gold set. If someone rebuilds chunks, the labels expire. Store the index build ID next to the score. Teams that “refresh the index” and keep old labels invent regressions.
Size is a judgment, not a trophy. A few hundred well-agreed queries beat thousands of noisy clicks. Add new queries when a product line or a policy corpus ships. Retire queries whose documents were deleted on purpose so deletion does not look like a recall crash.
What is the measurement procedure?
Run the retriever only. Disable the generator, rerank experiments you are not measuring, and any cache that can serve yesterday’s neighbors. Send each gold query with the same filters production uses: tenant, ACL, language, time window.
Record k that matches the prompt budget. If the model sees eight chunks, score @8, not @100. Publish recall@k, the count of queries, the corpus ID, and the time window. That four-tuple is the result. A chart without those fields is decoration.
Compare one change at a time. A new embedding model plus a new chunk size plus a new filter is not an experiment. If you must ship a bundle, keep a holdout query slice that still runs against the previous index on AI storage architecture that can hold both indexes without mixing IDs.
Which failure modes look like “the model got worse”?
ACL filters that suddenly drop gold chunks look like recall loss. They may be a security fix. Annotate those queries as out of scope instead of tuning embeddings to leak. Empty filters in the test harness look like recall gain. They are a leak.
Clock-skewed document versions produce two gold IDs for one clause. Pick the version the generator is allowed to cite. Embedding backfills that skip a collection produce silent zeros. Count documents in and documents out after every rebuild.
Private GPU retrieval does not change the math. Exclusive cards on private AI infrastructure keep the corpus and the query text off shared hosts. They do not score relevance for you. OneSource Cloud can host the embedding jobs. The gold labels still belong to the search owner.
How should operations watch retrieval after launch?
Schedule the gold set on the production index, not only in a notebook. Alert when recall@k drops beyond an agreed band or when the retrieved document count per query collapses. Pair the alert with index build age so a stuck job is obvious.
Sample live queries weekly for new gold candidates. Users change vocabulary after a launch. A frozen 2024 set will not see a 2026 product name. Do not put a year in the dashboard title unless the corpus itself is time-bounded.
OnePlus Platform, OneSource Cloud's AI orchestration platform, can isolate the evaluation job’s GPU quota from serving so a nightly recall run cannot steal tokens from production. Isolation is scheduling. It is not a quality number.
FAQ
Is retrieval latency part of retrieval performance?
Only if you explicitly define a joint SLO. This method treats quality and latency as separate scores. A 20 ms retriever that misses the policy chunk is a quality failure. A slow retriever that always hits can still be unfit for interactive chat. Publish both. Do not average them into one “health” percentage.
Do we need a reranker before we measure?
Measure the candidate generator first, then the reranked window, as two rows. If you only score the reranker, you will not see a collapsed first-stage recall. Enterprise stacks that add a cross-encoder without a first-stage baseline cannot tell which stage they paid for.
How is this different from answer quality evals?
Answer evals score the string the user saw. Retrieval evals score the evidence the model was allowed to see. You can pass answer evals with a memorized model and a dead index. You can fail answer evals with perfect retrieval and a bad prompt. Keep the files apart.
Can we use LLM-as-judge instead of human gold?
Use a judge only to suggest candidates. Humans still accept the gold IDs for any corpus that can create legal or medical harm. Judges drift when the prompt or the judge model changes. Treat judge-only scores as a development smoke test, not a release gate.
Where should the evaluation index live?
On the same tenancy and region as production if filters and residency rules apply. A laptop index with ACLs stripped will overstate recall. U.S. workloads that cannot leave a named facility should run the gold set there, including Texas / Richardson environments when that is the production boundary.
Summary
Enterprise RAG retrieval performance is recall of labeled chunks at the k your prompt actually uses, on a frozen corpus, with production filters on. Latency, tokens, and answer style are other scores. Change one retrieval variable at a time and keep the gold IDs versioned.
Run the jobs on exclusive GPUs when the queries themselves are sensitive. OneSource Cloud can provide that boundary and the storage for two indexes. The judgment of “relevant” remains an editorial act. Review the OneSource Cloud retrieval hosting options only after the gold set exists.