Resources · 09

RAG quality: evaluate a knowledge assistant with evidence

Measure corpus, retrieval, citations, answers, abstention and drift separately so that you know what genuinely needs fixing.

· 11 min

Fictional empty archive room: six blank document trays, burgundy dossier and brass lamp Illustration · fictional scene

What this guide helps achieve

  • Know whether failure comes from corpus, retrieval or model
  • Trace every citation
  • Reward appropriate abstention
  • Detect drift after change

Quick check

  • Is the reference source authorised and current?
  • Does the right passage appear near the top?
  • Is every decisive claim supported?
  • Can the assistant say it does not know?
  • Are sensitive cases escalated?

Step-by-step method

  1. 01

    Define useful tasks

    Collect real questions, their variants and the expected business result. Add ambiguity, source conflict, expired documents and out-of-scope requests.

    Deliverable: case and risk taxonomy.

  2. 02

    Clean the corpus

    Assign an owner, rights, validity date and status to every source. Remove duplicates, orphan fragments and documents of unknown authority.

    Deliverable: corpus register.

  3. 03

    Evaluate retrieval

    Measure whether necessary passages are found and ranked before assessing final wording. Inspect queries for which no evidence exists.

    Deliverable: coverage and relevance measures.

  4. 04

    Evaluate answers and citations

    Check faithfulness to passages, completeness, limitations, the citation-to-claim relationship and the ability to flag contradiction.

    Deliverable: faithfulness and utility rubric.

  5. 05

    Test refusal and attacks

    Add indirect injection, prohibited data requests, malicious sources, false priority documents and irreversible actions. Define human escalation.

    Deliverable: security results and guardrails.

  6. 06

    Monitor change

    Version corpus, index, settings, model and instructions. Replay the stable set on every change and analyse real feedback without retaining unnecessary data.

    Deliverable: drift dashboard and review procedure.

Understand · try · decide

AI answers: make abstentions and denominators visible

The NIST generative profile addresses confabulation and context-dependent evaluation. For a document assistant, we propose separately counting tested questions, produced answers and answers validated against documents. These formulas are a CIE teaching grid, with no universal threshold.

Define “validated” before testing: an accurate answer, a citation that actually supports the claim, an authorised source and sufficient freshness for the question. A link in the text does not automatically meet these criteria. Record model, corpus and instruction versions.

Separate ordinary questions, missing documents, conflicting sources and out-of-scope requests. Expected abstention on an unanswerable question can be correct. The simulator describes only the subset where an answer was expected; expected abstentions and critical errors need separate results.

Reference points and evidence to retain

Reference pointWhat you can concludeEvidence to retain
Tested questions Scope where an answer was expected Question set and evaluation rule
Produced answers Share of questions receiving an answer Retained answers and abstentions
Validated answers Answers meeting the declared criterion Verdict and supporting document passage
Unanswered questions Tested questions − produced answers Reason and review of the abstention

From observation to decision

  1. Define the expected truth
  2. Freeze corpus and version
  3. Check every answer
  4. Compare by question family

Break down a result before deciding

The same hundred-question set can achieve 90% quality among answers and only 72% success across the full set. This breakdown uses the fictional example, with an answer expected for each question. It is neither a vendor benchmark nor a NIST score.

Validated answers
72 / 10072% of the set
Unvalidated answers
8 / 1008% of the set
Unanswered questions
20 / 10020% of the set
Where do the 100 questions go?
  • 72 / 100 · Validated
  • 8 / 100 · Unvalidated
  • 20 / 100 · Unanswered

100 = 72 + 8 + 20. Of the 80 produced answers, 72 are validated: 90%. The twenty unanswered questions remain visible.

A global average can hide a weak question family
Fictional familyTested / produced / validatedInterpretation
Ordinary questions80 / 78 / 72Quality 72/78 ≈ 92.31%; coverage 78/80 = 97.5%.
Sensitive questions20 / 2 / 0Quality 0/2 = 0%; coverage 2/20 = 10%.
Combined100 / 80 / 72Quality 90%; coverage 80%; success 72%.

These counts illustrate differences between subgroups. Small samples do not justify generalisation to all future questions.

