Skip to main content
Arcus

Retrieval quality measurement

Were those the right documents?

Arcus answers that with a number instead of an impression. It replays your questions against your retrieval interface, joins what came back against what a person judged relevant, and returns eleven standard measures with the worst questions sorted to the top. It measures. It writes no answers of its own.

Write to [email protected]. Replies go out within five working days.

Company
ARCUS AI PTY LTD
Jurisdiction
New South Wales
Measures
Eleven, all standard
Output
Numbers, not answers
Reply time
Five working days

The question

1Retrieval is the quiet half, and the quiet half is where the fault usually is

A generation step fails loudly and gets blamed. The retrieval step in front of it fails silently and does not.

A retrieval system takes a question, searches an index and hands back a ranked list of passages. Something downstream then reads that list. It might be a language model writing an answer, it might be a search results page, it might be a person scrolling. Whatever it is, it can only work with what the list contains.

When the output is wrong, the argument in the room is almost always about the model. Change the prompt. Try a larger model. Add a grounding instruction. Sometimes that is the right argument. Often the model was never given the passage it needed, answered from whatever it did receive, and the whole debate is being held about the wrong component.

Telling those cases apart is not a matter of judgement or of reading enough transcripts. It is a measurement, and it is a measurement that has been well defined in the information retrieval literature for sixty years. The awkward part is that very few teams running a retrieval pipeline in 2026 are taking it.

Four ways an answer goes wrong

Four failure modes that look identical from outside the pipeline
What actually happenedWhat the user seesWhere the fault isWhat a measurement would say
The right passage was retrieved and was in the context, and the answer was still wrongA wrong answerThe generation stepRecall at k is high for this question. Stop blaming retrieval and go and look at the prompt
The right passage was never retrieved at allA confident wrong answer, or a refusalRetrievalRecall at k is zero for this question, and no amount of prompting will fix it
The right passage was retrieved at rank eighteen, and the pipeline passes eightThe same wrong answer, and a harder one to believeRanking, or the cut offRecall at twenty is high, recall at eight is zero. The document was found and then thrown away
No passage in the index answers the questionA refusal, or an inventionThe corpusNo labelled document for this question is returned under any configuration. This is a content problem wearing a software costume
The whole idea

Those four rows need four different people to fix them, and three of the four are invisible if the only thing being examined is the final answer. Separating them is the entire product.

The measures

2Eleven numbers, each answering a different complaint

Scroll the shelf sideways. None of these are ours, and that is the point of using them.

M01

Recall at k

recall@k

Of the documents a person marked relevant for this question, what share appeared anywhere in the top k. A pipeline cannot use what it never fetched, so this number is the ceiling on everything downstream of it.

The ceiling on the whole pipeline

M02

Precision at k

precision@k

Of the k documents returned, what share were actually relevant. Low precision fills a context window with material that has to be discarded, and in a generation pipeline the thing doing the discarding is a model that will never mention it.

What the wrong ones cost

M03

Discounted cumulative gain

nDCG@k

Rank sensitive and grade sensitive. A relevant document at position one counts for more than the same document at position nine, discounted logarithmically, then divided by the best ordering that was available for that question.

Position and grade together

M04

Mean reciprocal rank

MRR

One divided by the rank of the first relevant document, averaged across the query set. The right number to read when the reader stops at the first useful hit and everything below it is decoration.

First useful hit only

M05

Success at k

success@k

The blunt one. What share of questions returned at least one relevant document at all. It earns its place because an average hides the fact that one question in twelve comes back with nothing usable.

How often nothing usable

M06

Index coverage

coverage

What share of the documents in the index are ever returned by any question in the set. A document that no question reaches is paying for storage and answering nobody, and no per query measure above can see it.

The corpus, not the query

M07

Redundancy share

redundancy@k

What share of a result set is near duplicate passages from a single source, sitting in slots a second source could have used. High recall with high redundancy is a result set that looks healthy and says one thing.

Slots spent saying it twice

M08

Split answer rate

split@k

How often the passage that actually answers the question was cut across two chunks, so that neither half scores well enough on its own to be retrieved. A chunking fault that presents as a retrieval fault.

A chunking fault in disguise

M09

Rewrite agreement

rewrite-overlap

Where the pipeline rewrites a question before retrieval, how far the result set for the rewritten question overlaps the result set for the original. Rewriting is meant to help, and this is the number that says whether it did.

