Business

Measuring Help Center Retrieval: Recall and Precision

Antonio Evans8 min read

A help center search results page is shown on a laptop screen.
Key points

Key points

  1. 1Retrieval quality is measured against a labeled set of real user queries, not against how good the answers look in a demo.
  2. 2Recall asks whether every passage that should answer the question came back; precision asks how much of what came back was actually relevant.
  3. 3A small query set is enough to start: even a few dozen labeled queries expose failures that spot checks hide.
  4. 4The fix for low recall is content coverage and wording (synonyms, split articles, better headings); the fix for low precision is chunking and pruning.

Define relevance before you count anything

Precision and recall only mean something once you decide what a relevant passage is. In classification terms, precision is the fraction of retrieved items that are relevant, and recall is the fraction of relevant items that were retrieved (Wikipedia's precision and recall overview). Search evaluation uses the same definitions on the set of records returned by a query (Measuring Search Effectiveness).

For a help center, translate those definitions into passages and queries:

  • Unit of retrieval. The chunk your system actually indexes and returns, usually a paragraph or section, not the whole article. Zendesk describes ingestion as splitting knowledge into chunks, embedding each one, and comparing the user message against those vectors (Zendesk's content optimization guide).
  • Relevant. A chunk that contains enough information to write a correct answer to the query, either alone or combined with another returned chunk. Not "mentions the topic" and not "is in the same article."
  • Binary labels with a tiebreaker rule. The classic formulation treats each item as relevant or irrelevant, and the literature is candid that marginal cases exist and different raters disagree (Measuring Search Effectiveness). Write a one-line rule: for example, "relevant if a support agent could answer the customer from this chunk without opening another tab." Have two people label your first twenty queries and compare notes before scaling up.

The reason to be strict is that a help center has a specific failure mode: the answer is written down but unreachable, buried in the third paragraph of a long page or locked inside a screenshot (HelpDocs on AI knowledge bases). A loose relevance label hides exactly that failure.

Build a small labeled query set

You do not need thousands of queries. You need queries that resemble what users actually type, plus labels that say which chunks should answer each one.

  1. Pull real queries. Export search logs, chat transcripts, and the subject lines of recent tickets. If you have none, write questions from sales-call objections, not from your documentation table of contents.
  2. Sample for coverage, not volume. Aim for a first batch of around 30 to 50 queries spread across every topic area, weighted toward your highest ticket categories.
  3. Phrase them like users, not like docs. "Why was I charged twice" not "duplicate charge handling policy." Zendesk's guidance for AI-readable content is to use the wording your customers use, spell out acronyms, and avoid vague pronouns (Zendesk help).
  4. Label the gold set. For each query, list every chunk that would count as an answer. This list is your denominator for recall, so missing a valid answer makes your recall look better than it is.
  5. Freeze a snapshot. Store the query, the labeled chunk IDs, the top K results, and the date. Re-run the same set after every content change so you can tell improvement from noise.

One practical shortcut: create the gold set by pooling. Take the top 10 results from your current retriever, plus the top 10 from a plain keyword search, plus anything a support agent finds manually, and label that union. This is the pooling approach described in search evaluation literature as a way to approximate the set of relevant records without scanning the whole corpus (Measuring Search Effectiveness). It biases recall slightly upward, because a chunk nothing ever retrieves can never be labeled missing, so treat the number as a floor.

The formulas, with a worked example

The two metrics at K, the number of results you actually pass to the answer generator, are:

  • Precision at K = relevant chunks in the top K, divided by K
  • Recall at K = relevant chunks in the top K, divided by all relevant chunks that exist for that query

Evidently AI defines both this way for ranking and recommendations, with relevance as a per-use-case binary label (Evidently AI on precision and recall at K). Meilisearch applies the same pair to RAG chunking, noting that precision is true positives over true positives plus false positives, while recall is the chunks retrieved with the answer over the total chunks containing the answer (Meilisearch on chunking strategies).

Take a query: "Can I get a refund after 30 days?" Say three chunks in your knowledge base are genuinely relevant (call them A, B, C), and you retrieve the top 5: A, D, B, E, F. Of those five, A and B are relevant.

MetricCalculationResult
Precision at 52 relevant / 5 returned0.40
Recall at 52 relevant retrieved / 3 relevant that exist0.67
Hits (relevant found)A, B2 of 3
Misses (relevant not found)C1

Now do that for every query and average. Suppose you have 40 queries: precision at 5 averages 0.62 and recall at 5 averages 0.71. That is your baseline. Two decision rules follow, and they are what separates a useful measurement from a vanity number:

  • Recall below roughly 0.8 is a content problem first. If the right passage is not in the top K at all, no amount of answer-writing polish fixes it. The customer gets a confident non-answer or a deflection.
  • Precision below roughly 0.5 is a ranking and chunking problem. Half your context window is filler, which raises cost and gives the generator more chances to anchor on the wrong passage. Databricks and others frame chunk quality as a direct driver of retrieval accuracy, since a chunk that mixes two subjects produces weaker similarity scores than two focused chunks (Databricks on chunking).

A short script to compute both over a labeled set:

def score(query_id, retrieved_ids, relevant_ids, k=5):
    top = retrieved_ids[:k]
    hits = [doc for doc in top if doc in relevant_ids]
    precision = len(hits) / k
    recall = len(hits) / len(relevant_ids) if relevant_ids else 0.0
    return query_id, precision, recall, hits

rows = [score(q, r, rel) for q, r, rel in labeled_queries]
avg_p = sum(row[1] for row in rows) / len(rows)
avg_r = sum(row[2] for row in rows) / len(rows)
print(f"precision@5={avg_p:.2f} recall@5={avg_r:.2f}")

Pick K to match the context you actually pass

K is a design choice, not a constant. It should equal the number of chunks you feed the model, because that is the point where a bad result costs something.

AI knowledge base platforms routinely let you set how many chunks are retrieved per query, and the tradeoff is explicit: more chunks means more cost per request and more chance of noise, fewer chunks means cheaper but less complete context (a walkthrough of knowledge base settings). That maps directly onto precision and recall at K. Increase K and recall rises while precision usually falls; decrease K and the reverse. The two metrics are inversely related in general because broadening a search to catch more relevant material also pulls in more irrelevant material (Measuring Search Effectiveness).

The useful insight here is a per-query view rather than an average. Compute recall at 5 and recall at 10 for each query and look at the gap:

  • If recall at 5 is 0.5 and recall at 10 is 0.9, the right passage is there but ranked too low. Raising K hides the problem at the cost of tokens. The better fix is reranking or better headings.
  • If recall at 10 is still 0.4, raising K will never help. The passage is missing or unreachable, so the fix is content.

NVIDIA's chunking experiments found that optimal chunk size varied by dataset and query type, with factoid questions favoring smaller chunks and complex analytical questions benefiting from larger chunks or page-level boundaries, and page-level chunking produced the highest average end-to-end accuracy across the datasets tested (NVIDIA's chunking research). The general lesson transfers to help centers: set K and chunk size by measuring on your own queries, not by picking round numbers.

Diagnose failures and rewrite with a target

An average score tells you there is a problem. A per-query failure table tells you which rewrite to do. Sort your queries by recall, take the ten worst, and read the gold chunks against what was retrieved.

SymptomLikely causeTargeted fix
Relevant chunk never retrieved, query uses different wordingVocabulary mismatch between user language and article languageAdd the customer's phrasing as a heading or a sentence; use the wording your users use (Zendesk)
Relevant chunk exists but is fragmented across a long articleArticle covers several topics; chunking splits the answerSplit into one article per question; ensure content is focused on one topic
Correct article returned, wrong passage answersChunk mixes two subjectsUse semantic or heading-based chunking so each chunk holds one fact (Meilisearch)
Two contradictory answers both score wellDuplicate or outdated content in the indexDelete or merge the stale version
Answer lives in an image, chart or tableText extraction missed itAdd alt text and write the fact out in the body (Zendesk)
High recall, low precisionTop K crowded with loosely related chunksTighten chunk size, add reranking, remove off-topic sections

Three writing rules do most of the recall work, and all come from vendor guidance on making content machine-readable: make each piece self-contained instead of linking out, repeat the topic from the title in the body, and avoid vague pronouns so a chunk still makes sense when it is read alone (Zendesk help center docs). HelpDocs makes the same point from the agent side: a grounded assistant answers from retrieved passages and cites them, so the quality ceiling is set by your content, not the model (HelpDocs).

Measure a rewrite the same way you measured the baseline. Change one article, re-run the frozen query set, and compare the recall of the five queries that touched it. If a synonym added to a heading moves those five from 0.2 to 0.8, keep it. If it moves nothing, revert it: the problem was elsewhere.

A cadence that keeps the numbers honest

Retrieval quality decays quietly. Products change, policies expire, and the query mix shifts toward whatever broke this month. A maintenance loop:

  1. Weekly: re-run the frozen set, log precision and recall at K, and flag any query that dropped.
  2. Per content release: re-run the subset of queries that touch the changed articles.
  3. Monthly: add ten new real queries from logs and retire stale ones, so the set tracks user language.
  4. Quarterly: re-check the relevance rules with a second labeler on a sample, to catch drift in how your team applies them.

Also track a business-facing counterpart. Zendesk recommends resolution-focused measures such as search success and self-service ratio alongside model metrics (Zendesk's AI knowledge base guide). Recall is your leading indicator; deflection is the outcome. When recall at 5 climbs from 0.7 to 0.9 and self-service resolution moves with it, you have evidence that the content work paid.

If the labeling and re-running becomes the bottleneck, the interchangeable part is the retrieval call itself: the same query set can be pointed at a managed retrieval API to compare retrievers or embeddings without rebuilding your pipeline. Quanta Inference exposes text and embedding models through one OpenAI-compatible API key, which keeps that comparison to a config change (Quanta Inference).

FAQ

FAQ

What is a good recall score for a help center?

There is no universal threshold, but a practical target is recall at your working K above 0.8 for high-volume topics, because a miss means the assistant cannot answer and must deflect. Start from your measured baseline and treat any query below the target as a content ticket. Track the average and the worst ten queries, since the average hides the failures customers actually hit.

Do I need a huge labeled dataset?

No. Thirty to fifty well-chosen real queries with strict labels will surface the failures that matter, and you can grow the set monthly from logs. Search evaluation literature notes that recall is often estimated from a pool of identified relevant records rather than the full corpus, which is exactly this approach (Measuring Search Effectiveness).

Why is recall harder to measure than precision?

Precision only requires judging what came back, which is visible in front of you. Recall requires knowing everything that should have come back, and that set is unknown, which the literature identifies as the core measurement difficulty (Measuring Search Effectiveness). Pooling results from multiple retrievers and manual agent searches is the standard workaround.

Should I optimize precision or recall first?

Fix recall first for any query where the correct passage never appears, because an unfindable answer cannot be rescued downstream. Once recall is acceptable, raise precision by tightening chunking and trimming off-topic content so the context window carries signal. The two trade off against each other, so set targets per K rather than chasing both blindly (Research Solutions on the tradeoff).

Does a better or larger model fix weak retrieval?

No. Grounded answers are built from retrieved passages, so a stronger generator writes more fluent prose from the same wrong chunk. Model selection happens after you have an evaluation baseline; the sound sequence is to set up evals, meet an accuracy target with the best model available, then substitute smaller models to control cost where results hold (OpenAI's practical guide to building agents). Retrieval quality is a content and chunking problem first.

Sources

Sources

  1. Precision and recall - Wikipedia
  2. PDF Measuring Search Effectiveness
  3. Optimizing your knowledge content for generative AI - Zendesk help
  4. AI Knowledge Base: Build a Foundation AI Can Use - HelpDocs
  5. Precision and recall at K in ranking and recommendations - Evidently AI
  6. 13 RAG chunking strategies for better retrieval - Meilisearch
  7. Mastering Chunking Strategies for RAG - Databricks Community
  8. How To Create An Accurate AI Knowledge Base - YouTube
  9. Finding the Best Chunking Strategy for Accurate AI Responses
  10. AI knowledge base: 10 best tools & complete guide (2026) - Zendesk
  11. How LLMs Can Improve Search Precision & Recall
  12. A Practical Guide to Building AI Agents - OpenAI
About the author

About the author

Antonio Evans
Antonio Evans

Antonio Evans is the founder of Quanta Intelligence and a fractional CTO who builds HIPAA-ready AI systems for health and life-science companies. Before that he was technical co-founder of FriendsEAT for twenty years, CEO of Socialdraft, and a data engineer at IBM. Antonio lives with his dog Santino in Lisbon, Portugal.

All articles