Checks before concluding

  • Record factual error, unsupported citation, stale source, unauthorised access and abstention separately. An average does not describe severity.
  • For a cited passage, verify evidence is present and supports the claim. Also test removed documents and documents accessible to another role.
  • Keep one set for expected answers and another for expected abstentions; declare both denominators and evaluation rules.
  • After corpus, model or permission changes, replay the same cases with recorded versions. Address critical errors before setting a business threshold.

Decision: investigate the sensitive family and the eight unvalidated answers. The global 90% result does not authorise a production release.

Calculation rule

Quality = validated / produced. Coverage = produced / tested. Success across the set = validated / tested. A zero denominator yields a result that cannot be calculated.

Change an assumption

More answers, lower conditional quality

Two configurations are compared on the same hundred fictional questions using identical validation criteria.

  1. Configuration A

    60 answers, 54 validated: 90% of answers and 54% of the full set.

  2. Configuration B

    90 answers, 63 validated: 70% of answers and 63% of the full set.

  3. Trade-off

    B supplies nine more validated answers, but also more unvalidated answers.

Reading exercise: the variations describe fictional situations.

Is configuration B automatically better?
New evidence
A has six unvalidated answers; B has twenty-seven.
What changes
Compare consequences and review cost, not coverage or conditional quality alone. Set the abstention policy for the intended use.
What if these questions were used for tuning?
New evidence
Instructions were adjusted while reviewing this same set.
What changes
Retain the figures as tuning results and also evaluate a separate set. Avoid presenting the same cases as an independent assessment.

Worked example

Illustrative situation

An internal assistant answers from procedures, some of which have expired. The test set contains routine, ambiguous and unanswerable questions; each citation is checked against the document version.

Decision and expected evidence

Release waits until expired sources are excluded, unsupported answers are refused and the corpus owner is identified.

Management indicators

IndicatorWhat it measuresFirst action
Retrieval coverageQuestions for which necessary passages are foundFix corpus, chunking or query before the model
FaithfulnessClaims genuinely supported by cited sourcesBlock or rewrite unsupported answers
Useful abstentionCases without evidence correctly refused or escalatedTune confidence thresholds
RegressionQuality difference between versions on the same setIdentify the responsible change

Common pitfalls

  • Measuring writing fluency only
  • Mixing retrieval failure and hallucination
  • Using an evaluation set that is too easy
  • Changing several components without comparison

Frequently asked questions

How many questions are needed?

Start with a representative, versioned set covering important risks. Diversity and quality matter more than artificial volume.

Is one automated metric enough?

No. It accelerates triage, but sensitive, ambiguous and domain cases need explicit criteria and human review.

Should every conversation be retained?

No. Keep only necessary traces with a defined purpose, access and duration. Prefer anonymised cases for improvement.

RAG: access rights, citations and caches

Evaluate an answer alongside its document rights

A relevant citation can support an accurate answer while revealing a forbidden document. RAG evaluation should separate faithfulness, freshness and authorisation of passages actually supplied to the model.

  • Annotate permitted documents for each test identity.
  • Remove a group and replay an existing conversation and citation.
  • Track incorrect answers, missing evidence and out-of-scope exposure separately.

Explore the RAG access matrix and replay cases →

References consulted on · OWASP · LLM08:2025 Vector and Embedding Weaknesses OWASP · API1:2023 Broken Object Level Authorization

AI: check a JSON result

A retrieved reference does not prove the extracted value

A RAG system can find the right document and return schema-valid JSON that misstates a field. Separate retrieval, the output contract and passage reconciliation to locate what needs correction.

  • Keep an independent reference for decisive fields.
  • Test missing values, contradictions and unavailable documents.
  • Retain unexecuted checks as such instead of counting them as passes.

Compare the 14 outputs and their reasons →

Sources reviewed on · IETF · RFC 8259 · JSON Schema · Object reference · JSON Schema · Draft 2020-12 validation · Python 3.12 · json decoder · python-jsonschema · Schema validation · OWASP · LLM05:2025 Improper Output Handling

RAG relevance and ranking