Did the rewrite wander

M10

Re-index stability

stability

Whether the same question returns the same documents after the index is rebuilt, the embedding model is swapped, or the chunker is retuned. Change that nobody measured is change your users will find first.

What moved when you rebuilt

M11

Label agreement

kappa

Where two people judged the same question and document pair, how often they agreed once agreement by chance is taken out. Every number above is worth exactly as much as the labels underneath it.

Measuring the ruler itself

Eleven measures. The shelf scrolls sideways.

We invented none of these

Recall and precision at a cut off, mean reciprocal rank and discounted cumulative gain are standard information retrieval measures. The experimental method they belong to goes back to the Cranfield studies of the 1960s and has been run annually at scale since the first Text Retrieval Conference in 1992. Normalised discounted cumulative gain in the form most people use was set out by Jarvelin and Kekalainen in 2002.

A company that claimed to have invented a new measure of retrieval quality would deserve a long sceptical look, and would need to publish the definition, the derivation and a reproduction before anyone believed it. We are making no such claim. The measures are public, old and well understood. What is missing on most teams is not a new measure. It is a labelled query set, a harness that runs it, and somebody looking at the result on a Tuesday. Arcus supplies the label store, the harness and the report. The Tuesday is yours.

The expensive part

Every number on that shelf needs relevance judgements underneath it, and relevance judgements are made by people reading documents. We have no trick for making that cheap, and any vendor who tells you they do should be asked to show the agreement rate between their labels and yours. That is what M11 exists for.

Boundary

3Where the boundary sits, and why it holds

The category is crowded with things that sound similar, so the line is drawn in plain words. An instrument that also serves the traffic it grades is marking its own homework.

Arcus measures retrieval, and that is the whole of it. It reads result lists and computes numbers over them. There is no point at which it composes a sentence for a user to read as an answer, and that omission is what keeps the instrument independent of the thing it is grading.

What Arcus leaves alone, and what does that job instead
Left aloneWhy the confusion happensWhat does that job
A chatbot or an assistantTwo letters in the company nameA model provider behind whatever interface your team already chose. Nothing here produces natural language for an end user. The output is a table of numbers and a list of the questions that did worst
A vector database or a search indexMeasuring retrieval sounds close to storing the things retrievedThe index you already run, whichever it is. This is designed to read result lists made of document identifiers, ranks and scores, and it has nowhere to put a corpus even if it wanted one
A model providerEverything in this field is assumed to be selling inferenceWhoever you already pay for embeddings and generation. Nothing here is trained, nothing is hosted, and no inference is served
An observability or performance productBoth of them watch a system that is runningYour existing tracing, logging and uptime tooling. Latency, error rate and cost per query are real numbers that matter, and none of them is retrieval quality. Confusing the two is how a slow pipeline gets described as an inaccurate one
A document storeEvaluating documents sounds like holding documentsWherever your documents live now. Arcus holds identifiers, ranks, scores and labels, and never the document text
A public leaderboardBenchmarks are the visible half of this fieldPublic benchmarks, which are useful for comparing methods and nearly useless for deciding whether your pipeline works. The measures here are computed on your questions against your corpus, which is the only comparison that decides anything on your team

The parts

4Six parts, and the job each one does

Five that carry the measurement, and one deliberately left on the far side of the boundary.

Query set and label store

Stores

Where the questions live, alongside the human judgements about which documents answer them.

  • What it doesHolds a set of real questions, and for each one a list of document identifiers graded relevant, partly relevant or not relevant, with who judged it and when.
  • How it worksGraded relevance rather than a yes or no flag, because nDCG needs grades and because most real judgements are not binary.
  • Why it mattersEvery number Arcus reports rests on this store. A judgement carrying an author and a date can be argued with; a judgement held in somebody's head cannot.

Run harness

Runs

Replays a query set against your retrieval endpoint and records what came back.

  • What it doesTakes a query set, calls your retrieval interface once per question, and records the ordered identifiers, ranks and scores that were returned.
  • How it worksIt calls an endpoint you expose. It does not embed anything, index anything or reach into your database.
  • Why it mattersThe pipeline under test stays yours and stays untouched, so a run grades the system your users actually hit rather than a copy of it.

Grouping report

Reports