A RAG system can retrieve useful documents and still produce an incorrect answer. Retrieval evaluation therefore needs its own questions, relevance judgments and defined reading depth. This dossier explains four ranking measures without confusing them with answer faithfulness, access permissions or guaranteed business outcomes.

Documentary references: Stanford CS276’s evaluation material from the 2019 archive and NIST TREC’s reciprocal-rank definition. The CIE workshop uses binary judgments and one query at a time. RR@k here is truncated at k; MRR is a mean RR across multiple queries and is not computed by this workshop.

Stanford CS276 · Retrieval evaluation · 2019 course archive · PDF pp. 3, 5–6 · consulted 2026-10-23

Four measures, four different questions

Four measures, four different questions
MeasureWorkshop calculationUseful readingCondition or limitation
Precision@kRelevant results in the first k / kMeasures the useful proportion in the inspected window.Unavailable if any judgment is missing in the first k.
Recall@kRelevant results in the first k / RR is the number of relevant records in the entire small judged corpus.If R is unknown, publish a value only when it is defined and identical in every possible case.
RR@k1 / rank of the first relevant result within kEquals 0 when no relevant record appears in that fully judged window.An unjudged record before the first relevant result makes that rank uncertain.
nDCG@kDCG@k / IDCG@kCompares ranking gain with the ideal order at the same k.Unavailable if the value changes across possible cases or any case has a zero ideal.

Explicit convention: judgment rᵢ is 0 or 1; DCG@k = Σᵢ₌₁ᵏ rᵢ / log₂(i + 1). With binary relevance, gain 2ʳⁱ − 1 also equals rᵢ. IDCG@k puts min(R, k) relevant records first using the same discount. nDCG@k = DCG@k / IDCG@k when that ideal is defined and nonzero. Keep gain, discount, depth and conventions with any published score.

NIST TREC · Reciprocal rank definition · Repository snapshot 35cf096ba6d5ae08ca4803c056b31ed61a56a6d4 · consulted 2026-10-23

A fictional six-record corpus with declared judgments

Titles and judgments below are created for this exercise. They are neither real search results nor automatic title-based judgments. 1 means relevant, 0 nonrelevant and ? unjudged. Columns Q1–Q5 correspond to the needs displayed in the workshop.

  • Q1 · Prepare a restoration test
  • Q2 · Authorise a document read
  • Q3 · Check a quantum sensor
  • Q4 · Restoration test: C judgment missing
  • Q5 · Restoration: B unjudged, other records off-topic
A fictional six-record corpus with declared judgments
Fictional recordQ1Q2Q3Q4Q5
A · Restoration procedure10011
B · Recovery budget1001?
C · Restoration test log100?0
D · Account and permission guide01000
E · Archiving policy00000
F · Publication schedule00000

Document ranking workshop

Choose a need and enter an ordered list of A–F identifiers separated by commas. Change k to inspect only the first k results. The list may omit documents, but each identifier must be unique and k cannot exceed its length. Calculation stays local without collection, import, transmission, storage or export.

This reader queries no search engine, private corpus or AI model. It measures neither answer truth, correct citation nor permission security. Scores concern declared judgments in this small fictional universe. Do not present an exercise value as a benchmark of your system or a universal deployment threshold.

Unjudged and nonrelevant are different states

Unjudged and nonrelevant are different states
SituationCIE educational convention
Missing judgment within kPrecision may vary. Reciprocal rank remains known if the first relevant record is identified before any unjudged record.
Missing judgment elsewhereR becomes a range of possibilities. Do not assume recall and nDCG are always unknown: a value may remain constant, for example when the order is ideal in every case.
No relevant record in a fully judged corpusPrecision@k and RR@k are 0. The reader shows Recall@k and nDCG@k as unavailable for this zero-denominator case.
CIE publication ruleExplore every binary assignment of missing judgments, at most 64 for six records. Publish a measure only if it is defined and identical in every assignment. These are possibilities, with no probabilities assigned and no actual imputation.

Ten explained scenarios, available without JavaScript

K01 · Relevant records first
Relevant records first
NeedSupplied orderkExpected reading
Q1A,B,C,D,E,F3Precision@3 = 1, Recall@3 = 1, RR@3 = 1 and nDCG@3 = 1 in this fully judged corpus.
K02 · Relevant records after cutoff
Relevant records after cutoff
NeedSupplied orderkExpected reading
Q1D,E,F,A,B,C3All four measures are 0 at k = 3. Relevant records exist but are placed after the inspected window.
K03 · First relevant record at rank two
First relevant record at rank two
NeedSupplied orderkExpected reading
Q1D,A,E,B,F,C3Precision@3 and Recall@3 are 1/3; RR@3 is 1/2. nDCG considers position and the ideal order.
K04 · Relevant records omitted
Relevant records omitted
NeedSupplied orderkExpected reading
Q1A,D,E,F3R remains 3 in the corpus even though B and C are absent from the list. Recall must not use only returned results as its denominator.
K05 · Duplicate identifier
Duplicate identifier
NeedSupplied orderkExpected reading
Q1A,A,B3Input rejected: A must not be counted twice. Correct the ranking rather than inflating the relevant count.
K06 · Unjudged before the first relevant record
Unjudged before the first relevant record
NeedSupplied orderkExpected reading
Q4C,A,D,E,B,F3C is unjudged. Precision@3, Recall@3, RR@3 and nDCG@3 are unavailable under the declared conventions.
K07 · Unjudged after the window
Unjudged after the window
NeedSupplied orderkExpected reading
Q4A,B,D,E,F,C3Precision@3 is 2/3 and RR@3 is 1. Recall@3 and nDCG@3 remain unavailable because C’s corpus judgment is missing.
K08 · Need with no relevant record
Need with no relevant record
NeedSupplied orderkExpected reading
Q3A,B,C,D,E,F3Precision@3 and RR@3 are 0. Recall and nDCG remain unavailable; this is an explicit convention rather than division by zero.
K09 · Change reading depth
Change reading depth
NeedSupplied orderkExpected reading
Q2A,D,B,C,E,F1At k = 1 no relevant record is visible. At k = 2, D appears: precision 1/2, recall 1 and RR@2 = 1/2.
K10 · Unknown relevance, always ideal ordering
Unknown relevance, always ideal ordering
NeedSupplied orderkExpected reading
Q5A,B,C,D,E,F2B may be relevant or not. Either way, all relevant records are within the first two ranks and the order stays ideal: recall, RR and nDCG are 1. Precision remains unknown.

Prepare a reproducible evaluation

Prepare a reproducible evaluation
Suggested checkRecord to retain
NeedsRepresentative and unanswerable questions; specify the documentary need behind each wording.
CorpusDocument and index versions, accessible scope and deletion or revocation rules.
JudgmentsRelevance rule, assessors, disagreements and unjudged state; do not equate clicks with documentary truth.
ProtocolSame k, filters, data and conventions before and after a retrieval change.
RegressionPer-query and per-need-family results, gaining and losing cases, hypothesis and checks on new documents.
Final answerEvaluate faithfulness, citations, useful refusals and permissions separately; better retrieval scores do not validate this stage.

For a reviewable decision, keep the question, ranking, judgments, k and corpus limitations with the score. One average can conceal a regression on a critical need. Error tracking and answer review remain necessary even when the first records are relevant.

Sources, editions and credits

Original CIE explanations, six documents, five needs, judgments and scenarios. Conceptual references: Stanford CS276 and NIST TREC’s reciprocal-rank definition. No source chart, ranking example or code is reproduced. The CIE program and its unavailable-value conventions are not a complete trec_eval implementation.

Stanford CS276 · Retrieval evaluation · 2019 course archive · PDF pp. 3, 5–6 · consulted 2026-10-23

SHA-256 : be38261a8cdbc95551a502504d0a1c146ea453ffd9712243ea067ac8538c1826

NIST TREC · Reciprocal rank definition · Repository snapshot 35cf096ba6d5ae08ca4803c056b31ed61a56a6d4 · consulted 2026-10-23

SHA-256 : 64159909e6e1e4e9e4dd3c569b119fdc90696d0b03cd902e6a9358dcd6e84677

Official references

References consulted: . The method and worksheet propose checks to adapt to your context; they do not constitute certification.