The per question and aggregate table that the eleven measures are written into.

  • What it doesComputes the measures per question, aggregates them across the set, and sorts by the worst so the reading order is the fixing order.
  • How it worksThe per question rows come first. An aggregate score with no way to reach the questions behind it is a number that changes nobody's Tuesday.
  • Why it mattersThis is the artefact you carry into the room. It names the questions that failed rather than handing over an average and leaving the argument open.

Drift watch

Compares

Re-runs the same query set after a change and shows what moved.

  • What it doesCompares two runs of one query set and lists the questions whose result sets changed, ranked by how far the measures moved.
  • How it worksThe comparison is per question, so a steady average concealing forty questions moving in opposite directions still comes out.
  • Why it mattersChange nobody measured is change your users find first. A chunker retune or an embedding swap gets a before and an after instead of a shrug.

Label agreement check

Checks

The measure that points at the instrument rather than at your pipeline.

  • What it doesWhere two people judged the same pair, reports raw agreement and a chance corrected coefficient, and flags the question and document pairs the judges split on.
  • How it worksDisagreement is surfaced rather than averaged away. A pair two people cannot agree on is usually a badly written question.
  • Why it mattersIt is the check that makes the other ten worth quoting. Ask any vendor of retrieval measurement for it, this one included.

Answer scoring

Out of scope

Grading the text a language model produced at the end of the pipeline.

  • Why it sits outsideIt is a different problem with different failure modes, it is well served by other tools, and taking it on here would blur the one boundary the whole instrument rests on.
  • What you get insteadWhere your retrieval measures are healthy and the answers are still wrong, Arcus says so clearly and then stops. That is the correct place for it to stop.
  • Would the line moveOnly for a reason better than customers asking, and this page would carry the change before any of it was written.

The run

5Seven steps from a question to a fix

The whole sequence, start to finish, on your questions against your corpus.

One thing at a time

Step seven is the one teams skip. Changing the chunker and the embedding model in the same week produces a number that moved and no way to say which change moved it.

  1. Assemble a query set. Fifty to three hundred real questions taken from what people actually ask your system, not questions written to be answerable.
  2. Judge them. For each question, a person reads candidate documents and grades them. This is slow, it is the part nobody wants to do, and skipping it means every number afterwards is decorative.
  3. Point the harness at your retrieval interface. One call per question. The harness records the ordered document identifiers, their ranks and their scores.
  4. Join the results against the judgements. Identifier against identifier. No document text is needed for this step and none is requested.
  5. Compute the measures. Per question first, then aggregated across the set.
  6. Read the worst questions. Sorted ascending, so the reading order is the fixing order.
  7. Change one thing and run it again. The chunker, the embedding model, the number of results, the rewrite step. One at a time, because two at a time tells you nothing.

What a run records, and what it never records

What leaves your environment during a run, and what stays behind
RecordedNever recordedWhy the line sits there
Document identifiers and their ranksDocument text or passage contentsEvery measure on the shelf is computed from identifiers and ranks. Document text adds nothing to the arithmetic and adds a great deal to what a breach would cost
Retrieval scores as returned by your systemEmbedding vectorsA score is a number your system already produced. A vector can often be inverted back towards the text it came from
A stable identifier for each questionThe question text, unless you choose to include itReal user questions are frequently personal information. The join works on identifiers, so the text is optional by construction rather than by policy
Timing of the run and the configuration labelCredentials, connection strings or endpoint secretsThe harness runs where your credentials already are and has no reason to carry them anywhere

That line is published rather than left to a support answer, because a data boundary you can read before you send anything is a constraint and one you learn afterwards is an apology. Where a row of it ever changes, this page carries the change and says which line moved.

Start here

6Put a document set to the test

No form anywhere on this site. An address instead, with somebody at the other end of it.

Tell us the shape of your corpus and the shape of your questions, and you get back a straight read on which of the eleven measures would tell you something you do not already know, and what the labelling would cost you before it told you.

If you already measure your retrieval, we want to know what you measure and what you found. If you do not, we want to know what stopped you, because the answer is usually the labelling cost and we would rather hear that from you than assume it. And if you think the premise of this page is wrong, that is the most useful message this mailbox can receive. It is worth more than agreement.

Write to [email protected]. Replies go out within five working days. Nothing about writing to us subscribes you to anything, because there is no list to be subscribed to.