From e588e2bf08a996c7e7a8e686945d3aca274c77cb Mon Sep 17 00:00:00 2001 From: Dylan Couzon Date: Thu, 16 Apr 2026 16:33:07 -0400 Subject: [PATCH 01/64] add proposed changes --- changes.md | 169 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 169 insertions(+) create mode 100644 changes.md diff --git a/changes.md b/changes.md new file mode 100644 index 000000000..236c2743c --- /dev/null +++ b/changes.md @@ -0,0 +1,169 @@ +Problems in Evaluation and Retrieval Quality Measurement: +No bridge from technical metrics to business outcomes. The existing tutorial covers ANN recall and precision but doesn't connect these to retrieval relevance or business impact. Brian's three-level framework (ANN recall, retrieval relevance, business impact) is not documented. + +Golden query set generation at scale not covered. Ground truth construction is mentioned but no methodology for generating golden queries at scale or handling the data leakage risks that Goodnotes flagged. + +No "which metric when" decision guidance. Customers use inconsistent metrics because there's no guidance on choosing K values, selecting between recall and precision, or when NDCG matters. This varies, but maybe we can provide some general direction with disclaimers + +--- + +## Proposed Changes + +### Architecture: split into 3 pages + +The existing `retrieval-quality.md` is too long and mixes conceptual framing, ground truth methodology, and hands-on HNSW tuning into a single page. Customers searching for metric guidance or ground truth construction have no way to land directly on the relevant content. The three problems map cleanly onto three distinct pages. + +| New page | Slug | Addresses | +|---|---|---| +| Retrieval Quality Fundamentals | `retrieval-quality-fundamentals` | Problems 1 and 3 | +| Building a Golden Query Set | `retrieval-quality-golden-set` | Problem 2 | +| Retrieval Quality Evaluation *(existing)* | `retrieval-quality` *(unchanged)* | Existing HNSW tuning content | + +The existing `retrieval-quality.md` keeps its path and both aliases so no redirects break. The `### Quality metrics` subsection moves from the existing page into page 1, since it is conceptual context rather than hands-on instruction. + +--- + +### Page 1 (new): Retrieval Quality Fundamentals + +**File:** `qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-fundamentals.md` + +**Proposed content:** + +```markdown +--- +title: Retrieval Quality Fundamentals +weight: 4 +--- + +# Retrieval Quality Fundamentals + +Before we start measuring, it is worth understanding what we are actually measuring. Retrieval quality operates at three distinct levels, and it is easy to optimise for the wrong one. + +The first level is **ANN recall**: does the approximate search return the same results as an exact nearest-neighbour search? This is a purely algorithmic question about how faithfully HNSW approximates exhaustive search. It has nothing to do with whether those results are useful to a human. + +The second level is **retrieval relevance**: of the results returned, how many are actually relevant to the query intent? This requires a labeled ground-truth dataset or human judgment. A pipeline can achieve near-perfect ANN recall and still surface irrelevant documents if the embeddings are a poor fit for the task. + +The third level is **business impact**: does better retrieval lead to better outcomes — lower hallucination rates in downstream LLMs, higher task-completion rates, or improved user satisfaction scores? This is what stakeholders ultimately care about, but it is the hardest to measure directly. A practical way to start connecting these levels is to run a retrieval experiment offline — vary one parameter, measure the change in `recall@10`, and compare it against a held-out set of user tasks scored for answer quality. Even a rough correlation (e.g. "a 5-point drop in recall@10 corresponds to a 3-point drop in answer quality score on our test set") gives engineering and product teams a shared language for prioritisation. + +## Quality metrics + +There are various ways to quantify the quality of semantic search. Some of them, such as [Precision@k](https://en.wikipedia.org/wiki/Evaluation_measures_(information_retrieval)#Precision_at_k), +are based on the number of relevant documents in the top-k search results. Others, such as [Mean Reciprocal Rank (MRR)](https://en.wikipedia.org/wiki/Mean_reciprocal_rank), +take into account the position of the first relevant document in the search results. [DCG and NDCG](https://en.wikipedia.org/wiki/Discounted_cumulative_gain) +metrics are, in turn, based on the relevance score of the documents. + +If we treat the search pipeline as a whole, we could use them all. However, for the ANN algorithm itself, anything based on the relevance score or ranking is not applicable. Ranking in vector search relies on the distance between the query and the document in the vector space, and distance is not going to change due to approximation, as the function is still the same. Therefore, the right measure for the ANN algorithm is **`recall@k`**: of the true k nearest neighbours returned by exact search, how many does the approximate search recover? It is calculated as `|ANN results ∩ exact results| / k`. + +### Choosing the right metric + +The right choice of metric depends on what the search pipeline does with its results, and the best option will vary by use case. The table below provides a general starting point. + +| Scenario | Recommended metric | Why | +|---|---|---| +| Tuning HNSW parameters | `Recall@k` vs exact search | Measures how many of the true k nearest neighbours the ANN found; ranking is unaffected by approximation | +| RAG pipeline (LLM reads top-k chunks) | `Recall@k` | The LLM can recover if a relevant doc is at position 3 vs 1; missing it entirely hurts more | +| Single-answer retrieval (FAQ, Q&A) | `MRR` or `Precision@1` | The first result is what the user acts on; lower ranks matter little | +| Re-ranking or recommendation feeds | `NDCG@k` | Order within the result list matters; a highly relevant doc at rank 5 is worse than at rank 1 | + +On choosing `k`: it is worth setting it to match actual usage. If the application shows 5 results to the user, we should measure `@5`. If a RAG pipeline passes 10 chunks to the LLM, we should measure `@10`. Reporting `@100` for a UI that surfaces 5 results will make the metric look artificially good. + +`NDCG` is worth the added complexity only when we have **graded relevance labels** — for example 0/1/2 scores per query-document pair rather than binary relevant/not-relevant — and when the downstream system actually benefits from fine-grained ranking. Without multi-grade annotations, the simpler metrics will give us a cleaner signal with less labeling overhead. + +## Next steps + +To build a labeled dataset for relevance evaluation, see [Building a Golden Query Set](/documentation/tutorials-search-engineering/retrieval-quality-golden-set/). To measure and tune the ANN recall of a Qdrant collection in practice, see [Retrieval Quality Evaluation](/documentation/tutorials-search-engineering/retrieval-quality/). +``` + +--- + +### Page 2 (new): Building a Golden Query Set + +**File:** `qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-golden-set.md` + +**Proposed content:** + +```markdown +--- +title: Building a Golden Query Set +weight: 5 +--- + +# Building a Golden Query Set + +| Time: 20 min | Level: Intermediate | | | +|--------------|---------------------|--|----| + +Evaluating retrieval relevance requires a labeled dataset of queries paired with their expected relevant documents — commonly called a *golden query set* or *ground truth*. The [Retrieval Quality Evaluation](/documentation/tutorials-search-engineering/retrieval-quality/) tutorial uses the test split of a pre-labeled Hugging Face dataset, which is convenient but not representative of real production traffic. Let's look at how to build one at scale from our own data. + +## Generating queries + +The highest-fidelity source is **real user queries mined from logs**. If the application records clicks or explicit feedback, we can sample query-document pairs and use them directly. This should be the first option we reach for before generating synthetic data. When sampling, it is worth stratifying by query type or topic cluster rather than sampling uniformly at random — a random sample will over-represent frequent queries and leave rare-but-important cases uncovered. As a rough minimum, 200–300 labeled pairs are enough to get a stable metric signal for most use cases; 1000+ is preferable when evaluating subtle ranking differences. + +When logs are not available, **LLM-based synthetic generation** is a practical alternative. For each document in the corpus, we can prompt a capable LLM to generate a handful of queries that a user would plausibly ask if they were looking for that document. This scales cheaply to thousands of query-document pairs. + +```python +import anthropic + +client = anthropic.Anthropic() + +def generate_queries_for_doc(doc_text: str, n: int = 3) -> list[str]: + response = client.messages.create( + model="claude-sonnet-4-6", + max_tokens=256, + messages=[{ + "role": "user", + "content": ( + f"Generate {n} short, realistic search queries that would lead a user to the " + f"following document. Return only the queries, one per line.\n\n{doc_text}" + ), + }], + ) + return response.content[0].text.strip().splitlines() +``` + +For high-stakes applications, **human annotation** is the cleanest approach. Domain experts rate query-document pairs on a 3–5 point relevance scale, which is expensive but produces the signal needed for NDCG-based evaluation. + +## Avoiding data leakage + +Data leakage occurs when the documents used to generate queries also appear in the indexed corpus during evaluation, making retrieval artificially easy. There are two common failure modes to watch for. + +The first is **query generation leakage**: if we generate synthetic queries from the same documents that are indexed, the LLM's phrasing may closely mirror the document text, inflating relevance scores compared to what real users would produce. We can avoid this by generating queries only from a held-out document split that is **not** indexed during evaluation. + +The second is **train/test split leakage**: if the golden set overlaps with the data used to fine-tune the embedding model, we are measuring in-distribution performance. We should always verify that golden-set documents are absent from any embedding model fine-tuning data. + +A simple safeguard for structural separation: hash document IDs and assign even hashes to the indexed corpus, odd hashes to the query-generation pool. This guarantees split integrity with no manual bookkeeping. It does not, however, protect against all forms of leakage. **Near-duplicate leakage** can occur when two documents are nearly identical — a query generated from one will trivially retrieve the other, inflating scores. We can guard against this by deduplicating the corpus with a similarity threshold (e.g. cosine similarity > 0.95) before splitting. **Temporal leakage** is a risk in time-sensitive corpora: if evaluation queries were generated from documents that post-date the indexed corpus, we are testing on data the system was never meant to retrieve. In those cases, the split should be by time rather than by hash. +``` + +--- + +### Page 3 (existing): Retrieval Quality Evaluation + +**File:** `qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality.md` + +**Changes required:** +- Remove the `### Quality metrics` subsection (moving to page 1) +- Update the `weight` from `4` to `6` +- Add a brief intro sentence linking to page 1 for conceptual background +- Keep both existing aliases unchanged: + - `/documentation/tutorials/retrieval-quality/` + - `/documentation/beginner-tutorials/retrieval-quality/` +- Rename `avg_precision_at_k` → `avg_recall_at_k` throughout (function definition, all call sites, `print` output strings) +- Rename the `precision` variable → `recall` inside the function body +- Update the code comment `# We can calculate the precision@k` → `# We can calculate the recall@k` +- Update prose references: "calculate the `precision@5`" → "calculate the `recall@5`", "the precision of the approximate search" → "the recall of the approximate search", "we need higher precision" → "we need higher recall", "we can increase the precision" → "we can increase the recall", "The precision has obviously increased" → "The recall has obviously increased", "HNSW does a pretty good job in terms of precision" → "HNSW does a pretty good job in terms of recall" +- In `## Standard mode vs exact search`, update "so we can calculate the `precision@k` for different values of `k`" → "so we can calculate the `recall@k` for different values of `k`" +- In `## Tweaking the HNSW parameters`, "the higher the precision of the search" (appears twice) is describing HNSW graph precision in the sense of accuracy — leave these as-is since they are describing a general property of the index, not the metric name + +--- + +### Index table update + +**File:** `qdrant-landing/content/documentation/headless/content/tutorials/search-engineering.md` + +Replace the single existing `Retrieval Quality Evaluation` row with three rows: + +```markdown +| [Retrieval Quality Fundamentals](/documentation/tutorials-search-engineering/retrieval-quality-fundamentals/) | Understand evaluation levels and choose the right metric. | Python | 15m | Intermediate | +| [Building a Golden Query Set](/documentation/tutorials-search-engineering/retrieval-quality-golden-set/) | Generate ground truth data at scale and avoid data leakage. | Python | 20m | Intermediate | +| [Retrieval Quality Evaluation](/documentation/tutorials-search-engineering/retrieval-quality/) | Measure ANN recall and tune HNSW parameters. | Python | 30m | Intermediate | +``` From 0ae51086d63dee967d8e6d376ed26b3f0b0a527c Mon Sep 17 00:00:00 2001 From: Dylan Couzon Date: Mon, 20 Apr 2026 10:20:11 -0400 Subject: [PATCH 02/64] clean up changes --- changes.md | 109 ++++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 82 insertions(+), 27 deletions(-) diff --git a/changes.md b/changes.md index 236c2743c..2b4c0eed3 100644 --- a/changes.md +++ b/changes.md @@ -3,7 +3,7 @@ No bridge from technical metrics to business outcomes. The existing tutorial cov Golden query set generation at scale not covered. Ground truth construction is mentioned but no methodology for generating golden queries at scale or handling the data leakage risks that Goodnotes flagged. -No "which metric when" decision guidance. Customers use inconsistent metrics because there's no guidance on choosing K values, selecting between recall and precision, or when NDCG matters. This varies, but maybe we can provide some general direction with disclaimers +No "which metric when" decision guidance. Customers use inconsistent metrics because there's no guidance on choosing K values, selecting between recall and precision, or when NDCG matters. This varies, but maybe we can provide some general direction with disclaimers. --- @@ -21,6 +21,8 @@ The existing `retrieval-quality.md` is too long and mixes conceptual framing, gr The existing `retrieval-quality.md` keeps its path and both aliases so no redirects break. The `### Quality metrics` subsection moves from the existing page into page 1, since it is conceptual context rather than hands-on instruction. +A note on `precision@k` vs `recall@k` in the ANN-only section: when exact and approximate search each return exactly `k` results, `|ANN ∩ exact| / k` is numerically identical whether you call it precision or recall. The ANN-benchmarks literature standardises on **recall**, and we are aligning with that convention — but we should commit to the rename consistently across the page (see Page 3 changes) rather than mixing the two terms in the same document. + --- ### Page 1 (new): Retrieval Quality Fundamentals @@ -33,17 +35,43 @@ The existing `retrieval-quality.md` keeps its path and both aliases so no redire --- title: Retrieval Quality Fundamentals weight: 4 +aliases: + - /documentation/tutorials/retrieval-quality-fundamentals/ --- # Retrieval Quality Fundamentals +| Time: 15 min | Level: Intermediate | | | +|--------------|---------------------|--|----| + Before we start measuring, it is worth understanding what we are actually measuring. Retrieval quality operates at three distinct levels, and it is easy to optimise for the wrong one. The first level is **ANN recall**: does the approximate search return the same results as an exact nearest-neighbour search? This is a purely algorithmic question about how faithfully HNSW approximates exhaustive search. It has nothing to do with whether those results are useful to a human. The second level is **retrieval relevance**: of the results returned, how many are actually relevant to the query intent? This requires a labeled ground-truth dataset or human judgment. A pipeline can achieve near-perfect ANN recall and still surface irrelevant documents if the embeddings are a poor fit for the task. -The third level is **business impact**: does better retrieval lead to better outcomes — lower hallucination rates in downstream LLMs, higher task-completion rates, or improved user satisfaction scores? This is what stakeholders ultimately care about, but it is the hardest to measure directly. A practical way to start connecting these levels is to run a retrieval experiment offline — vary one parameter, measure the change in `recall@10`, and compare it against a held-out set of user tasks scored for answer quality. Even a rough correlation (e.g. "a 5-point drop in recall@10 corresponds to a 3-point drop in answer quality score on our test set") gives engineering and product teams a shared language for prioritisation. +The third level is **business impact**: does better retrieval lead to better outcomes — lower hallucination rates in downstream LLMs, higher task-completion rates, or improved user satisfaction scores? This is what stakeholders ultimately care about, but it is the hardest to measure directly. The causal chain from a vector match to a user outcome is long and easily dominated by generator behaviour, UI, and other confounders, so no single offline metric is a reliable proxy for a KPI. The next section describes how teams bridge this gap in practice. + +## Connecting the levels in practice + +The three levels are not measured in isolation. Teams that successfully connect retrieval work to business outcomes tend to build an **evaluation ladder** that runs each layer at a different cadence and cost, and uses the result of each layer to decide whether to invest effort at the next: + +| Layer | Question it answers | Cadence | Cost | +|---|---|---|---| +| `Recall@k` vs exact kNN | Is the ANN plumbing sound? | Every CI run | ~free | +| `Recall@k` / `NDCG@k` vs labeled golden set | Are the right documents surfacing? | Weekly | cheap (pre-built set) | +| End-to-end answer quality on golden set, scored by LLM-as-judge or human rating | Does the user actually get a correct answer? | Weekly | moderate | +| Online A/B behind a flag | Does the business KPI move? | Per release | expensive | + +Each layer is necessary but not sufficient. A win at layer 2 that does not carry through to layer 3 usually means the generator or the prompt is the bottleneck, not retrieval — this is the single most useful diagnostic the ladder provides, and the reason teams should not collapse layers 2 and 3 into a single score. + +**Isolate the component under test.** When end-to-end quality moves, hold one side fixed: evaluate retrieval with the generator frozen, and evaluate the generator with retrieval frozen. Without this, attribution collapses into guesswork and the ladder stops being diagnostic. + +**Proxy KPIs for teams without A/B infrastructure.** Most teams do not have the traffic or tooling to run a proper A/B. Cheap production signals that correlate with business value — click position on surfaced results, answer copy or share rate, session-level task completion, thumbs-up/down — can be instrumented long before a formal experimentation platform exists, and sit usefully between the golden-set layer and the full A/B. + +**Pre-register the decision rule.** Before running the A/B, write down what constitutes a win and what constitutes a no-ship, in terms of both the retrieval metric and the KPI. This is the highest-leverage discipline for avoiding "recall improved but the KPI didn't — the KPI is noisy, let's ship anyway" rationalisation. + +**Tooling.** Qdrant owns layers 1 and 2 directly. For layer 3, the ecosystem has mature tooling — [Ragas](https://docs.ragas.io/), [Phoenix](https://phoenix.arize.com/), [DeepEval](https://docs.confident-ai.com/) — that handles LLM-as-judge scoring and offline answer-quality eval. Use those rather than rebuilding the scoring harness in-house. ## Quality metrics @@ -52,18 +80,20 @@ are based on the number of relevant documents in the top-k search results. Other take into account the position of the first relevant document in the search results. [DCG and NDCG](https://en.wikipedia.org/wiki/Discounted_cumulative_gain) metrics are, in turn, based on the relevance score of the documents. -If we treat the search pipeline as a whole, we could use them all. However, for the ANN algorithm itself, anything based on the relevance score or ranking is not applicable. Ranking in vector search relies on the distance between the query and the document in the vector space, and distance is not going to change due to approximation, as the function is still the same. Therefore, the right measure for the ANN algorithm is **`recall@k`**: of the true k nearest neighbours returned by exact search, how many does the approximate search recover? It is calculated as `|ANN results ∩ exact results| / k`. +If we treat the search pipeline as a whole, we could use them all. However, for the ANN algorithm itself, anything based on the relevance score or ranking is not applicable. Ranking in vector search relies on the distance between the query and the document in the vector space, and distance is not going to change due to approximation, as the function is still the same. Therefore, the right measure for the ANN algorithm is **`recall@k`**: of the true `k` nearest neighbours returned by exact search, how many does the approximate search recover? It is calculated as `|ANN results ∩ exact results| / k`. Note that when both ANN and exact search return exactly `k` items, `recall@k` and `precision@k` are numerically identical — we use "recall" to stay aligned with the ANN-benchmarks convention and to make it clear the ground truth is the exact top-k set. ### Choosing the right metric -The right choice of metric depends on what the search pipeline does with its results, and the best option will vary by use case. The table below provides a general starting point. +The right choice of metric depends on what the search pipeline does with its results, and on what ground truth is available. The table below is a starting point, not a prescription — pick the metric that matches your ground truth and your user-visible behaviour. -| Scenario | Recommended metric | Why | -|---|---|---| -| Tuning HNSW parameters | `Recall@k` vs exact search | Measures how many of the true k nearest neighbours the ANN found; ranking is unaffected by approximation | -| RAG pipeline (LLM reads top-k chunks) | `Recall@k` | The LLM can recover if a relevant doc is at position 3 vs 1; missing it entirely hurts more | -| Single-answer retrieval (FAQ, Q&A) | `MRR` or `Precision@1` | The first result is what the user acts on; lower ranks matter little | -| Re-ranking or recommendation feeds | `NDCG@k` | Order within the result list matters; a highly relevant doc at rank 5 is worse than at rank 1 | +| Scenario | Recommended metric | Ground truth | Why | +|---|---|---|---| +| Tuning HNSW parameters | `Recall@k` | Exact kNN search | Measures how many of the true `k` nearest neighbours the ANN recovered; ranking within that set is unaffected by approximation | +| RAG pipeline (LLM reads top-k chunks) | `Recall@k` | Labeled relevant chunks | The LLM can recover if a relevant doc is at position 3 vs 1; missing it entirely hurts more | +| Single-answer retrieval (FAQ, Q&A) | `MRR` or `Hits@1` | Labeled correct answer | The first result is what the user acts on; lower ranks matter little | +| Re-ranking or recommendation feeds | `NDCG@k` | Graded relevance labels (e.g. 0/1/2) | Order within the result list matters; a highly relevant doc at rank 5 is worse than at rank 1 | + +Note that `Recall@k` appears twice with different ground truths: against exact kNN when tuning the index, against labeled data when evaluating the pipeline end-to-end. They share a formula but answer different questions. On choosing `k`: it is worth setting it to match actual usage. If the application shows 5 results to the user, we should measure `@5`. If a RAG pipeline passes 10 chunks to the LLM, we should measure `@10`. Reporting `@100` for a UI that surfaces 5 results will make the metric look artificially good. @@ -86,6 +116,8 @@ To build a labeled dataset for relevance evaluation, see [Building a Golden Quer --- title: Building a Golden Query Set weight: 5 +aliases: + - /documentation/tutorials/retrieval-quality-golden-set/ --- # Building a Golden Query Set @@ -93,22 +125,24 @@ weight: 5 | Time: 20 min | Level: Intermediate | | | |--------------|---------------------|--|----| -Evaluating retrieval relevance requires a labeled dataset of queries paired with their expected relevant documents — commonly called a *golden query set* or *ground truth*. The [Retrieval Quality Evaluation](/documentation/tutorials-search-engineering/retrieval-quality/) tutorial uses the test split of a pre-labeled Hugging Face dataset, which is convenient but not representative of real production traffic. Let's look at how to build one at scale from our own data. +Evaluating retrieval relevance requires a labeled dataset of queries paired with their expected relevant documents — commonly called a *golden query set* or *ground truth*. The [Retrieval Quality Evaluation](/documentation/tutorials-search-engineering/retrieval-quality/) tutorial measures **ANN recall** against exact kNN, which needs no relevance labels at all. This page covers the separate task of building labeled data to measure **retrieval relevance** against real user intent. ## Generating queries -The highest-fidelity source is **real user queries mined from logs**. If the application records clicks or explicit feedback, we can sample query-document pairs and use them directly. This should be the first option we reach for before generating synthetic data. When sampling, it is worth stratifying by query type or topic cluster rather than sampling uniformly at random — a random sample will over-represent frequent queries and leave rare-but-important cases uncovered. As a rough minimum, 200–300 labeled pairs are enough to get a stable metric signal for most use cases; 1000+ is preferable when evaluating subtle ranking differences. +The highest-fidelity source is **real user queries mined from logs**. If the application records clicks or explicit feedback, we can sample query-document pairs and use them directly. This should be the first option we reach for before generating synthetic data. When sampling, it is worth stratifying by query type or topic cluster rather than sampling uniformly at random — a random sample will over-represent frequent queries and leave rare-but-important cases uncovered. As a rough heuristic, a few hundred labeled pairs is usually enough to detect large metric differences; detecting small ranking differences or slicing by query type requires substantially more. The right number depends on your effect size and query-level variance, so treat any specific number as a starting point and widen confidence intervals if the signal is noisy. When logs are not available, **LLM-based synthetic generation** is a practical alternative. For each document in the corpus, we can prompt a capable LLM to generate a handful of queries that a user would plausibly ask if they were looking for that document. This scales cheaply to thousands of query-document pairs. ```python +import os + import anthropic client = anthropic.Anthropic() def generate_queries_for_doc(doc_text: str, n: int = 3) -> list[str]: response = client.messages.create( - model="claude-sonnet-4-6", + model=os.environ.get("ANTHROPIC_MODEL", "claude-sonnet-4-6"), max_tokens=256, messages=[{ "role": "user", @@ -123,15 +157,19 @@ def generate_queries_for_doc(doc_text: str, n: int = 3) -> list[str]: For high-stakes applications, **human annotation** is the cleanest approach. Domain experts rate query-document pairs on a 3–5 point relevance scale, which is expensive but produces the signal needed for NDCG-based evaluation. -## Avoiding data leakage +## Pitfalls to watch for (data leakage and friends) -Data leakage occurs when the documents used to generate queries also appear in the indexed corpus during evaluation, making retrieval artificially easy. There are two common failure modes to watch for. +The term **data leakage** is often used loosely to cover any situation where evaluation scores come out higher than real-world performance would justify. Unlike classical ML train/test leakage, the failure modes for golden query sets are more subtle — the document that a query was generated from **must** be indexed (it is the relevant answer the evaluation expects to find), so "hold out the labeled docs from the index" is *not* the right fix. The real risks are the following. -The first is **query generation leakage**: if we generate synthetic queries from the same documents that are indexed, the LLM's phrasing may closely mirror the document text, inflating relevance scores compared to what real users would produce. We can avoid this by generating queries only from a held-out document split that is **not** indexed during evaluation. +**Synthetic-query unrealism.** LLMs tend to paraphrase the source document's wording. The resulting queries are much easier to retrieve than what real users type, which are typically shorter, vaguer, and use different vocabulary. Offline scores on synthetic queries therefore overstate production quality. Two practical mitigations: (1) prompt the LLM to write queries "as a user who has not seen this document", and (2) anchor a sample of synthetic queries against any real queries you do have, and verify the distributions of length and specificity are comparable. -The second is **train/test split leakage**: if the golden set overlaps with the data used to fine-tune the embedding model, we are measuring in-distribution performance. We should always verify that golden-set documents are absent from any embedding model fine-tuning data. +**Embedding-model contamination.** If the embedding model was fine-tuned on (query, document) pairs that overlap with the golden set, the evaluation measures in-distribution performance and overstates real-world behaviour. When using an off-the-shelf model, check its training mixture if published; when fine-tuning in-house, keep a strict split between fine-tuning data and evaluation data. -A simple safeguard for structural separation: hash document IDs and assign even hashes to the indexed corpus, odd hashes to the query-generation pool. This guarantees split integrity with no manual bookkeeping. It does not, however, protect against all forms of leakage. **Near-duplicate leakage** can occur when two documents are nearly identical — a query generated from one will trivially retrieve the other, inflating scores. We can guard against this by deduplicating the corpus with a similarity threshold (e.g. cosine similarity > 0.95) before splitting. **Temporal leakage** is a risk in time-sensitive corpora: if evaluation queries were generated from documents that post-date the indexed corpus, we are testing on data the system was never meant to retrieve. In those cases, the split should be by time rather than by hash. +**Near-duplicate documents.** If two documents are nearly identical, a query generated from one will retrieve the other, but the other won't be in the labels — so **precision is under-reported** because the labeled relevant set is incomplete. Deduplicate the corpus before generating labels (e.g. drop documents with cosine similarity > 0.95 to an earlier document), or label near-duplicate clusters jointly. + +**Temporal drift.** If the corpus evolves over time, evaluating with queries generated from documents that post-date the index version under test is unfair — those documents simply aren't there to retrieve. Pin the corpus snapshot, generate queries from that snapshot, and re-generate the golden set when the corpus changes materially. + +**Reviewer reproducibility.** Whatever approach you pick, pin the data: the corpus snapshot, the query-generation prompt, the LLM model version, and any deduplication threshold. Without this, a later "the score got worse" investigation cannot tell whether the retrieval regressed or the evaluation set changed underneath it. ``` --- @@ -143,22 +181,27 @@ A simple safeguard for structural separation: hash document IDs and assign even **Changes required:** - Remove the `### Quality metrics` subsection (moving to page 1) - Update the `weight` from `4` to `6` -- Add a brief intro sentence linking to page 1 for conceptual background +- Add a brief intro sentence linking to page 1 for conceptual background (e.g. "For the conceptual framing and a 'which metric when' guide, see [Retrieval Quality Fundamentals](/documentation/tutorials-search-engineering/retrieval-quality-fundamentals/).") - Keep both existing aliases unchanged: - `/documentation/tutorials/retrieval-quality/` - `/documentation/beginner-tutorials/retrieval-quality/` -- Rename `avg_precision_at_k` → `avg_recall_at_k` throughout (function definition, all call sites, `print` output strings) -- Rename the `precision` variable → `recall` inside the function body -- Update the code comment `# We can calculate the precision@k` → `# We can calculate the recall@k` -- Update prose references: "calculate the `precision@5`" → "calculate the `recall@5`", "the precision of the approximate search" → "the recall of the approximate search", "we need higher precision" → "we need higher recall", "we can increase the precision" → "we can increase the recall", "The precision has obviously increased" → "The recall has obviously increased", "HNSW does a pretty good job in terms of precision" → "HNSW does a pretty good job in terms of recall" -- In `## Standard mode vs exact search`, update "so we can calculate the `precision@k` for different values of `k`" → "so we can calculate the `recall@k` for different values of `k`" -- In `## Tweaking the HNSW parameters`, "the higher the precision of the search" (appears twice) is describing HNSW graph precision in the sense of accuracy — leave these as-is since they are describing a general property of the index, not the metric name +- **Commit fully to the precision → recall rename throughout the page** — a partial rename is worse than either full option, since a reader who just finished the Fundamentals page being told "we measure recall for ANN" will hit residual "precision" prose a few paragraphs later and get whiplash. Specifically: + - Rename `avg_precision_at_k` → `avg_recall_at_k` (function definition, all call sites, `print` output strings) + - Rename the `precision` variable → `recall` inside the function body + - Update the code comment `# We can calculate the precision@k` → `# We can calculate the recall@k` + - Update prose references: "calculate the `precision@5`" → "calculate the `recall@5`", "the precision of the approximate search" → "the recall of the approximate search", "we need higher precision" → "we need higher recall", "we can increase the precision" → "we can increase the recall", "The precision has obviously increased" → "The recall has obviously increased", "HNSW does a pretty good job in terms of precision" → "HNSW does a pretty good job in terms of recall" + - In `## Standard mode vs exact search`, update "so we can calculate the `precision@k` for different values of `k`" → "so we can calculate the `recall@k` for different values of `k`" + - In `## Tweaking the HNSW parameters`, the two occurrences of "the higher the precision of the search" should be rewritten to "the higher the recall of the search" (or "the higher the search quality" if we want to avoid committing to the metric). The earlier proposal to leave these as-is — on the grounds that they describe a general property of the index rather than the metric — creates exactly the mixed-terminology problem we are trying to avoid. +- Acknowledge in prose, once, that `recall@k` and `precision@k` coincide in the ANN-vs-exact setting (a one-line parenthetical is enough) so a reader who has seen the old version is not confused by the rename. +- Fix pre-existing bug: the code uses `range(60000)` while the surrounding prose says "first 50000 items for training". Reconcile these — update the prose to 60000 to match the code (safer than changing the code, which affects reproducibility for anyone who ran the old version). --- -### Index table update +### Index table updates -**File:** `qdrant-landing/content/documentation/headless/content/tutorials/search-engineering.md` +Two index files reference `retrieval-quality`. Both need to be updated — updating only the headless partial leaves the overview page stale. + +**File 1:** `qdrant-landing/content/documentation/headless/content/tutorials/search-engineering.md` Replace the single existing `Retrieval Quality Evaluation` row with three rows: @@ -167,3 +210,15 @@ Replace the single existing `Retrieval Quality Evaluation` row with three rows: | [Building a Golden Query Set](/documentation/tutorials-search-engineering/retrieval-quality-golden-set/) | Generate ground truth data at scale and avoid data leakage. | Python | 20m | Intermediate | | [Retrieval Quality Evaluation](/documentation/tutorials-search-engineering/retrieval-quality/) | Measure ANN recall and tune HNSW parameters. | Python | 30m | Intermediate | ``` + +**File 2:** `qdrant-landing/content/documentation/tutorials-lp-overview.md` + +The same `Retrieval Quality Evaluation` row appears in the Search Engineering table on this page (currently line 71). Apply the same three-row replacement here so both indexes stay in sync. + +--- + +### Open questions / deliberate non-goals + +- **Fundamentals page placement.** This page is almost entirely conceptual — no hands-on Qdrant code. Keeping it under `tutorials-search-engineering/` matches where readers currently land when searching for this content, but it stretches the definition of "tutorial". Moving it to `/concepts/` is an alternative; we are not doing that in this PR to avoid a redirect sprawl, but it's worth revisiting if the folder grows more concept pages. +- **Weight values.** `weight: 4` on Fundamentals collides with `pdf-retrieval-at-scale.md` (also weight 4). The folder already has several weight collisions, so in practice this does not affect ordering, but if any template in the future orders strictly by weight this will need to be resolved. +- **Sample-size guidance.** We intentionally avoid naming a specific minimum in the golden-set page (previous draft said "200–300 labeled pairs"). Required sample size depends on the detectable effect size and query-level variance, and hard-coding a number invites a reasonable customer objection. The current wording gives a qualitative direction instead. From 12b9380ee2355dbbd6331e7bad85410e8f352175 Mon Sep 17 00:00:00 2001 From: Dylan Couzon Date: Mon, 20 Apr 2026 10:31:54 -0400 Subject: [PATCH 03/64] Update changes.md --- changes.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/changes.md b/changes.md index 2b4c0eed3..732b8f34c 100644 --- a/changes.md +++ b/changes.md @@ -58,10 +58,10 @@ The three levels are not measured in isolation. Teams that successfully connect | Layer | Question it answers | Cadence | Cost | |---|---|---|---| -| `Recall@k` vs exact kNN | Is the ANN plumbing sound? | Every CI run | ~free | -| `Recall@k` / `NDCG@k` vs labeled golden set | Are the right documents surfacing? | Weekly | cheap (pre-built set) | -| End-to-end answer quality on golden set, scored by LLM-as-judge or human rating | Does the user actually get a correct answer? | Weekly | moderate | -| Online A/B behind a flag | Does the business KPI move? | Per release | expensive | +| `Recall@k` vs exact kNN on a sampled query set | Is the ANN plumbing sound? | On index-config or embedding changes | Low, once a sample query set exists | +| `Recall@k` / `NDCG@k` vs labeled golden set | Are the right documents surfacing? | Weekly, or on retrieval-stack changes | Low per run; **building the golden set is the real cost** — see the next page | +| End-to-end answer quality on golden set, scored by LLM-as-judge or human rating | Does the user actually get a correct answer? | Weekly, or on retrieval- or generator-stack changes | Moderate (LLM-judge cost per query × eval size) | +| Online A/B behind a flag | Does the business KPI move? | Per release, once offline layers pass | High (traffic allocation, experimentation infra) | Each layer is necessary but not sufficient. A win at layer 2 that does not carry through to layer 3 usually means the generator or the prompt is the bottleneck, not retrieval — this is the single most useful diagnostic the ladder provides, and the reason teams should not collapse layers 2 and 3 into a single score. @@ -80,7 +80,7 @@ are based on the number of relevant documents in the top-k search results. Other take into account the position of the first relevant document in the search results. [DCG and NDCG](https://en.wikipedia.org/wiki/Discounted_cumulative_gain) metrics are, in turn, based on the relevance score of the documents. -If we treat the search pipeline as a whole, we could use them all. However, for the ANN algorithm itself, anything based on the relevance score or ranking is not applicable. Ranking in vector search relies on the distance between the query and the document in the vector space, and distance is not going to change due to approximation, as the function is still the same. Therefore, the right measure for the ANN algorithm is **`recall@k`**: of the true `k` nearest neighbours returned by exact search, how many does the approximate search recover? It is calculated as `|ANN results ∩ exact results| / k`. Note that when both ANN and exact search return exactly `k` items, `recall@k` and `precision@k` are numerically identical — we use "recall" to stay aligned with the ANN-benchmarks convention and to make it clear the ground truth is the exact top-k set. +If we treat the search pipeline as a whole, we could use any of them. For the ANN algorithm itself, however, the natural question is much narrower: did the approximate search recover the same set of items that an exact kNN search would have returned? What approximation actually loses is *items* — some true nearest neighbours are missed and replaced by further ones — so the most informative metric is set-overlap against exact kNN. This is **`recall@k`**: of the true `k` nearest neighbours returned by exact search, how many does the approximate search recover? It is calculated as `|ANN results ∩ exact results| / k`. Note that when both ANN and exact search return exactly `k` items, `recall@k` and `precision@k` are numerically identical — the community uses "recall" to stay aligned with the ANN-benchmarks convention and to make it explicit that the ground truth is the exact top-k set. ### Choosing the right metric @@ -88,7 +88,7 @@ The right choice of metric depends on what the search pipeline does with its res | Scenario | Recommended metric | Ground truth | Why | |---|---|---|---| -| Tuning HNSW parameters | `Recall@k` | Exact kNN search | Measures how many of the true `k` nearest neighbours the ANN recovered; ranking within that set is unaffected by approximation | +| Tuning HNSW parameters | `Recall@k` | Exact kNN search | Approximation manifests as missed items from the true top-k set, so set-overlap against exact search is the quantity that actually changes with index parameters | | RAG pipeline (LLM reads top-k chunks) | `Recall@k` | Labeled relevant chunks | The LLM can recover if a relevant doc is at position 3 vs 1; missing it entirely hurts more | | Single-answer retrieval (FAQ, Q&A) | `MRR` or `Hits@1` | Labeled correct answer | The first result is what the user acts on; lower ranks matter little | | Re-ranking or recommendation feeds | `NDCG@k` | Graded relevance labels (e.g. 0/1/2) | Order within the result list matters; a highly relevant doc at rank 5 is worse than at rank 1 | From 5db9d106aa815a19142c24b670554a415ee199bb Mon Sep 17 00:00:00 2001 From: Dylan Couzon Date: Mon, 20 Apr 2026 10:42:05 -0400 Subject: [PATCH 04/64] Add Retrieval Quality Fundamentals and Golden Query Set tutorials Introduces two new conceptual tutorials under tutorials-search-engineering: - Retrieval Quality Fundamentals covers the three-level evaluation framework (ANN recall, retrieval relevance, business impact), the evaluation ladder that connects them in practice, and a which-metric- when decision table keyed by scenario and available ground truth. - Building a Golden Query Set covers query generation at scale (logs, LLM synthesis, human annotation) and the failure modes commonly lumped together as data leakage: synthetic-query unrealism, embedding-model contamination, near-duplicate documents, temporal drift, and reviewer reproducibility. Co-Authored-By: Claude Sonnet 4.6 --- .../retrieval-quality-fundamentals.md | 70 +++++++++++++++++++ .../retrieval-quality-golden-set.md | 57 +++++++++++++++ 2 files changed, 127 insertions(+) create mode 100644 qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-fundamentals.md create mode 100644 qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-golden-set.md diff --git a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-fundamentals.md b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-fundamentals.md new file mode 100644 index 000000000..ff3881ac6 --- /dev/null +++ b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-fundamentals.md @@ -0,0 +1,70 @@ +--- +title: Retrieval Quality Fundamentals +weight: 4 +aliases: + - /documentation/tutorials/retrieval-quality-fundamentals/ +--- + +# Retrieval Quality Fundamentals + +| Time: 15 min | Level: Intermediate | | | +|--------------|---------------------|--|----| + +Before measuring retrieval quality, it's worth understanding what you're measuring. Retrieval quality operates at three distinct levels, and it's easy to optimize for the wrong one. + +The first level is **ANN recall**: does the approximate search return the same results as an exact nearest-neighbor search? This is a purely algorithmic question about how faithfully HNSW approximates exhaustive search. It has nothing to do with whether those results are useful to a human. + +The second level is **retrieval relevance**: of the results returned, how many are relevant to the query intent? This requires a labeled ground-truth dataset or human judgment. A pipeline can achieve near-perfect ANN recall and still surface irrelevant documents if the embeddings are a poor fit for the task. + +The third level is **business impact**: does better retrieval lead to better outcomes like lower hallucination rates in downstream LLMs, higher task-completion rates, or improved user satisfaction scores? This is what stakeholders care about, but it's the hardest to measure directly. The causal chain from a vector match to a user outcome is long and easily dominated by generator behavior, UI, and other confounders, so no single offline metric is a reliable proxy for a KPI. The next section describes how teams bridge this gap in practice. + +## Connecting the Levels in Practice + +The three levels aren't measured in isolation. Teams that successfully connect retrieval work to business outcomes tend to build an **evaluation ladder** that runs each layer at a different cadence and cost, and uses the result of each layer to decide whether to invest effort at the next: + +| Layer | Question it answers | Cadence | Cost | +|---|---|---|---| +| `Recall@k` vs exact kNN on a sampled query set | Is the ANN plumbing sound? | On index-config or embedding changes | Low, once a sample query set exists | +| `Recall@k` / `NDCG@k` vs labeled golden set | Are the right documents surfacing? | Weekly, or on retrieval-stack changes | Low per run; **building the golden set is the real cost** (see the next page) | +| End-to-end answer quality on golden set, scored by LLM-as-judge or human rating | Does the user get a correct answer? | Weekly, or on retrieval- or generator-stack changes | Moderate (LLM-judge cost per query × eval size) | +| Online A/B behind a flag | Does the business KPI move? | Per release, once offline layers pass | High (traffic allocation, experimentation infra) | + +Each layer is necessary but not sufficient. A win at layer 2 that doesn't carry through to layer 3 usually means the generator or the prompt is the bottleneck, not retrieval. This is the most useful diagnostic the ladder provides, and the reason teams shouldn't collapse layers 2 and 3 into a single score. + +**Isolate the component under test.** When end-to-end quality moves, hold one side fixed: evaluate retrieval with the generator frozen, and evaluate the generator with retrieval frozen. Without this, attribution collapses into guesswork and the ladder stops being diagnostic. + +**Proxy KPIs for teams without A/B infrastructure.** Most teams don't have the traffic or tooling to run a proper A/B. Cheap production signals that correlate with business value (click position on surfaced results, answer copy or share rate, session-level task completion, thumbs-up/down) can be instrumented long before a formal experimentation platform exists, and sit usefully between the golden-set layer and the full A/B. + +**Pre-register the decision rule.** Before running the A/B, write down what constitutes a win and what constitutes a no-ship, in terms of both the retrieval metric and the KPI. This is the highest-leverage discipline for avoiding "recall improved but the KPI didn't, the KPI is noisy, let's ship anyway" rationalization. + +**Tooling.** Qdrant owns layers 1 and 2 directly. For layer 3, the ecosystem has mature tooling like [Ragas](https://docs.ragas.io/), [Phoenix](https://phoenix.arize.com/), and [DeepEval](https://docs.confident-ai.com/) that handles LLM-as-judge scoring and offline answer-quality eval. Use those rather than rebuilding the scoring harness in-house. + +## Quality Metrics + +There are various ways to quantify the quality of semantic search. Some of them, such as [Precision@k](https://en.wikipedia.org/wiki/Evaluation_measures_(information_retrieval)#Precision_at_k), +are based on the number of relevant documents in the top-k search results. Others, such as [Mean Reciprocal Rank (MRR)](https://en.wikipedia.org/wiki/Mean_reciprocal_rank), +take into account the position of the first relevant document in the search results. [DCG and NDCG](https://en.wikipedia.org/wiki/Discounted_cumulative_gain) +metrics are, in turn, based on the relevance score of the documents. + +If we treat the search pipeline as a whole, we could use any of them. For the ANN algorithm itself, however, the natural question is much narrower: did the approximate search recover the same set of items that an exact kNN search would have returned? What approximation loses is *items* (some true nearest neighbors are missed and replaced by further ones), so the most informative metric is set-overlap against exact kNN. This is **`recall@k`**: of the true `k` nearest neighbors returned by exact search, how many does the approximate search recover? It's calculated as `|ANN results ∩ exact results| / k`. When both ANN and exact search return exactly `k` items, `recall@k` and `precision@k` are numerically identical. The community uses "recall" to stay aligned with the ANN-benchmarks convention and to make it explicit that the ground truth is the exact top-k set. + +### Choosing the Right Metric + +The right choice of metric depends on what the search pipeline does with its results, and on what ground truth is available. The table below is a starting point, not a prescription: pick the metric that matches your ground truth and your user-visible behavior. + +| Scenario | Recommended metric | Ground truth | Why | +|---|---|---|---| +| Tuning HNSW parameters | `Recall@k` | Exact kNN search | Approximation manifests as missed items from the true top-k set, so set-overlap against exact search is the quantity that changes with index parameters | +| RAG pipeline (LLM reads top-k chunks) | `Recall@k` | Labeled relevant chunks | The LLM can recover if a relevant doc is at position 3 vs 1; missing it entirely hurts more | +| Single-answer retrieval (FAQ, Q&A) | `MRR` or `Hits@1` | Labeled correct answer | The first result is what the user acts on; lower ranks matter little | +| Re-ranking or recommendation feeds | `NDCG@k` | Graded relevance labels (e.g. 0/1/2) | Order within the result list matters; a highly relevant doc at rank 5 is worse than at rank 1 | + +Note that `Recall@k` appears twice with different ground truths: against exact kNN when tuning the index, against labeled data when evaluating the pipeline end-to-end. They share a formula but answer different questions. + +On choosing `k`: set it to match actual usage. If the application shows 5 results to the user, measure `@5`. If a RAG pipeline passes 10 chunks to the LLM, measure `@10`. Reporting `@100` for a UI that surfaces 5 results makes the metric look artificially good. + +`NDCG` is worth the added complexity only when you have **graded relevance labels** (for example 0/1/2 scores per query-document pair rather than binary relevant/not-relevant) and when the downstream system benefits from fine-grained ranking. Without multi-grade annotations, the simpler metrics give a cleaner signal with less labeling overhead. + +## Next Steps + +To build a labeled dataset for relevance evaluation, see [Building a Golden Query Set](/documentation/tutorials-search-engineering/retrieval-quality-golden-set/). To measure and tune the ANN recall of a Qdrant collection in practice, see [Retrieval Quality Evaluation](/documentation/tutorials-search-engineering/retrieval-quality/). diff --git a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-golden-set.md b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-golden-set.md new file mode 100644 index 000000000..68f81be9e --- /dev/null +++ b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-golden-set.md @@ -0,0 +1,57 @@ +--- +title: Building a Golden Query Set +weight: 5 +aliases: + - /documentation/tutorials/retrieval-quality-golden-set/ +--- + +# Building a Golden Query Set + +| Time: 20 min | Level: Intermediate | | | +|--------------|---------------------|--|----| + +Evaluating retrieval relevance requires a labeled dataset of queries paired with their expected relevant documents (commonly called a *golden query set* or *ground truth*). The [Retrieval Quality Evaluation](/documentation/tutorials-search-engineering/retrieval-quality/) tutorial measures **ANN recall** against exact kNN, which needs no relevance labels. This page covers the separate task of building labeled data to measure **retrieval relevance** against real user intent. + +## Generating Queries + +The highest-fidelity source is **real user queries mined from logs**. If the application records clicks or explicit feedback, sample query-document pairs and use them directly. Reach for this first before generating synthetic data. When sampling, stratify by query type or topic cluster rather than sampling uniformly at random: a random sample over-represents frequent queries and leaves rare-but-important cases uncovered. As a rough heuristic, a few hundred labeled pairs is enough to detect large metric differences; detecting small ranking differences or slicing by query type requires substantially more. The right number depends on your effect size and query-level variance, so treat any specific number as a starting point and widen confidence intervals if the signal is noisy. + +When logs aren't available, **LLM-based synthetic generation** is a practical alternative. For each document in the corpus, prompt a capable LLM to generate a handful of queries that a user would plausibly ask if they were looking for that document. This scales cheaply to thousands of query-document pairs. + +```python +import os + +import anthropic + +client = anthropic.Anthropic() + +def generate_queries_for_doc(doc_text: str, n: int = 3) -> list[str]: + response = client.messages.create( + model=os.environ.get("ANTHROPIC_MODEL", "claude-sonnet-4-6"), + max_tokens=256, + messages=[{ + "role": "user", + "content": ( + f"Generate {n} short, realistic search queries that would lead a user to the " + f"following document. Return only the queries, one per line.\n\n{doc_text}" + ), + }], + ) + return response.content[0].text.strip().splitlines() +``` + +For high-stakes applications, **human annotation** is the cleanest approach. Domain experts rate query-document pairs on a 3 to 5 point relevance scale, which is expensive but produces the signal needed for NDCG-based evaluation. + +## Pitfalls to Watch For (Data Leakage and Friends) + +The term **data leakage** is often used loosely to cover any situation where evaluation scores come out higher than real-world performance would justify. Unlike classical ML train/test leakage, the failure modes for golden query sets are more subtle. The document that a query was generated from **must** be indexed (it's the relevant answer the evaluation expects to find), so "hold out the labeled docs from the index" is *not* the right fix. The real risks are the following. + +**Synthetic-query unrealism.** LLMs tend to paraphrase the source document's wording. The resulting queries are much easier to retrieve than what real users type, which are typically shorter, vaguer, and use different vocabulary. Offline scores on synthetic queries therefore overstate production quality. Two practical mitigations: (1) prompt the LLM to write queries "as a user who has not seen this document", and (2) anchor a sample of synthetic queries against any real queries you do have, and verify the distributions of length and specificity are comparable. + +**Embedding-model contamination.** If the embedding model was fine-tuned on (query, document) pairs that overlap with the golden set, the evaluation measures in-distribution performance and overstates real-world behavior. When using an off-the-shelf model, check its training mixture if published; when fine-tuning in-house, keep a strict split between fine-tuning data and evaluation data. + +**Near-duplicate documents.** If two documents are nearly identical, a query generated from one will retrieve the other, but the other won't be in the labels, so **precision is under-reported** because the labeled relevant set is incomplete. Deduplicate the corpus before generating labels (e.g. drop documents with cosine similarity > 0.95 to an earlier document), or label near-duplicate clusters jointly. + +**Temporal drift.** If the corpus evolves over time, evaluating with queries generated from documents that post-date the index version under test is unfair: those documents aren't there to retrieve. Pin the corpus snapshot, generate queries from that snapshot, and re-generate the golden set when the corpus changes materially. + +**Reviewer reproducibility.** Whatever approach you pick, pin the data: the corpus snapshot, the query-generation prompt, the LLM model version, and any deduplication threshold. Without this, a later "the score got worse" investigation can't tell whether the retrieval regressed or the evaluation set changed underneath it. From 7d3d44b727aafa90e132d68d2e5d33fa1d0ca60e Mon Sep 17 00:00:00 2001 From: Dylan Couzon Date: Mon, 20 Apr 2026 10:46:19 -0400 Subject: [PATCH 05/64] Refactor Retrieval Quality Evaluation to recall terminology Renames precision to recall throughout the ANN-evaluation tutorial so the page aligns with the ANN-benchmarks convention and with the new Retrieval Quality Fundamentals page. The numerical formula is unchanged: when ANN and exact search both return exactly k items, recall@k and precision@k are numerically identical. Other changes: - Remove the Quality metrics subsection, now covered by the Fundamentals page, and replace it with a short link across. - Bump weight from 4 to 6 so the three retrieval-quality pages order as Fundamentals, Golden Query Set, Evaluation. - Fix a pre-existing prose/code mismatch: the prose said "first 50000 items" while the code uses range(60000). Co-Authored-By: Claude Sonnet 4.6 --- .../retrieval-quality.md | 69 ++++++++----------- 1 file changed, 29 insertions(+), 40 deletions(-) diff --git a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality.md b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality.md index 09eb08289..3ab55c277 100644 --- a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality.md +++ b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality.md @@ -3,7 +3,7 @@ title: Retrieval Quality Evaluation aliases: - /documentation/tutorials/retrieval-quality/ - /documentation/beginner-tutorials/retrieval-quality/ -weight: 4 +weight: 6 --- # Evaluate Retrieval Quality with Qdrant @@ -34,28 +34,17 @@ perform pure kNN search. Instead, they use **Approximate Nearest Neighbors** (AN but can return suboptimal results. We can also **measure the retrieval quality of that approximation** which also contributes to the overall search quality. -### Quality metrics - -There are various ways of how quantify the quality of semantic search. Some of them, such as [Precision@k](https://en.wikipedia.org/wiki/Evaluation_measures_(information_retrieval)#Precision_at_k), -are based on the number of relevant documents in the top-k search results. Others, such as [Mean Reciprocal Rank (MRR)](https://en.wikipedia.org/wiki/Mean_reciprocal_rank), -take into account the position of the first relevant document in the search results. [DCG and NDCG](https://en.wikipedia.org/wiki/Discounted_cumulative_gain) -metrics are, in turn, based on the relevance score of the documents. - -If we treat the search pipeline as a whole, we could use them all. The same is true for the embeddings quality evaluation. However, for the -ANN algorithm itself, anything based on the relevance score or ranking is not applicable. Ranking in vector search relies on the distance -between the query and the document in the vector space, however distance is not going to change due to approximation, as the function is -still the same. - -Therefore, it only makes sense to measure the quality of the ANN algorithm by the number of relevant documents in the top-k search results, -such as `precision@k`. It is calculated as the number of relevant documents in the top-k search results divided by `k`. In case of testing -just the ANN algorithm, we can use the exact kNN search as a ground truth, with `k` being fixed. It will be a measure on **how well the ANN -algorithm approximates the exact search**. +For a broader discussion of what to measure and when (ANN recall vs retrieval relevance vs business impact, and which metric fits which scenario), +see [Retrieval Quality Fundamentals](/documentation/tutorials-search-engineering/retrieval-quality-fundamentals/). This tutorial focuses on the +ANN-algorithm layer and measures it with `recall@k`: the fraction of the true top-k items returned by exact search that the approximate search +recovers. When both ANN and exact search return exactly `k` items, `recall@k` and `precision@k` are numerically identical; we use "recall" to +match the ANN-benchmarks convention. ## Measure the quality of the search results Let's build a quality [evaluation](https://qdrant.tech/rag/rag-evaluation-guide/) of the ANN algorithm in Qdrant. We will, first, call the search endpoint in a standard way to obtain the approximate search results. Then, we will call the exact search endpoint to obtain the exact matches, and finally compare both results -in terms of precision. +in terms of recall. Before we start, let's create a collection, fill it with some data and then start our evaluation. We will use the same dataset as in the [Loading a dataset from Hugging Face hub](/documentation/tutorials-basics/huggingface-datasets/) tutorial, `Qdrant/arxiv-titles-instructorxl-embeddings` @@ -70,7 +59,7 @@ dataset = load_dataset( ) ``` -We need some data to be indexed and another set for the testing purposes. Let's get the first 50000 items for the training and the next 1000 +We need some data to be indexed and another set for the testing purposes. Let's get the first 60000 items for the training and the next 1000 for the testing. ```python @@ -133,12 +122,12 @@ Qdrant has a built-in exact search mode, which can be used to measure the qualit full kNN search for each query, without any approximation. It is not suitable for production use with high load, but it is perfect for the evaluation of the ANN algorithm and its parameters. It might be triggered by setting the `exact` parameter to `True` in the search request. We are simply going to use all the examples from the test dataset as queries and compare the results of the approximate search with the -results of the exact search. Let's create a helper function with `k` being a parameter, so we can calculate the `precision@k` for different +results of the exact search. Let's create a helper function with `k` being a parameter, so we can calculate the `recall@k` for different values of `k`. ```python -def avg_precision_at_k(k: int): - precisions = [] +def avg_recall_at_k(k: int): + recalls = [] for item in test_dataset: ann_result = client.query_points( collection_name="arxiv-titles-instructorxl-embeddings", @@ -155,37 +144,37 @@ def avg_precision_at_k(k: int): ), ).points - # We can calculate the precision@k by comparing the ids of the search results + # We can calculate the recall@k by comparing the ids of the search results ann_ids = set(item.id for item in ann_result) knn_ids = set(item.id for item in knn_result) - precision = len(ann_ids.intersection(knn_ids)) / k - precisions.append(precision) + recall = len(ann_ids.intersection(knn_ids)) / k + recalls.append(recall) - return sum(precisions) / len(precisions) + return sum(recalls) / len(recalls) ``` -Calculating the `precision@5` is as simple as calling the function with the corresponding parameter: +Calculating the `recall@5` is as simple as calling the function with the corresponding parameter: ```python -print(f"avg(precision@5) = {avg_precision_at_k(k=5)}") +print(f"avg(recall@5) = {avg_recall_at_k(k=5)}") ``` Response: ```text -avg(precision@5) = 0.9935999999999995 +avg(recall@5) = 0.9935999999999995 ``` -As we can see, the precision of the approximate search vs exact search is pretty high. There are, however, some scenarios when we -need higher precision and can accept higher latency. HNSW is pretty tunable, and we can increase the precision by changing its parameters. +As we can see, the recall of the approximate search vs exact search is pretty high. There are, however, some scenarios when we +need higher recall and can accept higher latency. HNSW is pretty tunable, and we can increase the recall by changing its parameters. ## Tweaking the HNSW parameters HNSW is a hierarchical graph, where each node has a set of links to other nodes. The number of edges per node is called the `m` parameter. -The larger the value of it, the higher the precision of the search, but more space required. The `ef_construct` parameter is the number of -neighbours to consider during the index building. Again, the larger the value, the higher the precision, but the longer the indexing time. +The larger the value of it, the higher the recall of the search, but more space required. The `ef_construct` parameter is the number of +neighbours to consider during the index building. Again, the larger the value, the higher the recall, but the longer the indexing time. The default values of these parameters are `m=16` and `ef_construct=100`. Let's try to increase them to `m=32` and `ef_construct=200` and -see how it affects the precision. Of course, we need to wait until the indexing is finished before we can perform the search. +see how it affects the recall. Of course, we need to wait until the indexing is finished before we can perform the search. ```python client.update_collection( @@ -203,20 +192,20 @@ while True: break ``` -The same function can be used to calculate the average `precision@5`: +The same function can be used to calculate the average `recall@5`: ```python -print(f"avg(precision@5) = {avg_precision_at_k(k=5)}") +print(f"avg(recall@5) = {avg_recall_at_k(k=5)}") ``` Response: ```text -avg(precision@5) = 0.9969999999999998 +avg(recall@5) = 0.9969999999999998 ``` -The precision has obviously increased, and we know how to control it. However, there is a trade-off between the precision and the search -latency and memory requirements. In some specific cases, we may want to increase the precision as much as possible, so now we know how +The recall has obviously increased, and we know how to control it. However, there is a trade-off between the recall and the search +latency and memory requirements. In some specific cases, we may want to increase the recall as much as possible, so now we know how to do it. ## Wrapping up @@ -225,6 +214,6 @@ Assessing the quality of retrieval is a critical aspect of [evaluating](https:// your search results. Qdrant provides a built-in exact search mode, which can be used to measure the quality of the ANN algorithm itself, even in an automated way, as part of your CI/CD pipeline. -Again, **the quality of the embeddings is the most important factor**. HNSW does a pretty good job in terms of precision, and it is +Again, **the quality of the embeddings is the most important factor**. HNSW does a pretty good job in terms of recall, and it is parameterizable and tunable, when required. There are some other ANN algorithms available out there, such as [IVF*](https://github.com/facebookresearch/faiss/wiki/Faiss-indexes#cell-probe-methods-indexivf-indexes), but they usually [perform worse than HNSW in terms of quality and performance](https://nirantk.com/writing/pgvector-vs-qdrant/#correctness). From 52a38d255ccc9a7a647faf9df1738252e8ffcd1e Mon Sep 17 00:00:00 2001 From: Dylan Couzon Date: Mon, 20 Apr 2026 10:47:02 -0400 Subject: [PATCH 06/64] Link new retrieval quality tutorials from navigation indexes Updates both search engineering index files (the headless partial and the tutorials-lp overview) to list Retrieval Quality Fundamentals and Building a Golden Query Set alongside the existing Retrieval Quality Evaluation row. The Evaluation row is also retitled from "Measure quality and tune HNSW parameters" to "Measure ANN recall and tune HNSW parameters" to match the refactored page. Co-Authored-By: Claude Sonnet 4.6 --- .../headless/content/tutorials/search-engineering.md | 4 +++- qdrant-landing/content/documentation/tutorials-lp-overview.md | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/qdrant-landing/content/documentation/headless/content/tutorials/search-engineering.md b/qdrant-landing/content/documentation/headless/content/tutorials/search-engineering.md index 586053f63..3bd2b0598 100644 --- a/qdrant-landing/content/documentation/headless/content/tutorials/search-engineering.md +++ b/qdrant-landing/content/documentation/headless/content/tutorials/search-engineering.md @@ -5,7 +5,9 @@ | [Relevance Feedback](/documentation/tutorials-search-engineering/using-relevance-feedback/) | Relevance Feedback Retrieval in Qdrant | Python | 30m | Intermediate | | [Collaborative Filtering](/documentation/tutorials-search-engineering/collaborative-filtering/) | Collaborative filtering using sparse embeddings. | Python | 45m | Intermediate | | [Multivector Document Retrieval](/documentation/tutorials-search-engineering/pdf-retrieval-at-scale/) | PDF RAG using ColPali and embedding pooling. | Python | 30m | Intermediate | -| [Retrieval Quality Evaluation](/documentation/tutorials-search-engineering/retrieval-quality/) | Measure quality and tune HNSW parameters. | Python | 30m | Intermediate | +| [Retrieval Quality Fundamentals](/documentation/tutorials-search-engineering/retrieval-quality-fundamentals/) | Understand evaluation levels and choose the right metric. | Python | 15m | Intermediate | +| [Building a Golden Query Set](/documentation/tutorials-search-engineering/retrieval-quality-golden-set/) | Generate ground truth data at scale and avoid data leakage. | Python | 20m | Intermediate | +| [Retrieval Quality Evaluation](/documentation/tutorials-search-engineering/retrieval-quality/) | Measure ANN recall and tune HNSW parameters. | Python | 30m | Intermediate | | [Hybrid Search with Reranking](/documentation/tutorials-search-engineering/reranking-hybrid-search/) | Implement late interaction and sparse reranking. | Python | 40m | Intermediate | | [Semantic Search for Code](/documentation/tutorials-search-engineering/code-search/) | Navigate codebases using vector similarity. | Python | 45m | Intermediate | | [Multivectors and Late Interaction](/documentation/tutorials-search-engineering/using-multivector-representations/) | Effective use of multivector representations. | Python | 30m | Intermediate | diff --git a/qdrant-landing/content/documentation/tutorials-lp-overview.md b/qdrant-landing/content/documentation/tutorials-lp-overview.md index 23fddf4ed..08cafbb47 100644 --- a/qdrant-landing/content/documentation/tutorials-lp-overview.md +++ b/qdrant-landing/content/documentation/tutorials-lp-overview.md @@ -68,7 +68,9 @@ partition: qdrant | [Semantic Search Basics](/documentation/tutorials-search-engineering/neural-search/) | Deploy a search service for company descriptions. | FastAPI | 30m | Beginner | | [Collaborative Filtering](/documentation/tutorials-search-engineering/collaborative-filtering/) | Collaborative filtering using sparse embeddings. | Python | 45m | Intermediate | | [Multivector Document Retrieval](/documentation/tutorials-search-engineering/pdf-retrieval-at-scale/) | PDF RAG using ColPali and embedding pooling. | Python | 30m | Intermediate | -| [Retrieval Quality Evaluation](/documentation/tutorials-search-engineering/retrieval-quality/) | Measure quality and tune HNSW parameters. | Python | 30m | Intermediate | +| [Retrieval Quality Fundamentals](/documentation/tutorials-search-engineering/retrieval-quality-fundamentals/) | Understand evaluation levels and choose the right metric. | Python | 15m | Intermediate | +| [Building a Golden Query Set](/documentation/tutorials-search-engineering/retrieval-quality-golden-set/) | Generate ground truth data at scale and avoid data leakage. | Python | 20m | Intermediate | +| [Retrieval Quality Evaluation](/documentation/tutorials-search-engineering/retrieval-quality/) | Measure ANN recall and tune HNSW parameters. | Python | 30m | Intermediate | | [Reranking for Better Search](/documentation/search-precision/reranking-semantic-search/) | Use multivector representations for better ranking. | Python | 30m | Intermediate | | [Hybrid Search with Reranking](/documentation/tutorials-search-engineering/reranking-hybrid-search/) | Implement late interaction and sparse reranking. | Python | 40m | Intermediate | | [Semantic Search for Code](/documentation/tutorials-search-engineering/code-search/) | Navigate codebases using vector similarity. | Python | 45m | Intermediate | From 814bdc1a4841325c4b7135a3410e81b25a0d82b8 Mon Sep 17 00:00:00 2001 From: Dylan Couzon Date: Mon, 20 Apr 2026 11:06:41 -0400 Subject: [PATCH 07/64] clean up messaging --- .../tutorials-search-engineering/retrieval-quality.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality.md b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality.md index 3ab55c277..f3ed9bd24 100644 --- a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality.md +++ b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality.md @@ -6,7 +6,7 @@ aliases: weight: 6 --- -# Evaluate Retrieval Quality with Qdrant +# Evaluate Retrieval Quality | Time: 30 min | Level: Intermediate | | | |--------------|---------------------|--|----| From 8a019f55ebeaf74035758723051dfce75d13af2f Mon Sep 17 00:00:00 2001 From: Dylan Couzon Date: Mon, 20 Apr 2026 11:17:34 -0400 Subject: [PATCH 08/64] remove instruction file --- changes.md | 224 ----------------------------------------------------- 1 file changed, 224 deletions(-) delete mode 100644 changes.md diff --git a/changes.md b/changes.md deleted file mode 100644 index 732b8f34c..000000000 --- a/changes.md +++ /dev/null @@ -1,224 +0,0 @@ -Problems in Evaluation and Retrieval Quality Measurement: -No bridge from technical metrics to business outcomes. The existing tutorial covers ANN recall and precision but doesn't connect these to retrieval relevance or business impact. Brian's three-level framework (ANN recall, retrieval relevance, business impact) is not documented. - -Golden query set generation at scale not covered. Ground truth construction is mentioned but no methodology for generating golden queries at scale or handling the data leakage risks that Goodnotes flagged. - -No "which metric when" decision guidance. Customers use inconsistent metrics because there's no guidance on choosing K values, selecting between recall and precision, or when NDCG matters. This varies, but maybe we can provide some general direction with disclaimers. - ---- - -## Proposed Changes - -### Architecture: split into 3 pages - -The existing `retrieval-quality.md` is too long and mixes conceptual framing, ground truth methodology, and hands-on HNSW tuning into a single page. Customers searching for metric guidance or ground truth construction have no way to land directly on the relevant content. The three problems map cleanly onto three distinct pages. - -| New page | Slug | Addresses | -|---|---|---| -| Retrieval Quality Fundamentals | `retrieval-quality-fundamentals` | Problems 1 and 3 | -| Building a Golden Query Set | `retrieval-quality-golden-set` | Problem 2 | -| Retrieval Quality Evaluation *(existing)* | `retrieval-quality` *(unchanged)* | Existing HNSW tuning content | - -The existing `retrieval-quality.md` keeps its path and both aliases so no redirects break. The `### Quality metrics` subsection moves from the existing page into page 1, since it is conceptual context rather than hands-on instruction. - -A note on `precision@k` vs `recall@k` in the ANN-only section: when exact and approximate search each return exactly `k` results, `|ANN ∩ exact| / k` is numerically identical whether you call it precision or recall. The ANN-benchmarks literature standardises on **recall**, and we are aligning with that convention — but we should commit to the rename consistently across the page (see Page 3 changes) rather than mixing the two terms in the same document. - ---- - -### Page 1 (new): Retrieval Quality Fundamentals - -**File:** `qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-fundamentals.md` - -**Proposed content:** - -```markdown ---- -title: Retrieval Quality Fundamentals -weight: 4 -aliases: - - /documentation/tutorials/retrieval-quality-fundamentals/ ---- - -# Retrieval Quality Fundamentals - -| Time: 15 min | Level: Intermediate | | | -|--------------|---------------------|--|----| - -Before we start measuring, it is worth understanding what we are actually measuring. Retrieval quality operates at three distinct levels, and it is easy to optimise for the wrong one. - -The first level is **ANN recall**: does the approximate search return the same results as an exact nearest-neighbour search? This is a purely algorithmic question about how faithfully HNSW approximates exhaustive search. It has nothing to do with whether those results are useful to a human. - -The second level is **retrieval relevance**: of the results returned, how many are actually relevant to the query intent? This requires a labeled ground-truth dataset or human judgment. A pipeline can achieve near-perfect ANN recall and still surface irrelevant documents if the embeddings are a poor fit for the task. - -The third level is **business impact**: does better retrieval lead to better outcomes — lower hallucination rates in downstream LLMs, higher task-completion rates, or improved user satisfaction scores? This is what stakeholders ultimately care about, but it is the hardest to measure directly. The causal chain from a vector match to a user outcome is long and easily dominated by generator behaviour, UI, and other confounders, so no single offline metric is a reliable proxy for a KPI. The next section describes how teams bridge this gap in practice. - -## Connecting the levels in practice - -The three levels are not measured in isolation. Teams that successfully connect retrieval work to business outcomes tend to build an **evaluation ladder** that runs each layer at a different cadence and cost, and uses the result of each layer to decide whether to invest effort at the next: - -| Layer | Question it answers | Cadence | Cost | -|---|---|---|---| -| `Recall@k` vs exact kNN on a sampled query set | Is the ANN plumbing sound? | On index-config or embedding changes | Low, once a sample query set exists | -| `Recall@k` / `NDCG@k` vs labeled golden set | Are the right documents surfacing? | Weekly, or on retrieval-stack changes | Low per run; **building the golden set is the real cost** — see the next page | -| End-to-end answer quality on golden set, scored by LLM-as-judge or human rating | Does the user actually get a correct answer? | Weekly, or on retrieval- or generator-stack changes | Moderate (LLM-judge cost per query × eval size) | -| Online A/B behind a flag | Does the business KPI move? | Per release, once offline layers pass | High (traffic allocation, experimentation infra) | - -Each layer is necessary but not sufficient. A win at layer 2 that does not carry through to layer 3 usually means the generator or the prompt is the bottleneck, not retrieval — this is the single most useful diagnostic the ladder provides, and the reason teams should not collapse layers 2 and 3 into a single score. - -**Isolate the component under test.** When end-to-end quality moves, hold one side fixed: evaluate retrieval with the generator frozen, and evaluate the generator with retrieval frozen. Without this, attribution collapses into guesswork and the ladder stops being diagnostic. - -**Proxy KPIs for teams without A/B infrastructure.** Most teams do not have the traffic or tooling to run a proper A/B. Cheap production signals that correlate with business value — click position on surfaced results, answer copy or share rate, session-level task completion, thumbs-up/down — can be instrumented long before a formal experimentation platform exists, and sit usefully between the golden-set layer and the full A/B. - -**Pre-register the decision rule.** Before running the A/B, write down what constitutes a win and what constitutes a no-ship, in terms of both the retrieval metric and the KPI. This is the highest-leverage discipline for avoiding "recall improved but the KPI didn't — the KPI is noisy, let's ship anyway" rationalisation. - -**Tooling.** Qdrant owns layers 1 and 2 directly. For layer 3, the ecosystem has mature tooling — [Ragas](https://docs.ragas.io/), [Phoenix](https://phoenix.arize.com/), [DeepEval](https://docs.confident-ai.com/) — that handles LLM-as-judge scoring and offline answer-quality eval. Use those rather than rebuilding the scoring harness in-house. - -## Quality metrics - -There are various ways to quantify the quality of semantic search. Some of them, such as [Precision@k](https://en.wikipedia.org/wiki/Evaluation_measures_(information_retrieval)#Precision_at_k), -are based on the number of relevant documents in the top-k search results. Others, such as [Mean Reciprocal Rank (MRR)](https://en.wikipedia.org/wiki/Mean_reciprocal_rank), -take into account the position of the first relevant document in the search results. [DCG and NDCG](https://en.wikipedia.org/wiki/Discounted_cumulative_gain) -metrics are, in turn, based on the relevance score of the documents. - -If we treat the search pipeline as a whole, we could use any of them. For the ANN algorithm itself, however, the natural question is much narrower: did the approximate search recover the same set of items that an exact kNN search would have returned? What approximation actually loses is *items* — some true nearest neighbours are missed and replaced by further ones — so the most informative metric is set-overlap against exact kNN. This is **`recall@k`**: of the true `k` nearest neighbours returned by exact search, how many does the approximate search recover? It is calculated as `|ANN results ∩ exact results| / k`. Note that when both ANN and exact search return exactly `k` items, `recall@k` and `precision@k` are numerically identical — the community uses "recall" to stay aligned with the ANN-benchmarks convention and to make it explicit that the ground truth is the exact top-k set. - -### Choosing the right metric - -The right choice of metric depends on what the search pipeline does with its results, and on what ground truth is available. The table below is a starting point, not a prescription — pick the metric that matches your ground truth and your user-visible behaviour. - -| Scenario | Recommended metric | Ground truth | Why | -|---|---|---|---| -| Tuning HNSW parameters | `Recall@k` | Exact kNN search | Approximation manifests as missed items from the true top-k set, so set-overlap against exact search is the quantity that actually changes with index parameters | -| RAG pipeline (LLM reads top-k chunks) | `Recall@k` | Labeled relevant chunks | The LLM can recover if a relevant doc is at position 3 vs 1; missing it entirely hurts more | -| Single-answer retrieval (FAQ, Q&A) | `MRR` or `Hits@1` | Labeled correct answer | The first result is what the user acts on; lower ranks matter little | -| Re-ranking or recommendation feeds | `NDCG@k` | Graded relevance labels (e.g. 0/1/2) | Order within the result list matters; a highly relevant doc at rank 5 is worse than at rank 1 | - -Note that `Recall@k` appears twice with different ground truths: against exact kNN when tuning the index, against labeled data when evaluating the pipeline end-to-end. They share a formula but answer different questions. - -On choosing `k`: it is worth setting it to match actual usage. If the application shows 5 results to the user, we should measure `@5`. If a RAG pipeline passes 10 chunks to the LLM, we should measure `@10`. Reporting `@100` for a UI that surfaces 5 results will make the metric look artificially good. - -`NDCG` is worth the added complexity only when we have **graded relevance labels** — for example 0/1/2 scores per query-document pair rather than binary relevant/not-relevant — and when the downstream system actually benefits from fine-grained ranking. Without multi-grade annotations, the simpler metrics will give us a cleaner signal with less labeling overhead. - -## Next steps - -To build a labeled dataset for relevance evaluation, see [Building a Golden Query Set](/documentation/tutorials-search-engineering/retrieval-quality-golden-set/). To measure and tune the ANN recall of a Qdrant collection in practice, see [Retrieval Quality Evaluation](/documentation/tutorials-search-engineering/retrieval-quality/). -``` - ---- - -### Page 2 (new): Building a Golden Query Set - -**File:** `qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-golden-set.md` - -**Proposed content:** - -```markdown ---- -title: Building a Golden Query Set -weight: 5 -aliases: - - /documentation/tutorials/retrieval-quality-golden-set/ ---- - -# Building a Golden Query Set - -| Time: 20 min | Level: Intermediate | | | -|--------------|---------------------|--|----| - -Evaluating retrieval relevance requires a labeled dataset of queries paired with their expected relevant documents — commonly called a *golden query set* or *ground truth*. The [Retrieval Quality Evaluation](/documentation/tutorials-search-engineering/retrieval-quality/) tutorial measures **ANN recall** against exact kNN, which needs no relevance labels at all. This page covers the separate task of building labeled data to measure **retrieval relevance** against real user intent. - -## Generating queries - -The highest-fidelity source is **real user queries mined from logs**. If the application records clicks or explicit feedback, we can sample query-document pairs and use them directly. This should be the first option we reach for before generating synthetic data. When sampling, it is worth stratifying by query type or topic cluster rather than sampling uniformly at random — a random sample will over-represent frequent queries and leave rare-but-important cases uncovered. As a rough heuristic, a few hundred labeled pairs is usually enough to detect large metric differences; detecting small ranking differences or slicing by query type requires substantially more. The right number depends on your effect size and query-level variance, so treat any specific number as a starting point and widen confidence intervals if the signal is noisy. - -When logs are not available, **LLM-based synthetic generation** is a practical alternative. For each document in the corpus, we can prompt a capable LLM to generate a handful of queries that a user would plausibly ask if they were looking for that document. This scales cheaply to thousands of query-document pairs. - -```python -import os - -import anthropic - -client = anthropic.Anthropic() - -def generate_queries_for_doc(doc_text: str, n: int = 3) -> list[str]: - response = client.messages.create( - model=os.environ.get("ANTHROPIC_MODEL", "claude-sonnet-4-6"), - max_tokens=256, - messages=[{ - "role": "user", - "content": ( - f"Generate {n} short, realistic search queries that would lead a user to the " - f"following document. Return only the queries, one per line.\n\n{doc_text}" - ), - }], - ) - return response.content[0].text.strip().splitlines() -``` - -For high-stakes applications, **human annotation** is the cleanest approach. Domain experts rate query-document pairs on a 3–5 point relevance scale, which is expensive but produces the signal needed for NDCG-based evaluation. - -## Pitfalls to watch for (data leakage and friends) - -The term **data leakage** is often used loosely to cover any situation where evaluation scores come out higher than real-world performance would justify. Unlike classical ML train/test leakage, the failure modes for golden query sets are more subtle — the document that a query was generated from **must** be indexed (it is the relevant answer the evaluation expects to find), so "hold out the labeled docs from the index" is *not* the right fix. The real risks are the following. - -**Synthetic-query unrealism.** LLMs tend to paraphrase the source document's wording. The resulting queries are much easier to retrieve than what real users type, which are typically shorter, vaguer, and use different vocabulary. Offline scores on synthetic queries therefore overstate production quality. Two practical mitigations: (1) prompt the LLM to write queries "as a user who has not seen this document", and (2) anchor a sample of synthetic queries against any real queries you do have, and verify the distributions of length and specificity are comparable. - -**Embedding-model contamination.** If the embedding model was fine-tuned on (query, document) pairs that overlap with the golden set, the evaluation measures in-distribution performance and overstates real-world behaviour. When using an off-the-shelf model, check its training mixture if published; when fine-tuning in-house, keep a strict split between fine-tuning data and evaluation data. - -**Near-duplicate documents.** If two documents are nearly identical, a query generated from one will retrieve the other, but the other won't be in the labels — so **precision is under-reported** because the labeled relevant set is incomplete. Deduplicate the corpus before generating labels (e.g. drop documents with cosine similarity > 0.95 to an earlier document), or label near-duplicate clusters jointly. - -**Temporal drift.** If the corpus evolves over time, evaluating with queries generated from documents that post-date the index version under test is unfair — those documents simply aren't there to retrieve. Pin the corpus snapshot, generate queries from that snapshot, and re-generate the golden set when the corpus changes materially. - -**Reviewer reproducibility.** Whatever approach you pick, pin the data: the corpus snapshot, the query-generation prompt, the LLM model version, and any deduplication threshold. Without this, a later "the score got worse" investigation cannot tell whether the retrieval regressed or the evaluation set changed underneath it. -``` - ---- - -### Page 3 (existing): Retrieval Quality Evaluation - -**File:** `qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality.md` - -**Changes required:** -- Remove the `### Quality metrics` subsection (moving to page 1) -- Update the `weight` from `4` to `6` -- Add a brief intro sentence linking to page 1 for conceptual background (e.g. "For the conceptual framing and a 'which metric when' guide, see [Retrieval Quality Fundamentals](/documentation/tutorials-search-engineering/retrieval-quality-fundamentals/).") -- Keep both existing aliases unchanged: - - `/documentation/tutorials/retrieval-quality/` - - `/documentation/beginner-tutorials/retrieval-quality/` -- **Commit fully to the precision → recall rename throughout the page** — a partial rename is worse than either full option, since a reader who just finished the Fundamentals page being told "we measure recall for ANN" will hit residual "precision" prose a few paragraphs later and get whiplash. Specifically: - - Rename `avg_precision_at_k` → `avg_recall_at_k` (function definition, all call sites, `print` output strings) - - Rename the `precision` variable → `recall` inside the function body - - Update the code comment `# We can calculate the precision@k` → `# We can calculate the recall@k` - - Update prose references: "calculate the `precision@5`" → "calculate the `recall@5`", "the precision of the approximate search" → "the recall of the approximate search", "we need higher precision" → "we need higher recall", "we can increase the precision" → "we can increase the recall", "The precision has obviously increased" → "The recall has obviously increased", "HNSW does a pretty good job in terms of precision" → "HNSW does a pretty good job in terms of recall" - - In `## Standard mode vs exact search`, update "so we can calculate the `precision@k` for different values of `k`" → "so we can calculate the `recall@k` for different values of `k`" - - In `## Tweaking the HNSW parameters`, the two occurrences of "the higher the precision of the search" should be rewritten to "the higher the recall of the search" (or "the higher the search quality" if we want to avoid committing to the metric). The earlier proposal to leave these as-is — on the grounds that they describe a general property of the index rather than the metric — creates exactly the mixed-terminology problem we are trying to avoid. -- Acknowledge in prose, once, that `recall@k` and `precision@k` coincide in the ANN-vs-exact setting (a one-line parenthetical is enough) so a reader who has seen the old version is not confused by the rename. -- Fix pre-existing bug: the code uses `range(60000)` while the surrounding prose says "first 50000 items for training". Reconcile these — update the prose to 60000 to match the code (safer than changing the code, which affects reproducibility for anyone who ran the old version). - ---- - -### Index table updates - -Two index files reference `retrieval-quality`. Both need to be updated — updating only the headless partial leaves the overview page stale. - -**File 1:** `qdrant-landing/content/documentation/headless/content/tutorials/search-engineering.md` - -Replace the single existing `Retrieval Quality Evaluation` row with three rows: - -```markdown -| [Retrieval Quality Fundamentals](/documentation/tutorials-search-engineering/retrieval-quality-fundamentals/) | Understand evaluation levels and choose the right metric. | Python | 15m | Intermediate | -| [Building a Golden Query Set](/documentation/tutorials-search-engineering/retrieval-quality-golden-set/) | Generate ground truth data at scale and avoid data leakage. | Python | 20m | Intermediate | -| [Retrieval Quality Evaluation](/documentation/tutorials-search-engineering/retrieval-quality/) | Measure ANN recall and tune HNSW parameters. | Python | 30m | Intermediate | -``` - -**File 2:** `qdrant-landing/content/documentation/tutorials-lp-overview.md` - -The same `Retrieval Quality Evaluation` row appears in the Search Engineering table on this page (currently line 71). Apply the same three-row replacement here so both indexes stay in sync. - ---- - -### Open questions / deliberate non-goals - -- **Fundamentals page placement.** This page is almost entirely conceptual — no hands-on Qdrant code. Keeping it under `tutorials-search-engineering/` matches where readers currently land when searching for this content, but it stretches the definition of "tutorial". Moving it to `/concepts/` is an alternative; we are not doing that in this PR to avoid a redirect sprawl, but it's worth revisiting if the folder grows more concept pages. -- **Weight values.** `weight: 4` on Fundamentals collides with `pdf-retrieval-at-scale.md` (also weight 4). The folder already has several weight collisions, so in practice this does not affect ordering, but if any template in the future orders strictly by weight this will need to be resolved. -- **Sample-size guidance.** We intentionally avoid naming a specific minimum in the golden-set page (previous draft said "200–300 labeled pairs"). Required sample size depends on the detectable effect size and query-level variance, and hard-coding a number invites a reasonable customer objection. The current wording gives a qualitative direction instead. From e9e0e4bdddf2c6e1e3172877ea514e4d069455a8 Mon Sep 17 00:00:00 2001 From: Dylan Couzon Date: Mon, 20 Apr 2026 12:21:05 -0400 Subject: [PATCH 09/64] Syntax --- .../retrieval-quality-fundamentals.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-fundamentals.md b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-fundamentals.md index ff3881ac6..6e55f7354 100644 --- a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-fundamentals.md +++ b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-fundamentals.md @@ -24,8 +24,8 @@ The three levels aren't measured in isolation. Teams that successfully connect r | Layer | Question it answers | Cadence | Cost | |---|---|---|---| -| `Recall@k` vs exact kNN on a sampled query set | Is the ANN plumbing sound? | On index-config or embedding changes | Low, once a sample query set exists | -| `Recall@k` / `NDCG@k` vs labeled golden set | Are the right documents surfacing? | Weekly, or on retrieval-stack changes | Low per run; **building the golden set is the real cost** (see the next page) | +| `Recall@k` vs exact kNN on a sampled query set | Is HNSW recovering the true top-k? | On index-config or embedding changes | Low, once a sample query set exists | +| `Recall@k` / `NDCG@k` vs labeled golden set | Are the right documents surfacing? | Weekly, or on retrieval-stack changes | Low per run; **building the golden set is the real cost** (see next tutorial) | | End-to-end answer quality on golden set, scored by LLM-as-judge or human rating | Does the user get a correct answer? | Weekly, or on retrieval- or generator-stack changes | Moderate (LLM-judge cost per query × eval size) | | Online A/B behind a flag | Does the business KPI move? | Per release, once offline layers pass | High (traffic allocation, experimentation infra) | From d6f06d6b60a5f238322c10afa85bf50ced359b9a Mon Sep 17 00:00:00 2001 From: Dylan Couzon Date: Mon, 20 Apr 2026 12:22:45 -0400 Subject: [PATCH 10/64] clean up tables --- .../retrieval-quality-fundamentals.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-fundamentals.md b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-fundamentals.md index 6e55f7354..7e288f220 100644 --- a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-fundamentals.md +++ b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-fundamentals.md @@ -22,12 +22,12 @@ The third level is **business impact**: does better retrieval lead to better out The three levels aren't measured in isolation. Teams that successfully connect retrieval work to business outcomes tend to build an **evaluation ladder** that runs each layer at a different cadence and cost, and uses the result of each layer to decide whether to invest effort at the next: -| Layer | Question it answers | Cadence | Cost | -|---|---|---|---| -| `Recall@k` vs exact kNN on a sampled query set | Is HNSW recovering the true top-k? | On index-config or embedding changes | Low, once a sample query set exists | -| `Recall@k` / `NDCG@k` vs labeled golden set | Are the right documents surfacing? | Weekly, or on retrieval-stack changes | Low per run; **building the golden set is the real cost** (see next tutorial) | -| End-to-end answer quality on golden set, scored by LLM-as-judge or human rating | Does the user get a correct answer? | Weekly, or on retrieval- or generator-stack changes | Moderate (LLM-judge cost per query × eval size) | -| Online A/B behind a flag | Does the business KPI move? | Per release, once offline layers pass | High (traffic allocation, experimentation infra) | +| # | Layer | What it measures | Cadence | Cost | +|---|---|---|---|---| +| 1 | ANN recall | `Recall@k` vs exact kNN on a sampled query set | On index or embedding changes | Low | +| 2 | Retrieval relevance | `Recall@k` / `NDCG@k` vs a labeled golden set | Weekly, or on retrieval-stack changes | Low per run; **golden set is the real cost** (see next tutorial) | +| 3 | End-to-end answer quality | LLM-as-judge or human rating on the golden set | Weekly, or on retrieval or generator changes | Moderate (LLM-judge cost × eval size) | +| 4 | Business impact | Online A/B behind a flag | Per release, once offline layers pass | High (traffic, experimentation infra) | Each layer is necessary but not sufficient. A win at layer 2 that doesn't carry through to layer 3 usually means the generator or the prompt is the bottleneck, not retrieval. This is the most useful diagnostic the ladder provides, and the reason teams shouldn't collapse layers 2 and 3 into a single score. From 5503b005b69e2f5832a3b8ee5b90a5dfdb018172 Mon Sep 17 00:00:00 2001 From: Dylan Couzon Date: Mon, 20 Apr 2026 12:32:33 -0400 Subject: [PATCH 11/64] improve wording --- .../retrieval-quality-fundamentals.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-fundamentals.md b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-fundamentals.md index 7e288f220..9ed1b0fd8 100644 --- a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-fundamentals.md +++ b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-fundamentals.md @@ -37,7 +37,7 @@ Each layer is necessary but not sufficient. A win at layer 2 that doesn't carry **Pre-register the decision rule.** Before running the A/B, write down what constitutes a win and what constitutes a no-ship, in terms of both the retrieval metric and the KPI. This is the highest-leverage discipline for avoiding "recall improved but the KPI didn't, the KPI is noisy, let's ship anyway" rationalization. -**Tooling.** Qdrant owns layers 1 and 2 directly. For layer 3, the ecosystem has mature tooling like [Ragas](https://docs.ragas.io/), [Phoenix](https://phoenix.arize.com/), and [DeepEval](https://docs.confident-ai.com/) that handles LLM-as-judge scoring and offline answer-quality eval. Use those rather than rebuilding the scoring harness in-house. +**Tooling.** Qdrant owns layers 1 and 2 directly. For layer 3, the ecosystem has mature tooling like [Ragas](https://docs.ragas.io/), [Arize Phoenix](https://phoenix.arize.com/), and [DeepEval](https://docs.confident-ai.com/) that handles LLM-as-judge scoring and offline answer-quality eval. ## Quality Metrics @@ -46,7 +46,11 @@ are based on the number of relevant documents in the top-k search results. Other take into account the position of the first relevant document in the search results. [DCG and NDCG](https://en.wikipedia.org/wiki/Discounted_cumulative_gain) metrics are, in turn, based on the relevance score of the documents. -If we treat the search pipeline as a whole, we could use any of them. For the ANN algorithm itself, however, the natural question is much narrower: did the approximate search recover the same set of items that an exact kNN search would have returned? What approximation loses is *items* (some true nearest neighbors are missed and replaced by further ones), so the most informative metric is set-overlap against exact kNN. This is **`recall@k`**: of the true `k` nearest neighbors returned by exact search, how many does the approximate search recover? It's calculated as `|ANN results ∩ exact results| / k`. When both ANN and exact search return exactly `k` items, `recall@k` and `precision@k` are numerically identical. The community uses "recall" to stay aligned with the ANN-benchmarks convention and to make it explicit that the ground truth is the exact top-k set. +To evaluate the ANN algorithm itself, the question is simple: of the `k` true nearest neighbors an exact search would return, how many did the approximation find? That fraction is **`recall@k`**: + +`recall@k = |ANN results ∩ exact results| / k` + +When both searches return exactly `k` items, `recall@k` and `precision@k` are numerically identical. The ANN community uses "recall" by convention to make clear that exact kNN is the ground truth. ### Choosing the Right Metric From 02710a1f9ba5557e97f3aa564d3e4e4a463d7a07 Mon Sep 17 00:00:00 2001 From: Dylan Couzon Date: Mon, 20 Apr 2026 12:41:21 -0400 Subject: [PATCH 12/64] Add using golden set instructions --- .../retrieval-quality-golden-set.md | 60 +++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-golden-set.md b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-golden-set.md index 68f81be9e..251f62386 100644 --- a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-golden-set.md +++ b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-golden-set.md @@ -42,6 +42,66 @@ def generate_queries_for_doc(doc_text: str, n: int = 3) -> list[str]: For high-stakes applications, **human annotation** is the cleanest approach. Domain experts rate query-document pairs on a 3 to 5 point relevance scale, which is expensive but produces the signal needed for NDCG-based evaluation. +## Using the Golden Set + +Once queries are labeled, run each through Qdrant and compare the returned IDs against the labels. The metric to compute depends on what the labels record (see the [metric-selection table](/documentation/tutorials-search-engineering/retrieval-quality-fundamentals/#choosing-the-right-metric)). + +For **binary-relevance labels** (a set of relevant doc IDs per query), compute `recall@k` and `MRR`: + +```python +def recall_at_k(retrieved_ids: list, relevant_ids: set, k: int) -> float: + hit = sum(1 for doc_id in retrieved_ids[:k] if doc_id in relevant_ids) + return hit / len(relevant_ids) if relevant_ids else 0.0 + +def mrr(retrieved_ids: list, relevant_ids: set) -> float: + for i, doc_id in enumerate(retrieved_ids): + if doc_id in relevant_ids: + return 1.0 / (i + 1) + return 0.0 +``` + +For **graded-relevance labels** (for example 0/1/2 scores per query-document pair), compute `NDCG@k`: + +```python +import numpy as np + +def ndcg_at_k(retrieved_ids: list, relevance_map: dict, k: int) -> float: + dcg = sum( + (2 ** relevance_map.get(doc_id, 0) - 1) / np.log2(i + 2) + for i, doc_id in enumerate(retrieved_ids[:k]) + ) + ideal = sorted(relevance_map.values(), reverse=True)[:k] + idcg = sum((2 ** rel - 1) / np.log2(i + 2) for i, rel in enumerate(ideal)) + return dcg / idcg if idcg > 0 else 0.0 +``` + +Run the evaluation loop across the golden set: + +```python +from qdrant_client import QdrantClient + +client = QdrantClient("http://localhost:6333") + +def evaluate(golden_set: list, collection: str, k: int = 10) -> dict: + recalls, mrrs = [], [] + for entry in golden_set: + results = client.query_points( + collection_name=collection, + query=entry["query_vector"], + limit=k, + ).points + retrieved = [p.id for p in results] + relevant = set(entry["relevant_ids"]) + recalls.append(recall_at_k(retrieved, relevant, k)) + mrrs.append(mrr(retrieved, relevant)) + return { + "mean_recall": sum(recalls) / len(recalls), + "mean_mrr": sum(mrrs) / len(mrrs), + } +``` + +This produces the retrieval-relevance score (layer 2 of the [evaluation ladder](/documentation/tutorials-search-engineering/retrieval-quality-fundamentals/#connecting-the-levels-in-practice)). Re-run it whenever the retrieval stack changes: new embedding model, new index config, new reranker. To measure layer 1 (ANN recall against exact kNN), see [Retrieval Quality Evaluation](/documentation/tutorials-search-engineering/retrieval-quality/). + ## Pitfalls to Watch For (Data Leakage and Friends) The term **data leakage** is often used loosely to cover any situation where evaluation scores come out higher than real-world performance would justify. Unlike classical ML train/test leakage, the failure modes for golden query sets are more subtle. The document that a query was generated from **must** be indexed (it's the relevant answer the evaluation expects to find), so "hold out the labeled docs from the index" is *not* the right fix. The real risks are the following. From 8cdc9acd1475c30651cae4ce9eb589880659cbbe Mon Sep 17 00:00:00 2001 From: Dylan Couzon Date: Mon, 20 Apr 2026 12:42:53 -0400 Subject: [PATCH 13/64] golden dataset - improve tutorial quality --- .../retrieval-quality-golden-set.md | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-golden-set.md b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-golden-set.md index 251f62386..e85adbf55 100644 --- a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-golden-set.md +++ b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-golden-set.md @@ -14,9 +14,19 @@ Evaluating retrieval relevance requires a labeled dataset of queries paired with ## Generating Queries -The highest-fidelity source is **real user queries mined from logs**. If the application records clicks or explicit feedback, sample query-document pairs and use them directly. Reach for this first before generating synthetic data. When sampling, stratify by query type or topic cluster rather than sampling uniformly at random: a random sample over-represents frequent queries and leaves rare-but-important cases uncovered. As a rough heuristic, a few hundred labeled pairs is enough to detect large metric differences; detecting small ranking differences or slicing by query type requires substantially more. The right number depends on your effect size and query-level variance, so treat any specific number as a starting point and widen confidence intervals if the signal is noisy. +There are three practical approaches to building a golden set. They trade quality against cost and scale, so most teams use a mix. Pick the ones that match your resources and quality bar. -When logs aren't available, **LLM-based synthetic generation** is a practical alternative. For each document in the corpus, prompt a capable LLM to generate a handful of queries that a user would plausibly ask if they were looking for that document. This scales cheaply to thousands of query-document pairs. +### 1. Human Annotation (Highest Quality, Highest Cost) + +Domain experts review query-document pairs and assign relevance scores, typically on a binary (relevant / not relevant) or graded (0/1/2 or 1 to 5) scale. This is the cleanest approach for high-stakes applications and produces the graded labels needed for NDCG-based evaluation. The bottleneck is expert time, so most teams reserve it for a small, high-value subset (for example, the hardest queries or the ones that matter most commercially) and build coverage around it with the other two approaches. + +### 2. Real User Queries from Logs (High Realism, Requires Production Traffic) + +If the application records queries with click or explicit-feedback signals, sample query-document pairs and use them directly. This captures real user intent and vocabulary, and is the first thing to reach for once production traffic exists. When sampling, stratify by query type or topic cluster rather than sampling uniformly at random: a random sample over-represents frequent queries and leaves rare-but-important cases uncovered. As a rough heuristic, a few hundred labeled pairs is enough to detect large metric differences; detecting small ranking differences or slicing by query type requires substantially more. The right number depends on your effect size and query-level variance, so treat any specific number as a starting point and widen confidence intervals if the signal is noisy. + +### 3. LLM-Based Synthetic Generation (Scales Cheaply, Lowest Fidelity) + +When neither logs nor human reviewers are available, prompt a capable LLM to generate queries that a user would plausibly ask to find each document. This scales cheaply to thousands of query-document pairs, but synthetic queries tend to be easier to retrieve than what real users type. See *Synthetic-query unrealism* below before trusting the numbers. ```python import os @@ -40,8 +50,6 @@ def generate_queries_for_doc(doc_text: str, n: int = 3) -> list[str]: return response.content[0].text.strip().splitlines() ``` -For high-stakes applications, **human annotation** is the cleanest approach. Domain experts rate query-document pairs on a 3 to 5 point relevance scale, which is expensive but produces the signal needed for NDCG-based evaluation. - ## Using the Golden Set Once queries are labeled, run each through Qdrant and compare the returned IDs against the labels. The metric to compute depends on what the labels record (see the [metric-selection table](/documentation/tutorials-search-engineering/retrieval-quality-fundamentals/#choosing-the-right-metric)). From bb8cac5a6ee0e6b28f7b91387b3e166252a4bf07 Mon Sep 17 00:00:00 2001 From: Dylan Couzon Date: Tue, 21 Apr 2026 12:00:10 -0400 Subject: [PATCH 14/64] update completion times --- .../headless/content/tutorials/search-engineering.md | 4 ++-- qdrant-landing/content/documentation/tutorials-lp-overview.md | 4 ++-- .../retrieval-quality-fundamentals.md | 2 +- .../retrieval-quality-golden-set.md | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/qdrant-landing/content/documentation/headless/content/tutorials/search-engineering.md b/qdrant-landing/content/documentation/headless/content/tutorials/search-engineering.md index 3bd2b0598..5041da568 100644 --- a/qdrant-landing/content/documentation/headless/content/tutorials/search-engineering.md +++ b/qdrant-landing/content/documentation/headless/content/tutorials/search-engineering.md @@ -5,8 +5,8 @@ | [Relevance Feedback](/documentation/tutorials-search-engineering/using-relevance-feedback/) | Relevance Feedback Retrieval in Qdrant | Python | 30m | Intermediate | | [Collaborative Filtering](/documentation/tutorials-search-engineering/collaborative-filtering/) | Collaborative filtering using sparse embeddings. | Python | 45m | Intermediate | | [Multivector Document Retrieval](/documentation/tutorials-search-engineering/pdf-retrieval-at-scale/) | PDF RAG using ColPali and embedding pooling. | Python | 30m | Intermediate | -| [Retrieval Quality Fundamentals](/documentation/tutorials-search-engineering/retrieval-quality-fundamentals/) | Understand evaluation levels and choose the right metric. | Python | 15m | Intermediate | -| [Building a Golden Query Set](/documentation/tutorials-search-engineering/retrieval-quality-golden-set/) | Generate ground truth data at scale and avoid data leakage. | Python | 20m | Intermediate | +| [Retrieval Quality Fundamentals](/documentation/tutorials-search-engineering/retrieval-quality-fundamentals/) | Understand evaluation levels and choose the right metric. | Python | 20m | Intermediate | +| [Building a Golden Query Set](/documentation/tutorials-search-engineering/retrieval-quality-golden-set/) | Generate ground truth data at scale and avoid data leakage. | Python | 40m | Intermediate | | [Retrieval Quality Evaluation](/documentation/tutorials-search-engineering/retrieval-quality/) | Measure ANN recall and tune HNSW parameters. | Python | 30m | Intermediate | | [Hybrid Search with Reranking](/documentation/tutorials-search-engineering/reranking-hybrid-search/) | Implement late interaction and sparse reranking. | Python | 40m | Intermediate | | [Semantic Search for Code](/documentation/tutorials-search-engineering/code-search/) | Navigate codebases using vector similarity. | Python | 45m | Intermediate | diff --git a/qdrant-landing/content/documentation/tutorials-lp-overview.md b/qdrant-landing/content/documentation/tutorials-lp-overview.md index 08cafbb47..aae6e5e3f 100644 --- a/qdrant-landing/content/documentation/tutorials-lp-overview.md +++ b/qdrant-landing/content/documentation/tutorials-lp-overview.md @@ -68,8 +68,8 @@ partition: qdrant | [Semantic Search Basics](/documentation/tutorials-search-engineering/neural-search/) | Deploy a search service for company descriptions. | FastAPI | 30m | Beginner | | [Collaborative Filtering](/documentation/tutorials-search-engineering/collaborative-filtering/) | Collaborative filtering using sparse embeddings. | Python | 45m | Intermediate | | [Multivector Document Retrieval](/documentation/tutorials-search-engineering/pdf-retrieval-at-scale/) | PDF RAG using ColPali and embedding pooling. | Python | 30m | Intermediate | -| [Retrieval Quality Fundamentals](/documentation/tutorials-search-engineering/retrieval-quality-fundamentals/) | Understand evaluation levels and choose the right metric. | Python | 15m | Intermediate | -| [Building a Golden Query Set](/documentation/tutorials-search-engineering/retrieval-quality-golden-set/) | Generate ground truth data at scale and avoid data leakage. | Python | 20m | Intermediate | +| [Retrieval Quality Fundamentals](/documentation/tutorials-search-engineering/retrieval-quality-fundamentals/) | Understand evaluation levels and choose the right metric. | Python | 20m | Intermediate | +| [Building a Golden Query Set](/documentation/tutorials-search-engineering/retrieval-quality-golden-set/) | Generate ground truth data at scale and avoid data leakage. | Python | 40m | Intermediate | | [Retrieval Quality Evaluation](/documentation/tutorials-search-engineering/retrieval-quality/) | Measure ANN recall and tune HNSW parameters. | Python | 30m | Intermediate | | [Reranking for Better Search](/documentation/search-precision/reranking-semantic-search/) | Use multivector representations for better ranking. | Python | 30m | Intermediate | | [Hybrid Search with Reranking](/documentation/tutorials-search-engineering/reranking-hybrid-search/) | Implement late interaction and sparse reranking. | Python | 40m | Intermediate | diff --git a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-fundamentals.md b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-fundamentals.md index 9ed1b0fd8..30848008b 100644 --- a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-fundamentals.md +++ b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-fundamentals.md @@ -7,7 +7,7 @@ aliases: # Retrieval Quality Fundamentals -| Time: 15 min | Level: Intermediate | | | +| Time: 20 min | Level: Intermediate | | | |--------------|---------------------|--|----| Before measuring retrieval quality, it's worth understanding what you're measuring. Retrieval quality operates at three distinct levels, and it's easy to optimize for the wrong one. diff --git a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-golden-set.md b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-golden-set.md index e85adbf55..5c7df6827 100644 --- a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-golden-set.md +++ b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-golden-set.md @@ -7,7 +7,7 @@ aliases: # Building a Golden Query Set -| Time: 20 min | Level: Intermediate | | | +| Time: 40 min | Level: Intermediate | | | |--------------|---------------------|--|----| Evaluating retrieval relevance requires a labeled dataset of queries paired with their expected relevant documents (commonly called a *golden query set* or *ground truth*). The [Retrieval Quality Evaluation](/documentation/tutorials-search-engineering/retrieval-quality/) tutorial measures **ANN recall** against exact kNN, which needs no relevance labels. This page covers the separate task of building labeled data to measure **retrieval relevance** against real user intent. From 1a9821cc95760ad82dc09e2bb9112db9f26b12c9 Mon Sep 17 00:00:00 2001 From: Dylan Couzon Date: Tue, 21 Apr 2026 12:06:48 -0400 Subject: [PATCH 15/64] golden set: reduce verbosity --- .../retrieval-quality-golden-set.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-golden-set.md b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-golden-set.md index 5c7df6827..9b161fa8b 100644 --- a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-golden-set.md +++ b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-golden-set.md @@ -18,15 +18,15 @@ There are three practical approaches to building a golden set. They trade qualit ### 1. Human Annotation (Highest Quality, Highest Cost) -Domain experts review query-document pairs and assign relevance scores, typically on a binary (relevant / not relevant) or graded (0/1/2 or 1 to 5) scale. This is the cleanest approach for high-stakes applications and produces the graded labels needed for NDCG-based evaluation. The bottleneck is expert time, so most teams reserve it for a small, high-value subset (for example, the hardest queries or the ones that matter most commercially) and build coverage around it with the other two approaches. +Domain experts assign relevance scores on a binary (relevant / not relevant) or graded (0/1/2 or 1–5) scale. This is the cleanest approach for high-stakes applications and produces the graded labels NDCG needs. Expert time is the bottleneck, so reserve it for a small, high-value subset — the hardest queries or the ones that matter most commercially — and use the other two approaches for coverage. ### 2. Real User Queries from Logs (High Realism, Requires Production Traffic) -If the application records queries with click or explicit-feedback signals, sample query-document pairs and use them directly. This captures real user intent and vocabulary, and is the first thing to reach for once production traffic exists. When sampling, stratify by query type or topic cluster rather than sampling uniformly at random: a random sample over-represents frequent queries and leaves rare-but-important cases uncovered. As a rough heuristic, a few hundred labeled pairs is enough to detect large metric differences; detecting small ranking differences or slicing by query type requires substantially more. The right number depends on your effect size and query-level variance, so treat any specific number as a starting point and widen confidence intervals if the signal is noisy. +If your app records queries with click or explicit-feedback signals, sample query-document pairs directly. This captures real user intent and vocabulary, and should be your first choice once production traffic exists. Stratify by query type or topic cluster — uniform sampling over-represents frequent queries and misses rare-but-important cases. As a rough heuristic, a few hundred labeled pairs detects large metric differences; small ranking differences or per-slice analysis need substantially more. Treat any number as a starting point and widen confidence intervals if the signal is noisy. ### 3. LLM-Based Synthetic Generation (Scales Cheaply, Lowest Fidelity) -When neither logs nor human reviewers are available, prompt a capable LLM to generate queries that a user would plausibly ask to find each document. This scales cheaply to thousands of query-document pairs, but synthetic queries tend to be easier to retrieve than what real users type. See *Synthetic-query unrealism* below before trusting the numbers. +When logs and reviewers aren't available, prompt an LLM to generate plausible queries for each document. This scales to thousands of pairs, but synthetic queries are easier to retrieve than what real users type. ```python import os @@ -112,14 +112,14 @@ This produces the retrieval-relevance score (layer 2 of the [evaluation ladder]( ## Pitfalls to Watch For (Data Leakage and Friends) -The term **data leakage** is often used loosely to cover any situation where evaluation scores come out higher than real-world performance would justify. Unlike classical ML train/test leakage, the failure modes for golden query sets are more subtle. The document that a query was generated from **must** be indexed (it's the relevant answer the evaluation expects to find), so "hold out the labeled docs from the index" is *not* the right fix. The real risks are the following. +In golden query sets, **data leakage** means any setup that makes offline metrics look better than production reality. Unlike classic train/test leakage, the issue is often evaluation design. Keep source documents in the index (they are the expected relevant answers). Focus on these risks: -**Synthetic-query unrealism.** LLMs tend to paraphrase the source document's wording. The resulting queries are much easier to retrieve than what real users type, which are typically shorter, vaguer, and use different vocabulary. Offline scores on synthetic queries therefore overstate production quality. Two practical mitigations: (1) prompt the LLM to write queries "as a user who has not seen this document", and (2) anchor a sample of synthetic queries against any real queries you do have, and verify the distributions of length and specificity are comparable. +**Synthetic-query unrealism.** LLMs often mirror source wording, creating easier queries than real user input. This inflates offline scores. Mitigate it by prompting for queries from users who have not seen the source, then compare synthetic and real-query distributions (length and specificity). -**Embedding-model contamination.** If the embedding model was fine-tuned on (query, document) pairs that overlap with the golden set, the evaluation measures in-distribution performance and overstates real-world behavior. When using an off-the-shelf model, check its training mixture if published; when fine-tuning in-house, keep a strict split between fine-tuning data and evaluation data. +**Embedding-model contamination.** If your embedding model was trained on pairs overlapping with the golden set, results will look better than true generalization. For hosted models, review published training data when possible. For in-house fine-tuning, keep strict train/eval separation. -**Near-duplicate documents.** If two documents are nearly identical, a query generated from one will retrieve the other, but the other won't be in the labels, so **precision is under-reported** because the labeled relevant set is incomplete. Deduplicate the corpus before generating labels (e.g. drop documents with cosine similarity > 0.95 to an earlier document), or label near-duplicate clusters jointly. +**Near-duplicate documents.** A query from document A may retrieve near-duplicate B, which is relevant but unlabeled. That makes **precision look worse** because labels are incomplete. Deduplicate before labeling (for example, cosine similarity > 0.95), or label duplicate clusters together. -**Temporal drift.** If the corpus evolves over time, evaluating with queries generated from documents that post-date the index version under test is unfair: those documents aren't there to retrieve. Pin the corpus snapshot, generate queries from that snapshot, and re-generate the golden set when the corpus changes materially. +**Temporal drift.** If the corpus changes, queries generated from newer documents can unfairly evaluate older index snapshots. Pin a corpus snapshot for each run and regenerate the golden set after material corpus changes. -**Reviewer reproducibility.** Whatever approach you pick, pin the data: the corpus snapshot, the query-generation prompt, the LLM model version, and any deduplication threshold. Without this, a later "the score got worse" investigation can't tell whether the retrieval regressed or the evaluation set changed underneath it. +**Reviewer reproducibility.** Version the full evaluation setup: corpus snapshot, prompt, LLM version, and dedup threshold. Otherwise you cannot tell whether a later score drop is model/index regression or dataset drift. From 4d99153c90e37e039e5858a8350b77d99b0184d2 Mon Sep 17 00:00:00 2001 From: Dylan Couzon Date: Wed, 22 Apr 2026 09:17:40 -0400 Subject: [PATCH 16/64] make Anthropic API key explicit Co-authored-by: Abdon Pijpelink --- .../retrieval-quality-golden-set.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-golden-set.md b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-golden-set.md index 9b161fa8b..6f0d3303c 100644 --- a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-golden-set.md +++ b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-golden-set.md @@ -33,7 +33,9 @@ import os import anthropic -client = anthropic.Anthropic() +client = Anthropic( + api_key=os.environ.get("ANTHROPIC_API_KEY"), +) def generate_queries_for_doc(doc_text: str, n: int = 3) -> list[str]: response = client.messages.create( From 6eba7e2cebd09dc017d7ac6df8746f6deb015676 Mon Sep 17 00:00:00 2001 From: Dylan Couzon Date: Wed, 22 Apr 2026 10:30:25 -0400 Subject: [PATCH 17/64] docs(golden-set): anchor intro at layer 2 --- .../retrieval-quality-golden-set.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-golden-set.md b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-golden-set.md index 6f0d3303c..8dff959b6 100644 --- a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-golden-set.md +++ b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-golden-set.md @@ -10,7 +10,7 @@ aliases: | Time: 40 min | Level: Intermediate | | | |--------------|---------------------|--|----| -Evaluating retrieval relevance requires a labeled dataset of queries paired with their expected relevant documents (commonly called a *golden query set* or *ground truth*). The [Retrieval Quality Evaluation](/documentation/tutorials-search-engineering/retrieval-quality/) tutorial measures **ANN recall** against exact kNN, which needs no relevance labels. This page covers the separate task of building labeled data to measure **retrieval relevance** against real user intent. +This tutorial covers **layer 2** of the evaluation ladder: **retrieval relevance**. Measuring how well retrieved results match real user intent requires a labeled dataset of queries paired with their expected relevant documents (commonly called a *golden query set* or *ground truth*). For layer 1 (ANN recall against exact kNN), which needs no relevance labels, see Retrieval Quality Evaluation. ## Generating Queries @@ -54,7 +54,7 @@ def generate_queries_for_doc(doc_text: str, n: int = 3) -> list[str]: ## Using the Golden Set -Once queries are labeled, run each through Qdrant and compare the returned IDs against the labels. The metric to compute depends on what the labels record (see the [metric-selection table](/documentation/tutorials-search-engineering/retrieval-quality-fundamentals/#choosing-the-right-metric)). +Once queries are labeled, run each through Qdrant and compare the returned IDs against the labels. The metric to compute depends on what the labels record (see the metric-selection table). For **binary-relevance labels** (a set of relevant doc IDs per query), compute `recall@k` and `MRR`: @@ -110,7 +110,7 @@ def evaluate(golden_set: list, collection: str, k: int = 10) -> dict: } ``` -This produces the retrieval-relevance score (layer 2 of the [evaluation ladder](/documentation/tutorials-search-engineering/retrieval-quality-fundamentals/#connecting-the-levels-in-practice)). Re-run it whenever the retrieval stack changes: new embedding model, new index config, new reranker. To measure layer 1 (ANN recall against exact kNN), see [Retrieval Quality Evaluation](/documentation/tutorials-search-engineering/retrieval-quality/). +Re-run this whenever the retrieval stack changes: new embedding model, new index config, new reranker. ## Pitfalls to Watch For (Data Leakage and Friends) From acc85e65ca44f5c73364c146227445fbb95c9552 Mon Sep 17 00:00:00 2001 From: Dylan Couzon Date: Wed, 22 Apr 2026 10:56:34 -0400 Subject: [PATCH 18/64] golden set: anchor intro at layer 2, link layer 1 to Web UI - Open the tutorial by anchoring it at layer 2 of the evaluation ladder and linking to the levels table in retrieval-quality- fundamentals (abdonpijpelink, line 14). - Point layer-1 readers (ANN recall vs exact kNN) at the Search Quality tab in the Qdrant Web UI instead of the retrieval-quality tutorial (mrscoopers, line 13). - Trim the duplicate layer-1 pointer at the end of "Using the Golden Set" (mrscoopers, line 113). - Open cross-tutorial links in a new tab to match the repo convention. Co-Authored-By: Claude Opus 4.7 (1M context) --- .../retrieval-quality-golden-set.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-golden-set.md b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-golden-set.md index 8dff959b6..d7e5bd1aa 100644 --- a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-golden-set.md +++ b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-golden-set.md @@ -10,7 +10,7 @@ aliases: | Time: 40 min | Level: Intermediate | | | |--------------|---------------------|--|----| -This tutorial covers **layer 2** of the evaluation ladder: **retrieval relevance**. Measuring how well retrieved results match real user intent requires a labeled dataset of queries paired with their expected relevant documents (commonly called a *golden query set* or *ground truth*). For layer 1 (ANN recall against exact kNN), which needs no relevance labels, see Retrieval Quality Evaluation. +This tutorial covers **layer 2** of the evaluation ladder: **retrieval relevance**. Measuring how well retrieved results match real user intent requires a labeled dataset of queries paired with their expected relevant documents (commonly called a *golden query set* or *ground truth*). For layer 1 (ANN recall against exact kNN), which needs no relevance labels, use the **Search Quality** tab in the Qdrant Web UI. ## Generating Queries From a47c57ebdc36732cc9c7f681959cab4b456fa611 Mon Sep 17 00:00:00 2001 From: Dylan Couzon Date: Wed, 22 Apr 2026 13:52:23 -0400 Subject: [PATCH 19/64] golden set: use ranx for metrics, reframe Anthropic example - Switch the metrics section from three hand-rolled functions (recall@k, MRR, NDCG@k) and a bespoke evaluate() loop to a single ranx-based example. Handles binary and graded labels in one call (mrscoopers, line 59). - Reframe the Anthropic synthetic-generation snippet as a minimal prompt shape, point at Ragas for readers who want a maintained testset generator, and fix a bug (Anthropic() was called without importing the class; switched to anthropic.Anthropic()). Addresses abdonpijpelink line 53 and mrscoopers line 31. Co-Authored-By: Claude Opus 4.7 (1M context) --- .../retrieval-quality-golden-set.md | 58 ++++++------------- 1 file changed, 17 insertions(+), 41 deletions(-) diff --git a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-golden-set.md b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-golden-set.md index d7e5bd1aa..5a50841da 100644 --- a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-golden-set.md +++ b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-golden-set.md @@ -26,14 +26,15 @@ If your app records queries with click or explicit-feedback signals, sample quer ### 3. LLM-Based Synthetic Generation (Scales Cheaply, Lowest Fidelity) -When logs and reviewers aren't available, prompt an LLM to generate plausible queries for each document. This scales to thousands of pairs, but synthetic queries are easier to retrieve than what real users type. +When logs and reviewers aren't available, prompt an LLM to generate plausible queries for each document. This scales to thousands of pairs, but synthetic queries are easier to retrieve than what real users type. Frameworks such as Ragas provide ready-made testset generators if you want a maintained tool; the example below is a minimal prompt shape you can adapt to any model. ```python import os import anthropic -client = Anthropic( +# Anthropic's API is one option; any LLM works. +client = anthropic.Anthropic( api_key=os.environ.get("ANTHROPIC_API_KEY"), ) @@ -56,60 +57,35 @@ def generate_queries_for_doc(doc_text: str, n: int = 3) -> list[str]: Once queries are labeled, run each through Qdrant and compare the returned IDs against the labels. The metric to compute depends on what the labels record (see the metric-selection table). -For **binary-relevance labels** (a set of relevant doc IDs per query), compute `recall@k` and `MRR`: +Use ranx, a Python library for ranking evaluation. It covers `recall@k`, `MRR`, `NDCG@k`, and others through a single `Qrels` / `Run` interface, and handles both binary and graded labels the same way. -```python -def recall_at_k(retrieved_ids: list, relevant_ids: set, k: int) -> float: - hit = sum(1 for doc_id in retrieved_ids[:k] if doc_id in relevant_ids) - return hit / len(relevant_ids) if relevant_ids else 0.0 - -def mrr(retrieved_ids: list, relevant_ids: set) -> float: - for i, doc_id in enumerate(retrieved_ids): - if doc_id in relevant_ids: - return 1.0 / (i + 1) - return 0.0 -``` - -For **graded-relevance labels** (for example 0/1/2 scores per query-document pair), compute `NDCG@k`: - -```python -import numpy as np - -def ndcg_at_k(retrieved_ids: list, relevance_map: dict, k: int) -> float: - dcg = sum( - (2 ** relevance_map.get(doc_id, 0) - 1) / np.log2(i + 2) - for i, doc_id in enumerate(retrieved_ids[:k]) - ) - ideal = sorted(relevance_map.values(), reverse=True)[:k] - idcg = sum((2 ** rel - 1) / np.log2(i + 2) for i, rel in enumerate(ideal)) - return dcg / idcg if idcg > 0 else 0.0 -``` - -Run the evaluation loop across the golden set: +Construct the labels as a `Qrels` object (a dict mapping query IDs to `{doc_id: relevance_score}`) and the Qdrant results as a `Run` (a dict mapping query IDs to `{doc_id: ranking_score}`). For binary labels, use `1` for relevant; for graded labels, use the raw 0/1/2 scores. ```python from qdrant_client import QdrantClient +from ranx import Qrels, Run, evaluate client = QdrantClient("http://localhost:6333") -def evaluate(golden_set: list, collection: str, k: int = 10) -> dict: - recalls, mrrs = [], [] +def retrieval_run(golden_set: list, collection: str, k: int = 10) -> Run: + run = {} for entry in golden_set: results = client.query_points( collection_name=collection, query=entry["query_vector"], limit=k, ).points - retrieved = [p.id for p in results] - relevant = set(entry["relevant_ids"]) - recalls.append(recall_at_k(retrieved, relevant, k)) - mrrs.append(mrr(retrieved, relevant)) - return { - "mean_recall": sum(recalls) / len(recalls), - "mean_mrr": sum(mrrs) / len(mrrs), - } + run[entry["query_id"]] = {p.id: p.score for p in results} + return Run(run) + +qrels = Qrels({entry["query_id"]: entry["labels"] for entry in golden_set}) +run = retrieval_run(golden_set, collection="my_collection", k=10) + +metrics = evaluate(qrels, run, ["recall@10", "mrr", "ndcg@10"]) ``` +For the full metric list (Precision@k, MAP, ERR, and others), see the ranx docs. + Re-run this whenever the retrieval stack changes: new embedding model, new index config, new reranker. ## Pitfalls to Watch For (Data Leakage and Friends) From 81883cbecc23e85ccafb1505ea550b26f3496885 Mon Sep 17 00:00:00 2001 From: Dylan Couzon Date: Wed, 22 Apr 2026 14:31:10 -0400 Subject: [PATCH 20/64] golden set: framing --- .../retrieval-quality-golden-set.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-golden-set.md b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-golden-set.md index 5a50841da..f164ca4b6 100644 --- a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-golden-set.md +++ b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-golden-set.md @@ -22,7 +22,7 @@ Domain experts assign relevance scores on a binary (relevant / not relevant) or ### 2. Real User Queries from Logs (High Realism, Requires Production Traffic) -If your app records queries with click or explicit-feedback signals, sample query-document pairs directly. This captures real user intent and vocabulary, and should be your first choice once production traffic exists. Stratify by query type or topic cluster — uniform sampling over-represents frequent queries and misses rare-but-important cases. As a rough heuristic, a few hundred labeled pairs detects large metric differences; small ranking differences or per-slice analysis need substantially more. Treat any number as a starting point and widen confidence intervals if the signal is noisy. +If your app records queries with click or explicit-feedback signals, sample query-document pairs directly. This captures real user intent and vocabulary, and should be your first choice once production traffic exists. Stratify sampling so rare-but-important cases aren't drowned out. For search-style traffic, that usually means query type or topic cluster. For RAG or agentic retrieval, it often means conversation turn or intent class. A few hundred labeled pairs can detect large metric differences; per-slice analysis or small ranking deltas need substantially more. Treat any number as a starting point and widen confidence intervals if the signal is noisy. ### 3. LLM-Based Synthetic Generation (Scales Cheaply, Lowest Fidelity) From fd095af85a1ba056540519ad1c1a495841dcbba3 Mon Sep 17 00:00:00 2001 From: Dylan Couzon Date: Wed, 22 Apr 2026 15:06:47 -0400 Subject: [PATCH 21/64] retrieval-quality: layer-1 anchor and title-case headers MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add a layer-1 anchor sentence under the Time/Level table pointing at the evaluation ladder in Fundamentals, mirroring the golden-set tutorial's anchor. Addresses abdonpijpelink's ask for a levels-table link and a "this tutorial focuses on level 1" framing. - Title-case the six H2 headers for consistency across the tutorials-search-engineering set. Deferred: streaming the 60K training items into upload_points instead of materializing as a list (abdonpijpelink line 69) — pending manager confirmation before proceeding. Co-Authored-By: Claude Opus 4.7 (1M context) --- .../retrieval-quality.md | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality.md b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality.md index f3ed9bd24..65dd6f5f2 100644 --- a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality.md +++ b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality.md @@ -11,6 +11,8 @@ weight: 6 | Time: 30 min | Level: Intermediate | | | |--------------|---------------------|--|----| +This tutorial measures **layer 1** of the evaluation ladder, **ANN recall**: the share of exact kNN results that Qdrant's approximate nearest-neighbor search recovers. For retrieval relevance (layer 2), see the Building a Golden Query Set tutorial. + Semantic search pipelines are as good as the embeddings they use. If your model cannot properly represent input data, similar objects might be far away from each other in the vector space. No surprise, that the search results will be poor in this case. There is, however, another component of the process which can also degrade the quality of the search results. It is the ANN algorithm itself. @@ -18,7 +20,7 @@ component of the process which can also degrade the quality of the search result In this tutorial, we will show how to measure the quality of the semantic retrieval and how to tune the parameters of the HNSW, the ANN algorithm used in Qdrant, to obtain the best results. -## Embeddings quality +## Embeddings Quality The quality of the embeddings is a topic for a separate tutorial. In a nutshell, it is usually measured and compared by benchmarks, such as [Massive Text Embedding Benchmark (MTEB)](https://huggingface.co/spaces/mteb/leaderboard). The evaluation process itself is pretty @@ -27,7 +29,7 @@ to receive for each of them. In the [evaluation process](https://qdrant.tech/rag them with the ground truth. In that setup, **finding the most similar documents is implemented as full kNN search, without any approximation**. As a result, we can measure the quality of the embeddings themselves, without the influence of the ANN algorithm. -## Retrieval quality +## Retrieval Quality Embeddings quality is indeed the most important factor in the semantic search quality. However, vector search engines, such as Qdrant, do not perform pure kNN search. Instead, they use **Approximate Nearest Neighbors** (ANN) algorithms, which are much faster than the exact search, @@ -40,7 +42,7 @@ ANN-algorithm layer and measures it with `recall@k`: the fraction of the true to recovers. When both ANN and exact search return exactly `k` items, `recall@k` and `precision@k` are numerically identical; we use "recall" to match the ANN-benchmarks convention. -## Measure the quality of the search results +## Measure the Quality of the Search Results Let's build a quality [evaluation](https://qdrant.tech/rag/rag-evaluation-guide/) of the ANN algorithm in Qdrant. We will, first, call the search endpoint in a standard way to obtain the approximate search results. Then, we will call the exact search endpoint to obtain the exact matches, and finally compare both results @@ -116,7 +118,7 @@ while True: break ``` -## Standard mode vs exact search +## Standard Mode vs Exact Search Qdrant has a built-in exact search mode, which can be used to measure the quality of the search results. In this mode, Qdrant performs a full kNN search for each query, without any approximation. It is not suitable for production use with high load, but it is perfect for the @@ -168,7 +170,7 @@ avg(recall@5) = 0.9935999999999995 As we can see, the recall of the approximate search vs exact search is pretty high. There are, however, some scenarios when we need higher recall and can accept higher latency. HNSW is pretty tunable, and we can increase the recall by changing its parameters. -## Tweaking the HNSW parameters +## Tweaking the HNSW Parameters HNSW is a hierarchical graph, where each node has a set of links to other nodes. The number of edges per node is called the `m` parameter. The larger the value of it, the higher the recall of the search, but more space required. The `ef_construct` parameter is the number of @@ -208,7 +210,7 @@ The recall has obviously increased, and we know how to control it. However, ther latency and memory requirements. In some specific cases, we may want to increase the recall as much as possible, so now we know how to do it. -## Wrapping up +## Wrapping Up Assessing the quality of retrieval is a critical aspect of [evaluating](https://qdrant.tech/rag/rag-evaluation-guide/) semantic search performance. It is imperative to measure retrieval quality when aiming for optimal quality of. your search results. Qdrant provides a built-in exact search mode, which can be used to measure the quality of the ANN algorithm itself, From e5d910122735f6bd1b8294ade6e25909afa99318 Mon Sep 17 00:00:00 2001 From: Dylan Couzon Date: Wed, 22 Apr 2026 15:26:29 -0400 Subject: [PATCH 22/64] retrieval-quality: tone pass on intro, section rename, drop RAG link - Rewrite the intro so the ANN algorithm reads as one of several levers shaping retrieval quality (alongside the embedding model, retrieval strategy, filtering, reranking) rather than the only factor beyond embeddings. Addresses mrscoopers on the reductive "embeddings + ANN" framing. - Rename the "Retrieval Quality" section to "ANN Recall" and rewrite its opening paragraph to match; ANN approximation quality isn't the same as retrieval quality broadly. - Drop the RAG-evaluation-guide link from the three places it appeared in this file. This tutorial isn't RAG-specific. Co-Authored-By: Claude Opus 4.7 (1M context) --- .../retrieval-quality.md | 20 ++++++------------- 1 file changed, 6 insertions(+), 14 deletions(-) diff --git a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality.md b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality.md index 65dd6f5f2..2038e297c 100644 --- a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality.md +++ b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality.md @@ -13,28 +13,20 @@ weight: 6 This tutorial measures **layer 1** of the evaluation ladder, **ANN recall**: the share of exact kNN results that Qdrant's approximate nearest-neighbor search recovers. For retrieval relevance (layer 2), see the Building a Golden Query Set tutorial. -Semantic search pipelines are as good as the embeddings they use. If your model cannot properly represent input data, similar objects might -be far away from each other in the vector space. No surprise, that the search results will be poor in this case. There is, however, another -component of the process which can also degrade the quality of the search results. It is the ANN algorithm itself. - -In this tutorial, we will show how to measure the quality of the semantic retrieval and how to tune the parameters of the HNSW, the ANN -algorithm used in Qdrant, to obtain the best results. +We'll measure Qdrant's ANN recall with `recall@k` and tune HNSW parameters to control the recall/latency trade-off. The ANN algorithm is one of several levers that shape retrieval quality in a production pipeline, alongside the embedding model, retrieval strategy (dense, sparse, hybrid, and multi-vector), filtering, and reranking. ## Embeddings Quality The quality of the embeddings is a topic for a separate tutorial. In a nutshell, it is usually measured and compared by benchmarks, such as [Massive Text Embedding Benchmark (MTEB)](https://huggingface.co/spaces/mteb/leaderboard). The evaluation process itself is pretty straightforward and is based on a ground truth dataset built by humans. We have a set of queries and a set of the documents we would expect -to receive for each of them. In the [evaluation process](https://qdrant.tech/rag/rag-evaluation-guide/), we take a query, find the most similar documents in the vector space and compare +to receive for each of them. In the evaluation process, we take a query, find the most similar documents in the vector space and compare them with the ground truth. In that setup, **finding the most similar documents is implemented as full kNN search, without any approximation**. As a result, we can measure the quality of the embeddings themselves, without the influence of the ANN algorithm. -## Retrieval Quality +## ANN Recall -Embeddings quality is indeed the most important factor in the semantic search quality. However, vector search engines, such as Qdrant, do not -perform pure kNN search. Instead, they use **Approximate Nearest Neighbors** (ANN) algorithms, which are much faster than the exact search, -but can return suboptimal results. We can also **measure the retrieval quality of that approximation** which also contributes to the overall -search quality. +The embedding model sets a baseline for search quality, but the retrieval pipeline can still underperform it. Vector search engines such as Qdrant don't run pure kNN at query time; they use **approximate nearest-neighbor** (ANN) algorithms for speed. ANN is faster than exact search but can return suboptimal results. **ANN recall** measures that gap. For a broader discussion of what to measure and when (ANN recall vs retrieval relevance vs business impact, and which metric fits which scenario), see [Retrieval Quality Fundamentals](/documentation/tutorials-search-engineering/retrieval-quality-fundamentals/). This tutorial focuses on the @@ -44,7 +36,7 @@ match the ANN-benchmarks convention. ## Measure the Quality of the Search Results -Let's build a quality [evaluation](https://qdrant.tech/rag/rag-evaluation-guide/) of the ANN algorithm in Qdrant. We will, first, call the search endpoint in a standard way to obtain +Let's build a quality evaluation of the ANN algorithm in Qdrant. We will, first, call the search endpoint in a standard way to obtain the approximate search results. Then, we will call the exact search endpoint to obtain the exact matches, and finally compare both results in terms of recall. @@ -212,7 +204,7 @@ to do it. ## Wrapping Up -Assessing the quality of retrieval is a critical aspect of [evaluating](https://qdrant.tech/rag/rag-evaluation-guide/) semantic search performance. It is imperative to measure retrieval quality when aiming for optimal quality of. +Assessing the quality of retrieval is a critical aspect of evaluating semantic search performance. It is imperative to measure retrieval quality when aiming for optimal quality of. your search results. Qdrant provides a built-in exact search mode, which can be used to measure the quality of the ANN algorithm itself, even in an automated way, as part of your CI/CD pipeline. From 80bae7403e155105830a1f742a46ff4dcd10f9e2 Mon Sep 17 00:00:00 2001 From: Dylan Couzon Date: Wed, 22 Apr 2026 16:34:04 -0400 Subject: [PATCH 23/64] add screenshots for ANN Web UI tutorial --- .../search-quality-advanced.png | Bin 0 -> 75831 bytes .../search-quality-after-tuning.png | Bin 0 -> 101832 bytes .../retrieval-quality/search-quality-tab.png | Bin 0 -> 156828 bytes 3 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 qdrant-landing/static/documentation/tutorials/retrieval-quality/search-quality-advanced.png create mode 100644 qdrant-landing/static/documentation/tutorials/retrieval-quality/search-quality-after-tuning.png create mode 100644 qdrant-landing/static/documentation/tutorials/retrieval-quality/search-quality-tab.png diff --git a/qdrant-landing/static/documentation/tutorials/retrieval-quality/search-quality-advanced.png b/qdrant-landing/static/documentation/tutorials/retrieval-quality/search-quality-advanced.png new file mode 100644 index 0000000000000000000000000000000000000000..0f57c944dcb06f134ef7d38b855cc0e4eb629178 GIT binary patch literal 75831 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

KSO_xDl%`Q3{f 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 literal 0 HcmV?d00001 diff --git a/qdrant-landing/static/documentation/tutorials/retrieval-quality/search-quality-tab.png b/qdrant-landing/static/documentation/tutorials/retrieval-quality/search-quality-tab.png new file mode 100644 index 0000000000000000000000000000000000000000..30e4645708b5260d137b243403656e648a3c6012 GIT binary patch literal 156828 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%0A3u#J@JS021v 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

    gI=N1-dl#X{c1$W z3q-ZIKn*?5vjPv#k~5)$33s9t&1Q@!;_k-*0kuKll;l(eF}r|e_Z96XHNU{sVQahL zInjY-q3jFmB7#v9HSsM_{me=usd1{Ij5B%}C?g--O9&N(r>qy-v2&@RiDjs(3q$co zIL&g=iem0o`qbx^mvts?Ravto-Lqrxbao@SE*+)TCMGO!<5vm&P=QA@P8ZyX)?CWX z^sBNyV-$N0j%abi@0KBfG5PU1DjOTsD-6N?^jl*Soi*m28t_FLK8aVs+5{jv;pme; zD-Y&(;-W7LJ!El7XO=tLba0l07dbIx3Yi{!cXh5JEDW5W3Vl8*=i3{RpcG( zjfm-Y%@MyA`$r;i*Npw(-hk&e%!&pzf+?4hoe;?4x;f0~@~{r-pb2%gX!|j-%nMnwt}^Y#AcyP=S{tKa-9SxS8d)ICHTX4IP;02!o#p}ru4u&*I(T}Q%Q z&2}wnOsKtWuhG&&;(?gB%;T|(R+K42M@!r;*8#`5mIT6L0TRj`3(NabaNwe2vLRVt+4=HpmqL-V|{`h z;no-8N(>!-^a+5vqtDBYkNdWjG3#+BFyqF(^+?}0cQdRi44t~Ug2-p17vxMlWGkP; zA}N12ScyNsaFOq}ISdqZeEjq<2n$sp9=hAf%M8=stb}_i+T&EZ?HaE;=n*HK5jv@2 zEeOGD9!BQ&lJGD7KRX_vbn~WV=BG~_H(*Xsc|=Wqka4{Pq|+J{3sgAaqids3UZ?~V zhr{b`5xg%5nu&5u_Hv|6GWxY|Ch&nqWr33VSxRBWcq?N0F=}f!+d3$PucVySeEf5GHbJguVpfXcpbR3(fbvVm% zeQk8#u>erO8)#%BRWNf%PD2k@STmhL44Qh8%la3 z8+T+}F;RutF9^g&7Hq0n&2EfzL@#wR_#O$nMBNZrYek)b?-d4$5ybg4EHiDOtdwsj z$=>nE#n4IlRbz!Iof!o5Mp2a^#AbcjwqNffH|84U+RXCV7=Dn8SNeq%U4sGHsLlGS z8XLR?;b@c(3;*muZvgE#CJre{;cF~JT_|H zhsvjrWw-c{B+Hf*RL83js^8O=#@SLxzZR8B_9v9LrgVOuV%eNfs0@M^>CgM&HW%f3 z4yS?|1`ctnI!l-bnH#+-k}@Dkua_n^aNe`&hRQmM?U8LHFQ3XAtJE@Ne@3S53X8bDZtoO^t_h`H8 zsR?&XGDnAs%?@%#^tUa0XWG=L!&#ZzAf8=^KGs7iB`n3VEAQNc_)}J#L!oqCa&^?O zBrO&c)h2OZoex!v`H?td0QHEYRHWz8Q-3e%X^f`a;OuFeu3)hQeZmcAU#vI{_3W?f z!_rRzx>|5LETFI&UUa)xSjrMSVcEJQ?#d(OZAoa^V zNy=lBw?)**B?ehpA7zIgM@l}bCmw>@OatO3@M~YsTb^wUl2^2=V)XeU%`1aZ95q!$ zhK)~%^#zQ>>+~?>xYZ9JOSs&hvi(jL=`(L$?z543VO2m5D(gJ4Q)`{>l?cZkKVI(l z(I@JIpA>u~tD_FkK^@O-PxIk^S_n&cct?4WpVfHXKYVwdt|;d+#G zCuy`etQ^X)QO9)sw5u7}gv+ z9_$OsV8TraC+PE=@ryc;qXx_>dpQ*%-;3CS1Rj04)#t}s=Y$i4E)ALWOlOP zj-Pc^jVGCeZj`NP@*Lz~a)wRG#rsdVsuteqgtcMSD?s7HkmyYb!vR~k#(1-U1KQq$ zkcly9ldv1pa}C&Lmhn}V+em4WnlEc3C-$!mi+vURJ*g=_?IQvIFsbKNcMP(uL(iBv zRVU>N5inU*M;d&O$H8CC3gP9<+U8BR;a??1sY_Kl{W#049y0$4p3(gxa0HH2Ng+-x zsL{==yUhS*B0O|FE{>rs@6mvk~eeas!~JzwzpO#KiA5q zrLzZ!3qDeMScA}s7&BrSsBArYjK$juP%+I4(BH3(&vmIM)%CYG3ljZq@>_8^sB7t9 z5xs6lcJ1T#*6Ft4JoNllH9AJ*ubzRvkd>HOs~gBstFWZ zTSzy);MeHq_ywRgbr318i-lIdDjH9y>&MNrwG~>GH#yj34cXa5=&ZJyo|*1KUdQV0 zHUWVoHMgMdZQ;2VohgR# zq7EaffTh;WDi)1WD1c2(oZF%Y&7z%4!PU4#s8btF>4yLErY=KP`pI)PDs7X|!>(Jm z_6IJG)}f{LCM@<%yy`ryAI*oeIv+v=Sp*tI<|gYgnp6oaBT=vJ;GCOLd3xoAxb0*W z#-bUYo9)HVDe5&1)$D%kcnW~U&}8pnE<~lk)7|3I0xFNM2|Pn5G_^WuW=rfv*}f8`x=zMvnZYr2rAnR7jK^ykLC{|QkLP0) zl7W@!3SOVe8A)MKCkzSI5#G%+r#{m}NA=SDDcuU)B63lM-ESorQ5VO4}7ySVYfxAyKXvkc>jP5Ld&;d`<} zEDC#LABN3IG@NXgjE7pM%TJOuYhRNQEIjyLbc|ssHO-0lEYg>kdK{>0M!_VvfhraR zWr1q_Ou9o&<;Mj!KbYO*eF0W7tPf=G_lRDLc@Yj>? zl?MeA?Th>n%}6yw2Xt;ajcz!qpI<$(jIw1tG3ui^H4?O8B3`UYM2GfUCtcE+G_O6JH5yYud2=iU8xYr4yI zcUdDzMdSZ~iaFUY$Xv<24Is0-N?)C2K5lohP@seyaYuBDwO>_izeNq>&kou|g@D7s zn8Hk4XeROVzGjDfQdS?S1cM#lll{g)7Xq~k^V2bV$ zd)Xl90y23S-v%RPE>oojHuwnb3zTzMG+bTdGSz6!mD(Klm({*#Kvw*-786S4gydP- z438Lf@Vy&zGS@@D@LvJ`Y;_0!w8&LZmQop|`@Q;)#@rp7pO}ey?I+bGKZ`Ur6lH90@5>-&><+2-H zWc(=02dEcbexrR?>7V+^etwBGZ8S~T%KqK(?uw_4j`Q2MCLPs>v{e7_ynYJ?Z1bn= zlfv2YoKGObjuU32ImTaS)bN2hzn05?akGB}X+M#2Tvet(g%mKWDV`L*GRxKfDxA9& zpz_a6$-bm)aA#8TZr<&;@;|Oj5Y{)*W4iFCkU!Z!dHx&T^Px`FZ%QZfzTEIW!}&jG zlthO9pWD)Cka6@!0Eds-@lSh*Q3f~geI@X2w|Y5B{Jmjs< z7e{n!=;_}9o5eHs64{8KT+~wk)29C!lsP)~X|&q6KXT>&II^q1XnvLwe!749>#yH^ z<(6lk{QrFgL!Rqg>YQt%`TN;Br2lp+_I1+h9_%MEQuaNt*^i&CGy>!0h+nv(==&3f zRH+kr6Zw=4ANlNA*0`QM1L~o3QeoE7CEM7J$Xv+8yJgRfsoOxU7v529%Tzk#3a^rH5{$#R8;j5QdTz=@@DV5tNdSk)fqyXl8&Rp2hjyan60@ z-ShJQ()r-b-fOSD)^}asE7s>E`acgDZS4xpn76Q}b)wzrSWFtkwA5eMF-y|ly+A@9 z9~l(+{*}NZ%$*ok<+~4q>Ns)kFLZ%3+v1HP-!fYigRm#oaIh#W`?nJmT!b4n{B()Qu+0She3jmY#MA6tDQ5w`)l2my$%woE&3xL`-OrSu&N(v zjT$g+gWHa{b@qXro~Xu?iD^1UgS2GH0Ari+kq4Cy45PoB2;e8dT+E4P)b{$gd?Whnu*=B^@lndq}%{JkTvicrwF`nS=~QB zDYF|<^2$HKm)YVNPV}1njPrik_cs`E<^iL_g2|G0qT1Fl8b;I9G7BZ;o>rt%$klIy zze;|j@~Kbw1OyvaJ4qj-7C7=WAMu zLCnjg9mI)#9m@!)7=8p|I}ArC;C~vSEA)$I9~r(e4DK;@vWSG|CHyM=VJtxL#? z%vJc9*={28T|Ez{&JioUh{P}0xWR>AT}gsFs+R8AjmOJWBNblxViVgmG`y=+UEGZW z@xMw!{6E~&oA9zKf&2fcnrw$V*0cNI)?BY^{4v|Z&ha?MZKfcig6OjWza!VA`kp2O zX0u{+vPX_Q77ZwnIi)5wE|v*etf8GV;tbJgImcY;61%T%iTWE#FbMXdyvz_b@pCCv zChT%KD)*6Y7N-CEQIR(kI?;DdbYwZHlpx8Z@F=}eM#FdwK<)> zMMZ(ubb`-+T@yNfsb-Zpv^0?I8n8`v#?ln5z=Y<@;4yrVFWsZ8V=u3vVG1Z=-<~#S z`h3}UT^PUn>MBXYiZ=I5ZeHUaD7VgaCLJFKDQaaaeS0ZbBO8*z{ihwPL|qziU9p~b z)^CrxU2l&1Vbf{DAd1CPc8-==z~k;3J?eC{yL?})PO<|AfpqE=Yyk)g+DIqaXYqQW zEqa`eg^c=W36yJ6oxu~OW(lKm_)&s+R^=P9g8Gj|UFTH<6&m`U?aMPpy7lazu?Ad} zWue5-^c~ambP7BGk$)NDWdJIStgv7uQD0)$I}$W8Tn*NjU#{15DJkQ~h%sgS!ci60EX? z3+CEVjRft+W+m_T_e9?6Q(5V)6q2W?DxgQ-{)pl}p)$;9#^XEWIj5f!V`D`<)$$DU zUWxUU!->23+GEw_iyn4xCUi~yevOH`2i_`5za48Q(h%=mV zO|M_k*c@xjRwwnF*tvv8(u|hDii;l{E;_&TOm(XN;dZ1&w zYY#RCSi)CtQ32Y0ls^y7xp~5G{ozQxRq<$Y;DsQi6m*p`t|-NbQqXpotA8a#{#y>? zjc0|kSJM2aI}Co-a^XihjOup3ccM9_F#5+cb*H@(05OqNcx-m_5~-A2(V_o^^JlEn~ARIYkX(EASU zOp~{zaOR4g7&<1Lw;urR*-AE0jpJeg+h%yU^Y5SO%a`g*9ef$~?Qo$U7s&=h%U5>s$!hgCR?DjNIE5$#(X zTrPTt7z*){?L^$vw?lGHnP#TZ$w6+wfPl@%z=E9L2hMf~MkZX=_pa;|yu8xNd+DFE%h zs9z`SLyawy7Tx!j|MUC*`KK%sC4{E$N&(++cqMIjAmK;*W{@`PH$Lj34isbI;P^9>GP! z{B!I1w(({XzqyXU>OU!;GaYQrDFgG(k?LwkJ3fL^t*NhXT}{_H|6sXXwhF96u?n+CaZ!Kjmr_Fi9G;tBwE9w=P z$>fu&3P-%yE-PdH-Sa45$ zaC*L@>L|EyMrEV$1&Fn&HbQ%f&cZA1-v;xZEl!W*jAvmId7z57L64@%6z+H_$^0uEvaO#ho)Q;9OueE2Vwl;;ST5aX++dqM&;Ql~+Ko0=Zx# z#28zSs|xq6Xyv<~+wq`#2?LEg6`;}ek4k^XFPKCi{14vE4D*dYqP1+F3_Da-6yv7r?KBnzfef;mudVShO0;@ zx9V+sVt%0X%$ON zvssjf;TAoqDM|Da?K-fQ`I<&E9laXUkSwJX{mq$ zN7!P4LP-Ir5frM{U6ap6Z_wWVkGv+YmDA6lZmkaf3q=g=Cb`DDe z7Eu+@0V6~RKrE>7rImY;lNMW9>toxK3q2l9)0wRl$l5*(T9T#e>8HD)fcDaFp@D~paNQ8C#L@t!1gckno1FeqeuquSl>=V6iH7RrRP;@Xa+!wc-K znpw=TpAi;8Uef)?5!~W2kM2ErQNQF_;`NboW#CzN8>k*vBx!oiT3K`N1e41OWDd+xR-(>y!JqbwGbqIl?l3sHu97u$} zi{t~~Q@KB@$vx>vh}-BO%w^Wei4u4NpKODGBZZD9c}FBQ3&w0a(*du0byO)kUe@j= zDb#Gm&o*D4i1EW?t2sL23YqLj-T$z#AwKJsD}BtQf1xiD`-075&7IJ|ed>z@(1$z; z&MV-O1A#Hjmt@y}HmIJ;&6dSY>YSRY!tOj$4kpUGEKk{n?MhdFe~sgIz77u#DEbWF z&vG2HPyY^PJl!oQSBNqMC{LHO(g@OKTiAX2QG#I*brUDzPN&>8y3&#Hwowu7wv-Ks zpk=PDleazQ`oD#m&I!D?>GeK2_H+5w;+!bt2qVr|>F}ekZObAxo7-7>tX0Cb8x z=k@n>s$ZZaBVC9jryEw-AN{Owx2vRb&b$j|WHVSWQ--%=-8_QyyhW3*wr}3h7&muF3L3wO-CK~ z)pqguCvqWH_+vzEh2o^w8`nhc9zL6b_kZ3!>R)&(#PX+e)arP-0h`*P_6_d6F1SE? z>ptyZcdB?o-OsAV8?Qr!5w<&09M*-Gy8b!uso8e;?|i9GAO1pevE7#QPI;; zCaPGG=>z?xq=?{5Ei4g4>XpXaf`$7+AkM#9Vhoj`hAW2?B8A4gk|&0+(4;_Bwk<1Q}-WWB+yhLpUP$64uF(9F)McGrPNKZH#fh04hph=mEuwb z)WMbgw{jXpD&qW6k z-UYWA*s!rGc*cEFJ_aLYrj)e%_aFZIb0K{KZj-=odc^)8^Y4EL<^Pun!4i^py%fmS zgHH(BV_0LsR;mbAdlqPa)@DG^$isjCG!w(c)8jlqn<1@{jKEo>N4^tK0wZo{-*_+e zm8$K-{aC=!*5o#>`;%Qg1xD7Y<#Lz4`BP41P@j)A+yz_9Dvrlu z!u#VNGm9t*>)iz3^o951qgS(wr89&dsU|vm82&XkrNpQnxMB;GA6$yqmmTkZWGm+e z3fQk>{i^Wcx55!uz#1(?Sin{hKl8xp-m)Vqn2x}X_1_Pc@`RA?f@~m4o^phR8J zL6>u7xG3gnKJ4vH>NZBuf`I{EZF@g!C_$oFM{avsV^ngZld%V8jA5?RGVtOX)+k@U#(Z=4Xb^F=PN0GAL4WE)e?i<<9!VEg(hJNW% z5S%B~jr^?LminJY-rrvXF!YUtT=Qn7X`gKRU{~n-i1n8umSB*=NZ9T1e5>4G%aHy} ztDaUcv4NK?-%;CsnALux=RrUcbEM}7VvHvX|TSQn8B2|4SdPigoz3pf0NmMuK zw{RWj8Tjf^mgWo+2ztblguRWA_3LHW)b_N&RyOl}v=}6>DHe(@D}ynb+xYmJo9TF^ zc))iib}>H4dp8NRU#b+8Am__Gz=q0)r!IB5Gv_7>;*jnFMk+vR%N0h-u3OCi$lGeo z@QM-HRqfwe!)ldiXx4j2%T}J$KW(7H#orRSCg5)5OV@T*50U9spf#lH%CL8#LxqLZ zXyg#co3#guzZgCphDl3=?WErO8xW2efnaDg0m)x$B4l$^6s2R07m`^%kIw6YYOq3Bfxp$Y#Hm(fYoBY*gIXdQOhmG>Cg z$Ni@fLLV~8U#Rcyw5^)-KwHlL;3JGu@$O|0|0i5h^&q>A`lp2NY`UFp<9G4Nf+m04 z%kEx=TG?t4=69FlswTY^$wJo?7{t?JWkas+!@ADA#abd$E=oV|EH8rBb=D{YMf=(jJnq=hf7ysTuVcaS5ihsinlNNC7ESVNb z%Ld9u7wM%q^y93fWC?ez{;@c=v2VqOr7ac@MrFYY@4B5L8KCB{1$SJZ7?0u9G0xN4 z^#DkGp}_?3t?3Li$*Eqb;pZFWO@x%#%?Yix60~c7Wmbk2I3)G@1OIsK2nO+05#t}R z?2SJqQih)GvNKCW0b8qgf@ICVTgkv@f!0@oqiOrJFQb=b47P1#4W5Yz!sbfse`GaH z@Szi@0h@hQJwb0QLlr1U)4|;x9CGdny)`v-?F6P#aI0{GKC+l|U zot#GVf+MA7aQK*#x!9qC`o7=sEtyv)*K3gJ)>jPpacW}aU63WodQXti<_pSk-4CMA+r8_Q^>q6`E z)yC1eE%u(*t9B|{sV;XI-mJju{wf&G>wu@nC-o^`9$e6NuB;4n z-qy>~8~44l4C_v5v^y>F9>_4 z`Z`cmh|1_3XHQ#EH`&`&xGXf z|7^721qpMRDVH6FROXq{HB+=40S4Dmo9XfUB~wn}N$!U4%7(loz}}#H!)?gMv#rSJ zf}z!0ZL(U~kp8mAqO28_&;f6qqUH_{-;*Ph%kh|Ssk@tRI=s`vgKDWbQ=S5Ot{k$S z1-o3@f9J+*rAVJ^0DOs!Q*%qZ@M+4JyY6CF>u+wC(twC|FdqU;hvQ7Yy;lG$`j{od zgBJ?Jg`-SlHx6$P_)|o9wG3mdkd)O7fgSO8U`tDM0S%&r-CuU1sd#po%3m| z=$hT1AfXB7YSq)BQdn-s%2&|xJ%*Lc;@2C;@g0n)TXcVRr{b^lmaW0q%SbiSb?A^Z z*avRs@>BY4e32-1p|eLz{K={WgDs@_sVK{v+<<>q@<@K*uhO5R%mWwL6Pt%?(#ld4 zowrZ9i57#grnHIB588hagC-yDFAz+6+~77eTyq#Q2Da_DPdASgdVMK;5popD9>P&5 ziy-cL)au7W=ASkLk7Re2XYwpcE_)=}6{cD!6)5Af(L4RKLeY-wpHoOmjPjFS=4UZ< zeJF7nUl3A=gn}XN_CxtLN7sPMo+6;eN+9GqH(tJwsa2!(_M(u_bjCMc>t4!`qL*&- zDm0l~4A<=gt$DuO`Uq2_RQMtiH7ASX*XBX5e7VQFQbyZ#!>QrLrs;=rR<&f=*S$-# zd!=SBOInKq;NQAnqvHTn!b`5gAHx+=4%o*0gE4ab%RzPwvxDe~nT))!lx1A&X!7|}-(zk4iS#h3Q?GHKr!7m$|I zGbdy9*@8Qy+$!SdOH{1!o69mmRhdGyD)KLYPsf`6t6sszA?t`wdK>#~(+{WBJOBo! zK=RQ(Fq+&j2ze#!H)qX^M^k9f_2#%y-JKv5`6G$1CtfrB$9#&2yFORBH>!KwMQ&Xt z_qG!=5f>d`aX~JMYw)Eo+W>gdV`SipDmC5rRt2lKH>@ev*#)Ia$bYwN3aO=AhTBAU zzrjwPwnCLlGv4kN?X*4p2=s38WTra#+IlYYZEKBfE8Y`G)J&QCHtoK{>Y@T97e^%y zjQpA`o-qrUaivw;#4B|(gE*&;4of5#CY@&*k8PfOnz4V@iXTNnhYO6a&htmp-}m^D zur*e$F6U9H%U2&i8(d_!_-Ufux-&RpncTwbw0tBg*!cnY2R0Fnl;U=dWjO~c$>{uOXZ09=q_|LKvb@y4* zj671(t*{(FpKpMp(95T%(N{K4v3OK=oyT~vtJD^ks?hDVI}1<{SaIXNcF&ddc*7c( z4iLszlp1{dHX*p|g>F9AMWVp*k9EWVr9eg8MJXG1`Kt$Ga^Mc2W^s&gLUpYT<~_cm zMm<0UW+T*jIOrUK4ypNYY9vtYi|6e)Uh&V*b&&pPsY-{01|*3XrFtKD3A?gkC-20w zdvez_J`_#NZQ5QTl})&-Co{2jl5~y7nCp#BrrhrMBnYXDTfpzc?>F*Xx-TJeV%=Z; zaWs`fQq?tZanylx0lT{~-3-`BAcn_$3V(s6ez?xjOMP^448SgbeN8nGS)EF!_7CZ_t*qDepsM0}xGB|oG!@tzm z{dI#b1qjYeoHPKgn3)ZzFAk+;Kd`avW|Q$clX6@C;MJKXyp&_e*UqD~7<~dx)_OI| zJYB(+kK`mc(eoXNoI$B@htgcsU=no7tLdxcEC{jW_3C&6_0rkSC&;gydVk$9HVEk! z^Zt5=?bjX((8~Bixw5h|b)==d9#?-7$bI{rf$A#Ad{$Vg#383KqX>^g6e#8sE|5^v zZnsP`%N@*necHaD#S|dnwNQU~c7GxDl+V?!R~U5Eo||Umt_GFfF;*ALSy=iujvb{h zS+5h-z)K;g42)NXaS8)$;aQ)6=eh>Y^+(l=42zQ9@LH^X63_+EdUN|I$pwhZt$Q0U zz$FXVLtbC)%wo({$oE;R?dUA~m;f=jVv|#0kt_)U8wNjVssa`c2+@Wl2u<8#LV92* zNB8KC3C%mv*pH{%I*h@egz3Y;_^e)%7T5q3va}L>FXT&UdB@#$MLu& zq+n6QlmAN~_U-;MCy=>!GOI!VJi!`9zI^J&t<7J}@_m=96^_c^wo62yG*X%&Yyh}N-3qQ0 z^~FT=pI@(Ahgo>W>yw*yR#aY%Gwv+(9Hcl|e5hBqr!J1eKsW?Sb61#C<`zq*woT#P z-DD<*ldds5CdMO`7)M9#nw26;{fs-+gds%PXwHxAM!Jo7r@ zJ43Bc4s*lv7L0`{$Yc!I-v#n-m+uSOz`X3B09@H-@o}vz*!pg;t}rb_l&1SitbXg2%C+>sN_B&fzkW=RM#8DI^3TgD%SWZ2uG- zeYyoQ&5%qD^u1zzD>OoA3R)l`1=WiKvd(L@kK&!N@3fxK;t&dtoN7FZ7O=fhn!n5X z{<7$@To@D?m+iL2@sv>*sJp`9O*2sJ21)FFtHu(;28*rdqqT6{p^LL zYU=Xl3r7>nHM#oy5gS2C+>h8bwRw=Jte}bEFOzPb->OO-)h|CfFmKVoiPf2SOxWy( zCvX|fm$gCIo)y0LaI;=0x-r;TZy8P*`l8HJJ)!VOBVny!7BM;Boj@w-yYgzWM+`41 z%6;}c6pKNXC) z6p&2*;f;(F7%f734wvQfntd@*m3rAO71kpw5}Lapr4 zv8lwyZWv%h1qp`GS>k!!emdxT`gm&KgY@=5&XHhPEK@BIUPW}-abS*CWa?M>f3RoAXDge=E; zgo(jhA`QktUOLD6qavQ@cHS(jAIX^RZ*^S{{14w87D+!RJMiw}eX}x@k0Fyqffxv~ zCp^Y=Evml)y6sqRy?S-EeUqwH;2Aw{wWFeeF(ujnyWBV&JY-yHIZ_T27<i#yZ~k z$*rAHAR6?eIB~?|*rCatGiX`>sa$3Hc4~X%SJLbb%EZF2 znCP=`8pl2kA1q?++Ss_AM~>FESw>P)5>vd`M}8y=IK& zXA^eEp~UimynXHA@+7JQe&S;wB2KTFP`1QNxe53XgRu9L4oQut zwEVt5yNeLtcWV4=E{}a`3c%&eY1=$0wp72$79cuw#QKjmffOaFwUL<#;&HC2+VUn= z9H6=jn1bl}0VezUT7-FKo@Sxm*X{&j%W}9>G1~=U%vxR2^TUMg!CgKZqZvIm%EBh? zt~bNl1LmT(&kSA{qRY&?xgL^Sjw4@D5!|h#VQcm*aLZXPV9f5NYn)4X^q_5jN$v)aRh4 zpJwwb%ki7|i~VgL<=IY6v)RO4(WKQyxvg*1CLzNaw7WyPJ_|oNdW%mEcO0NrRMz#l z2_L&74xAB)(|ujxQx)ObJW@N; z^Br7ltiz+RKg64)rgOz;F5%JSs0*#POGe_@8sy=-OBsm5iW(HTYg+5kCc|TyW~e@o z%KGg0>?J{K(#!4x=kF%RelSTmvb?aGtrQ=3N|IiNj@ylU-^tjmE;2^iSPi%@x#mI+ zyh_QBffDL*#kHW}+F|V>^Y9f9YoUAfnQDJmBLz-f>%B^v$ZN6H-n~AKJTb9)Xj`W0 zn*{5i4J6|c5W5c{|{1sJwK2=E*IluzBQ1))??oD6mug(*KC4##artuO zL7AU_f7sD%m%o?c-hnKptL|qQ-P1yS3!fB_*&Uoe7=m}HRR{2dn~^fI5ytG}A?!4j zUSH|C>|om~v5c@nR|s95ssn2PuKIc;f&^il-?%4Zg*=EP@zS9>(6$RLMk&fw6hG2q zB)Hh3Cq*(dAidrJE4C{S^JyGVx9mJZxuj@VpM#?Qg&*}$j0O8m|AiFK+D3E66(b+=I$LFc9UOU;J9=B8psf+~ zt_WA=@84*k361gvbKK~-hf#*n-1<>xr9 zP!Ux=Uj)u!P|$VW4u0-wo+%NWYj#j=*wzwqTX=fK(NNmjNZaRXD+0QO0*JOz$n);4 zq{KS6_Q;HErYieM2i`EMQ9{lI_anW!7n;uAUu=5o6r#WORZ5q`XZmy0)1b;;*5{6c z82#UCQw->#ykq^0zlFtLLqNayj~|eGl))x@xjb`kHZ7m8$qcj&hYvCYQk$+iP@M1j(CKVNTOdabpjudI4an`-iu_jQM z(d}8jK>K1CxnLl8*->FA}6?K_yYn(^~?bQzqsqj_rUv#0v44)TNYnrMnca{c1u~R9}l@u1; z^#_ZW_$)`Vm?01I?6a2o@)e))Dyagt=FD+uroABXne%udy)in?tb{P{E&PF z&XQMC1eRFEPALGgG+Ub5G8vHEE!dC}?)za$uP`y1L(~1bOIO;Pd_3LXXuwC{ZQ%v+ zsn`D4T0@`9D-z-KqS6!VxCo=hBIL6sf~}>JrW|5d*{?$^13r4?UrBs__OOXUITY*t zQM7~3P%{5L&58x5ZA(>)q|(ql@>>sn5-+)L$h!{~SkZqe0a@g{c0a8=?uQG7G4QDw zzc|)g$uyGz(r^uL>sD^>>lgL->3tAfEWmk@81nZYoJ>y=SoO_M6mwXPNscbi9k9B5Za z%16L!ODQU&?N&KZm$Xq%lQ7Cs^w#ki`x)Ke=0*;G&fA-IZ%(1&7;&&j`mPx6ab@5< zyPN1;N!>m-&U{n#_dE3hod4|nO5c6P{5`~?jh*>e;7fANwyL&sa3RU9wCO(tE*2u* z&J55F7MoFp`Rne*wthpnWl`MwgnEX)0S_EMK_P;~`qu92AzVUKZsJZ6y+{6fW&G%^ zq{2EsJVl;Pu}8&L45RN}X}z%#!nE|T;@+KS;}s*!F%L9N_p$KJzG3%rQs%~6kfRB_ zMs4GfJ|hcpolEqn-;5300g_iI!#zct$le;Zs!wS*n?gTX%9S#iZfu#3JD51Ttpk zzl{N5huQghW4_7#^(bQO>t0U22M}ZH)IT7*F3(a|+JW+5HZ8l=l%YqLKiT z2D&(u%5(Bzn2Mk^w>G;q0cq^g5yIwx={T06b~{%Ge4=?3v4m(&dj9nF!eys=$CV;{#|J&53nc*X+=_q5-!b znV$+ZV_}-?BMTzLkwrRukv*y6wj@-8)HXxV#UvADUT+)P zfP=U7M`uqpX$yvj&tb*V0UT|Zw9nUHC{SHdTrzqF>71UZxFp|2JA}zf^FJ6l9uzH3 zf{bT;Yvz6aODLLn0PnWM+ zW!X3n(1?~C!?(s%#(XH*!WqJQ9%F>%s}EdLqW8Q7-I8yd^jLXZmTC1gOa20)i6U#0 z2Sgt%yWtk(Badf}`Oz~}mQ!Ef*sYOT->)w=Hu15&K6?CZhoK>Ljb$2I*9@QkK|RTv zI#DO@JAa#!o>2e>SaWHli%i7m>q{vUj-y4Ah5CX3f2=~UT6HZCO%+?x_uRX{cUZAV zjc=f>TOG+S-dWqNR7n(T8ooM!tcYhUFeg#}X;#bSC*=OFel$-Y!8LI=?52clj;~PH z1bv}xhcRFbpoU-f|CmWIUcI$M;WU^sKt(`5xDHsS@eO|7ZOoDU3E^y<1}o3TJxxeO z&rL_EON7_z)}=M#j?dAx*+U61j-Eb`Cwz~diprE(QZDoacxLUsON5&E34dL)l^?)Z zckX_1(Bw;>X(7$DXz#ah5k4%l#+D~RsabL%NA5LUw@^nnMP8)ucEN?J2J;PCFTF4M zO7TZu=|fTcWp5z0>^2oT%44UY6LJu=c=En&HF2`N$SB~wN2C4`o)+ce?di7|6^z`R zR5|VzNFn)qcZYI};EF&B^Q%4p-rU>uO}qbk*s6h}W12b0VqeiR9Qt}o@p5DP6$oO6oQ*4gt!6mBgjXG1&4EHP)`wTCM-S?Y}yjacAEa05onBQ z*j*``>(7*D9NBN>wi*sNdb~c>u-{l^KVF=hX5)BaqWfI9rcTiX18di^Qup-t9_nso z=NI~MlkBu^C(U-F8dQIxo*nxfc`I+twqtl{S^U@bb+W8_9JD3}dGigbVDwqjDH2Dr zuLr^DuH=H1HF0HCptaFv&; z`rpYU%`!!M?ihXDb=+OGXc3W+cVr9aXuJ~hpp+)AmoP>3oIV_e1#slcbt2xR%_`sP zk$0HUxYi&6a4>DW7Hmt-L9eLO=rCMYc;Z&>{-Aj297&R1N>mpdZKzo#Uo`+{s^IpV zZ7ZZn?j2#HzgD_)lnp!q>bA_0t@h^v7Vk~Q^EpohrTy;(fo{-E0wIFV+c7^|l6E<5 z%0F5W^lIw8h4}C51`j*+uP9iba%v&n_|tEY{<8$MD-0qJzz$tWfvB?3c@_2E=>HO3nV0|t zmSpz%fAn7`SASMHHZD^C+iv64VU`QS@Ipn{!Nh$~pd+<;D0vzxq!)Dw6_H4B?XhDRFv=IS^1<@z$yZ z#Q*%8zj(Jy8bocu6obs2{(lF{|30_H#LHIC61YsUgNJrB zD^)^s*8QfR-tYgr2q3!qe=GDNT3JX-FuK$OyT&KA$>rQA5R z^)-)C_md<+=r#LeA>+uORaLbO3>X16@Iby^{Ojce>fH5I(;yDj*?<^*KaKSHqkmMan&Od{7? z0Cl51SUu>&xy^^0MvszVD}D9(S!yYF)jIF-5nLS84_tFRQ9r03H2}6JTr=O*fm;d9 z?V!k8(eKDt+Hu=fO7AW$VTcWp9;$%;&XVx8*%3or3IxIz?*;+_P22ZyI0n@h5TUg1 zVxhux@F?-Vy-U`!op??ij8*R(XF@%;Jy|$5?7-zs-7&h;n5P*$H%c)A`G{MHG;si# z#)1M9c+em$Ru_4)yvo@~-#Gzm0sKhLg5E^Mp6?Csa^rbv;J|cUA*RH!6?wWuMHA(y z!JogD0C8c_QBjltM|^Ml?v`*_r#S9fWlydu&YlUq%SO5*b-}3E-Ak_)_kuleBDxBE z3!HRup^Ldt|EHdQg}0%g-A`*qb}vcLBuHiZ_I`qMC|@VOJ+?6xfMm)=VnmLWBF3j6 z=`XGldvM4$TKG=xj42#CIcm_#*LF|5=O5>XS?mj#&F?eA=p;|RBs%4V-Xt{k+9lW9 zcql8Q0r(=>p2bz!7NJ3N+0qIx8V7vdXWl&k6JM5ANPTcRfw;`t;lnw6t^0H+#rd@imsgThHcy2m_DtqAJi8 z)-(=3e8TtPo!?gJVdbjT{&r+n#`r?To8W=1`F8tBgN1e&B;R*)|K3QQGXg|VYTng; z@uge4Tu$H=fhe;WSf7`{a*C#v*B$SC@AdO%V5STv&?~pRpC)=m;A2mkc!b1T^x*`N8flWKeJI}ZQ`!a1#xY4{{Yq=g6XIP*P07bQd{UBW zr;_ZK?18U?C=^@OQY=6{9|K@w9U(9A_1>Oz>ePT?#D`S;;>lk4icb4GcTRgYv$e6B z)fMkley{!qcwIjFU00>oDr&YvWi>yNj|*4F8k%6tv|`pTLA+(3*9dI8*P?>XH?ber znH6GYfgj%GMU7=48wdT0_ICnddIRn&HBqTTOZ!3CyUvc@6xj<}u9m8ZQIW$~X|3ku zd;ko5kt9@072|jvbg7)q6*ul>7kO_X>7kGNa`?U;Urrk!DXfZ39ICc@i05$j_uM|R zQ;uar7!|`7Z|-acVMP>*r!7^|xSr-~R~9b`si(a~&pat!+1Y+1`Pxl16DB+85^|8J zz1$Gfe-I7BqBRzdmO&Vq!Eiy*?lzdjSLHy#@%6zrH+cPCzw~HN;sX)4L!@G&<-%@?{QK~r4beC#I=GdZsyzy-G)CXKbyr6d4RICr)^ zR(|5e(bIkNHhB;6kcU^1ull`Xu9*@Hszn_HIC_+JYQIRYTSf2YnhUVA7dLFZ3KLqN zt^isbg=1e&z7^(?$LC4!Ja3j)06e5Dlg5er#2J8*czd!34pmR( zzhJZZ%LF6gE8<%c$2abdc*{y&zV5d!{%AI|=bd5`!Twx-wiAa*L%}6RL4^)j%_LzN zi6U)zxOa?hS8`oAovYbsy+Bwcm5LP87eeg1Boh$%RQU*4Y!Swu9~?QRXH`!%6tthX zQ{J`EKMyg$tbll7fq>9`R>0cC*7zGQF1*{0|H_q_MtTt6a>@IXDvukn-(ldAahi$$ zu~*1!drGH&rPz4hYrho7|I9-mR_*`<)Kz6P-$Mh?Y{Xb;0D3IOm7LqQckcXl;|YE} z;GRYI4Rkt!`2DWoSAV%gV@7mF>Vlj1=X&2m&46|*iDG}fx+g%A#0g0fx=v0Z+9lkR zr@MLHKuEjun$dj=X(bpJx0zhP+8?w_HIWXjkLlAYNQnZD_Y;89PhSG>_DNjFby&#h z3m$8Dm!Ini41!nv{KTu5@THtAnT_c7Hn3c~YRptmN?BMrh8osC?d2m}itZKJ5y#(AlP=cI3qm}f${$FL=Jw1(m$a92RDjpqi z4cgL^v#qGsBD?AW4oj8aC-tbR{_NWp$%Sr3q-KhvYqNK}a*@`oQRX=j{wX2?b7rnZ zat}|JcA!funW&>9xcGw7iJ%K%Gwf9V`TXPhFSXvgpMQK19#uodUZVe!t3HX#vdC}E z>YBl1kB-*c4fnzw>ueTEJ!`uZ-wliVlqf;+Q0XCJK==&IL=mG zHWD{6e$rJ1z=rC3YM#414ZS18xp$v@W^-Q=f^A*@+(ALL;lI)JK4WBHO;x?kd)Hs5 z!eGQIZSo?vwkI=k_p5F1)N{dnq+Mcv|Cr$h6zMJCBF;~K$F}CBBCxqRAcuF%U_{!2 zE)b7|wjJy)|FlSU^zP3YHOzBSt!Y#t8Yyv(?XpbT+r0@L&Oj_mXcy@lfPEWKfUG@D z>?dxDtT(9>66i^-T#>+i&1bvl`h7Uqe>O*g;<8UFQ;(%r3Pm9a99#~7}@AxXhx$_qk z!r_&1?4y#9A)7&jG&{M7EzTFGU1)P1ifehSRjz%3!>BUm@Caud%aJI3_vvSAtATSB zsR>61D=r*QYhMlKp%jt?9PN7yQoU+3Q{-Rk>brUzA2P1iv_DptWDifOC~4Y?B$i7K zt!ZSByduT)oM^`~o~`ad{Ueb`WrBEvQ)aJyaD_d zbdj%wJoZN@(5(A#=F1px_Zq+7bBLsXCk>F#bpL6Gk5?(PTk&VZFe-sqOn@||D%@Nk!JZr#V(^S3j=w$CSM^A;tcJpC*uUp&=}^mghF*I z#s=&W4E|<&*u()dmnyfhJNxDYBM%0zH!TV^L4(t4`9Gqy6z0w<=@A8%hHTgm#8 zMA~;joY*=fOBxY==tuHog|V-mg>mp}qmdumSzHxCC;jziVR|;4(z3JV8_4O-Tt=`O zlk%BThVD+<2Kvi*umZ%%*raWI&{j7?1-YTrv&qRLfFgL-S6-t;RIAXpd1|h-HC<&o zJ~URR$hNj8We&TcIJ)YhE|SoH$BD-O5V+iL=FX3bnz+BL2W$b>FUdTGzLgy_^GV0@ zu?7UC^6`m2*t*HI%?5ktsV8D6f^+$X!5s~TvC(LX_}(vV->$eI=0zi zy2_b4n{l1#6kBF_$FZ1orNKe5LBJ+BTy&KUG?*~gvJS4O>eLRrJSj+k+PiTcy>;CU zNGYS?!$8u3*-3<~L|}{1OQ<`o*w*D;o|U>m5pd2A&{e|Zj4?Y#S)$Wekt%pbE<{wK z24lvNa}8YE2zajEgsJf*^a_l_6WpDl#~-$~wx&bcq_@jXw%DC)hLVHb%uaU3=fWAO z^*enAlgr1F?Z1d8VvWX`YKyvS!On1G+#MEUN ztXHW=zxpdg$gU=V#8BE0A6p1c)M++l=K@aurNVo8YnRaWl?| zyh=Xl7_>92liFWUR`4wTR^;hxHiuSI#Jg2lfG$~$uOhs|^(>;80w4Fy7}xx+nsCBn zrUI@^HQ^I#>rAObg>iPN@k>1gIr`>uLwg#1ew2c`{Iu#Kjk;FU4_f-wH?%o8*{y~$ z;{N0Tgrzf^wzYORrbe|h#wulWpJz_Rxtk2hk3)ECqh^%Aj)_U*v7Q zD&4M*fTZ0RsH8$N+h>c{|w7ea!($8 zm$91qDdZyHiuVXa?adNAz}&KIAQ&ldo%gglwJxws`WZ6XV(om-RNIhEI99zP8DIA54Nf^DHmw$ILr$zNYfbXImc_05)E zee!v|dfmh0uBhZ@?~IW(Gh|oi z&^Pp}T5Ke{O|qE>zCaS|(fM)xxq7{Q_GMU3nwOd|4VPNvO>OUN$hfZUWxf*orqEQx z&!eg0g(L{f<1{@LBiiyv+PLrPnwuh@BWYqXgnaBy)yg}Re&4oa~h>P5NG=grs$Jj>&I+bG|ll3*b^}q+*9Z>mGU>}+^E0D>@ z;O)y`B?ZC(fZJ_N$9Lb?&k5WhZgz$RV?k1C2Ket&wc4EQ*m&%RGS?nE(S?9ImLbm{ zCkR!EqR@lRq)O_`DZP3>Tk_!P*6APCwHfwqm0?|++j>!Ft5eA>Nzp5Wl}V<`Rt8h2 z_?6|#!#d(CJw+W8PhWBVifNRM6IBuSrFvM}etbE6XpCz!%*YXsw>w);ctqsU>`p)5 zH&Wsp zoMZxeUg^Q(>U&0XdW{vv!ya~9Y&#}9!aH=6C2g3g5P|nu{lz3TT;^FYhC6IU5WkbH z-ywC<3@TBsqxl+JbgNxqk~S<3J7&2sRtbeu%l?@p@9cLbc_wr9`eSJ^$)!qHL=n&~ z2lZ_Ert>TMtcIT)0MNat3V9)BJ>!op&KN?^sgLsyM?R`D$5vzsLN9I8fqqz}S#IEq zBDnYto1?BA?4lMt6uK=G(ltqQT*IrR3%qgvWWdnd!_`n1=b!hjbiY$%czHp=j)5TI zu1unZHW@|*-$bdY+-E$JR>jn!(y8xKuejhVWNQsp*#UHsVhoB6h&?FkIdY)z&2Md}0A<-!x2zm1n6`kWF?_Rf$NBp^y^3OB0! zRCs{B-W2yuu1Zr0K4pz+4O3;I8#p=lUb)dU%x&l^rg=TxAYno^6=LYG7oy zS~hT8lHT*0oi)QedUdxr@2{FqPHi!s(f&3LN5xNKWz7u|o8#rtJuenW1xPBLG*sWs zoDF?B=r?I_eAPYT$XY@%ykN$!F9yg0ZrWB*vAYlFDU4IL+~{~f&o?2)1_J{xyjwdm zIyY4@Qbc*U+P7xe+~7SSwqulw!{7g_GjaBPU9=JT;6j@yG0OIu;cWJZjna;KZV$Q5 zh!s&vW?X&|>>Q(M6ZJ@~Yl#3t-NEJ3K%HRjq?mq>NK*zXe!!^7$TzXP)Z@^->^Y^U&qOXD^TE znjUVbaT4)fl9_p>=BNWo32O&7z1M$A2>wfW+9L?WYp;+(fB#*|3CRJA2z>|gHRoS$ z`*RY87qHaqkccV#9nTHXypjihxjuI0A8HQwz2{sEd?1KO3FU8FsSgrkiE7b)e}3KEV4$hxN}F|CF_Q0GkN1e9m@S|LutXcEtY}(SJMQ|5qJB^nI;MO5~5k@4x+; zZ^HN$p5qZt15vhGc}>4DvT|+C_QhVL84@dw7f>nf8|O$|3*|0s?|t^-lkSd)f~x&(EAf&AqS6zl+E9 z)q_N?nBR10?nKiBKGo|WyKLaEE0zZ#vbVQ)2=b0-r}Ocj@%q;9`Nleyu;Ojb9U) z6ghuJ%ltlo!WXsqAU?N9p#0Xo(t}NEyJ-^2td9do;q8mdif@swv%te|-@DEJ3sc+| zH6p`d9jlei=QS@02)3VX^MPGtzv$su(X9-qZV=+IHF7Vvow1fB$$6KSmo5=OHfeki zlPs_s94sduPD#q^UncbgRqRh zGgk)zvcBLv#iClk(`n-fk^!X&Yk-0A@GOx}x8t}Acn^Gqjt+Nw)lbsk*B@~W&*hl! z7^Bi9-F-lE^CJja5pmg@L_o?if3^E#Yb&#;kBp>?Q#Z_Bh+#olG{8yVS&?lqfN%rg z_H1I4PG77LsN;F(rqM9%Lhh<>uR0Jw;FMiMDiQxlZy=r+9EX0u5AS~0Us>*2VmhfS zA^}ll3V$q=;0#G0u|)3Y8FoABr&$QhLHJW-cACNCrs4iY zlm-Gws+INK>{fWL|G;@HmLqQp;$D%3wt;wOzNFHz%CYRXy{vsvXjt?FG)*_0QnL=) z#`$?XZrAiUZ25jHCg&;7sK;o=F0^B{MzcFY`=7jqq<76n>s=_0j2GQ1MBbi$eR-uH zg(93K9Vhe%E1%?JZvE#k!&EoFYiF<(>Q;LA!p7C73@Dne%+zxfcHDuSyy%t7ROQ8L z^*8ZGmya{pOC@OV*%&);!V3RHhg2o;ul6dfq`akFF08YP!`wVB#5Wi!El6-%J*K+Q zYB8~1u=-&1+f7WF=g`|YQ6eI@C(V>o;(Wy-hD$#-U%jF?J{v1EN@GWl$wa&$%U_!Tb%%YRh;9vEQ<~_YJ zYNWQgz4BQy=GJBN)IipwF<= zUpO@auZ7u6Rkv=Bo9PslhxpLnkY)p@nn;u)#SA5*4RnAd)cE%kq4ers?Bjn zQFKLTEDa62ewA5}vKcCDI`v>cHU}98SuE4FsS<5}xPjWVQ>+s{q$w>=(NtL;KjFqE$@e!oI9LH%y{6@nJ zN7R|tJTzhmtOufrp!kL34(N5wCED)Ydrh(ookgK2{1g(;LfDx;Nfa=q{jH>-NPy51GxnhKtC^-mr?KKAWj@hVJFLhb6hiuRUTBiH!kR zJBz7DG_0PhedF}$$E{t4leVty=8{s8J)iYMp^oQ+0?1T}KXqjEi`CZJT3e-}TGB#z z@qq4=*%}IK(a;_AAQ~R99BP&&G$rwoD5EP!DOH(O0(fY4kS@H?+F?r4+RPMrd2r&q4r;QdjPaeBTw&lo}~Pz|8e?yO{De|9;6ht}_sCdy~h zt@b+{k-%Y6X0k*(g+`tGS8bM5%#f7(+ugdoclxJdd=)0&8xv_&-o-GjC|%Xrw1%re z%Jjdo7#)XDwI7CbMfYz`VyihUwA$<5-q-@o%kVlsZ=4=X3G1J*KYM_!8H3PpXg4TN zjCx8Y*>h?dC#~s_vBC7QZA{PBU7zP*<9yVgd}Lo;sc{=yB~PlZtkU$XoRp2VyWH>r zmGRhirKD>l4P;wHHIy`ExLTZ=>chIaWBN(hskekzkD-*@qpZu;ZbGpm9-_?3r8 zoX1$=cxD6TXQQ;H%MVT`+n-_4F+e4A|GV9qtZHtvet((RxX+j!LE#^%qr{(MhMSF6 zXSm`)X?k=do^q^s2?{=y)U$33?{o>QFu16G$qLvg$&nKKOp*|i04BjO>S*;PO(s;6 z6Bg+_%7cB4-W_`4!^20^QT64YTmZvT`e%0M`vT%g3#gd<(nfH6FSd6I^=3c+Rv zQPx&44Mos6=i!;%TEbZj(W29txH@;E9$X)!44YkGc736o zYxfuR&eVY4GjCo;tE8MI?rDT*R;1jPJu=B}6K9)w7%*IQ*9))V2}ZE_}eX0+fM!0u;FE^-+|A^Y%s<0icdyRu}SL7y>- zU0oF>#c3>*Q;)*X<2ufqGy2xBT`FLAK-#1BTW`Wt-?725ORsGF1PL}>Jku>nSv1tO z`x>p6C`O83ozNKaoOKv?37bB#a%(*K0yH4D*_QE4dcFi3R!7*`^Cu0k@h$l7$N~ee z&N4kW<1*{x1UJ<;it0PVJi~FDUq7tUD6P!!s`c^RlAN+OcsSpDWfx)gpDx1|5)@o6 z!@!`xZK8uJ%{tX3**I*15TQvbGQ+Jw)XeA7oQlV;Enm(iJi_#J$IbVPFV;%mHeP?u zrtWzMHxlbvZgUWnN}&s)V@Px`DAVg}{DChyOnHR$iv^+awR%iXl9(ah`qHw2_1 ze?$t|H4EXV|G}^Vvh*#Qra)ryyJ4i*NCS^(&D!i!yBcxKrc(CyV{w4blUA@5=I0oe zm`R*Aj>LPDT=kMMNo(?$TXNugIbzIgeNYca^pugK?*mvj%6;>GjpH({t+9aNjSWTN ztHNET@y||PjYrl+alL~z-@f5VHw3;BKrOD5^^y3{Bm)qQrUf79%Bzu5z_SW62EWbTr|SPC&v3Ia^iM%Y8mnFw)s z>;yWYd7%^h$DVL_I}f}$tRpdK;Zk9SWfI&NAl;6jxFB1ta+?{`qA^4)WouBLB(`O` za_8BR`i5Dhc;Pr*Omc1{x#gF$D7pmphOoJ^76lZOz3G}kQsw%cZuS1SGXdav!Hgf4 zn7W4$qnISrMXW;8$g$YeW7Ee(xRg^>^b9=Naj`J;iV)Y~&T>%Q zk}NwuBE3-MRdDuJjR6| z&V+F9?u=`=+wuGs=m4?| z%x*GT*94=Jr9~GjJ=luxswDFi3#<78PD-lQDEkAP`aH&-3OP#+1jaCvch=tEPgPZa z8RR?)#K%zjsvIb!qT1iG4eJ6@_)X8xtJdh3dO2k7)DPY*3TGm=?~(f|sRPDRQ%Ri7 z^3zLMtYYIk}H2myXEC2*4+JRLl6AUfCvc+RlbxkQl|dx{QSXc4&R_R9%@u)R^kM zUMbGlka{(*Kv_bC;dgZN>#{g01C+@kCFZVc83LB^b461kF7E5;6V{F$pGNbW>)*Oz zT?XUxM`Hy?()4M9nWFp))djvaU-?;@;K5lq>5&1tQe8qKyV~qbTp;e=Z29urSeA`# zeEYKvWw=S#ay?gRW4zibW<3jnJ|i2nCx!urJAr$ntk$rLKBznP8l&;a!Ztj$OM$-r zC1Uhz*DH7^!x-<`|h%blHHF=rcg{D@J@U{5WS+p0F|BIMyaJbkJAeWM{`O)_Jbo9#3V)mQd4DK=|7prv;Fo9uz6ss!7**2T>0Qu z6t9V2I@-E#Af_t@(UCi@dmnGJHtRrEnQO~lYuJrJU1;u@nyP+v}HZi-bgz!^mrx10tCBfVccIlrb+I>b=%Qehsb z&=FTfto2i^e0!bHwM2I{I`wMJ zx;*2-UkxiP6)Pu;#$`DVci>Y_PT&wvWAL;@O%N)suDS0PsOg6{H&^smAL@z$jHCxj zHm*%e2z-i~^s6a)f3O@(rkPw<)0^O=a62Bxah`r%Zs}&-k*=6+P`5AODnwhfLd6=l zWd@-g(s+-e0S#Oh6TMCRqNgTCRXtT$@_pl?YneG;%)I$;u`*hXo0@#JtAG#r z4%)$;V$8yhsgQC+G&3fczRE&HnOK-ZI`tpfuK5|S*i530jIk*sBRl%jyp{?+F%IkC zo|O!+3f0+el~h(9WF;xEH=NH#M$(Gbj$zLs;#!Q`?a#jr(@LD;9eYZ|`65j(-WV(a zta9Ai9n|Cw?pgTLmfhj{+nQg_rbhw<_q%i};c5E4rdiU! zS486BVGi%&c#{h0Z}*#{V9s>cW|#3A6b~gW$w0OJq9?Z1SK@8PYGhN9foBuUS+Igv zVMt!ymN+@`v8_}mSg5@|}j4h)-ZFAgy>GxyU%*-TN3 z6jYM=O~XuVf5H#=OiF3ui_`Ab zRb{!!@3CnrY5GoS@xUvIh%(mrX?E?6(4_5oY*{-8nbm;=Esb2|g34!%BtPBHTa3<> zmQEb%a)PQ|r}Ug*vTil)_HNqZ&*xJPXj-VS z=rJ0;&45#QFY+G2m2O>QoO01rZ!-^-6uL4qnvh`Vuf4p;Iku~wZ$Ja2^|67hUsqVi zglBjX6Pd?Yff|*w-7VECa^Em^b2n#Zb;+-N3CzFE;=$?yA|LFwN+-n7YJ54GGMs1c z;AVW#@QYz~1_#RzCLt=Ws8~e-pI?C-Ynew;zef48))7`vPd?6EZTDk*)(nh__e`c?xN!ScRywQ6!zNnf6_-nWJ(NDwxV}gUVK|IL&fB z1|M<`mE&g>B;RviEI(nkm=R@DQS$or9n)uW-e#tDuNI-|NG~IX89N+E2F5=3fpF2@o8E-0$R95u&GiJYmA|BGwW0A8s>6-rvAKZo@>#in ziYyr&H{H5csyZgSDd#9cOU0Po=BN^oyd0ONPiQNwF|UN;ei(0o8jWr1!A{yw=^Fjs z)avo=jlYQPS|rfUG|W5A{J#=Ep2 zP;{Wbl2?Q~m2BgM0PWkGCD*reetEj9M%(72$j*Z^A{oQ9)7R`jW3mw*&(Tx6>c1h7 zBOeq)anlbr#BDIWy}gA5=$;n~9pf zLe?P1rf(>5lKrZVCdHz%4w-K30&M2W<{IW8%-cuj)X*~$vMJDXe5jJyXrugnlJ;cg z>>KU~{$abm*Y=?@yYyE4jACwn%~EXd82ePMZkp7EU3?#%UuR(n5(uy(z!uqT&~^3B zT?0MR$yprS7k)V?c$c1CsgTc1YQy4QKCzPGnE7M#A$B~YoO#yzvdlA&6g$e_0Qltt zm?-|uQN#3Xbm(Q(Jl588{7p* z$B4=!4?s%HI^Jt&S0&jtv|_gm;rp$0oy9^pa&(sOhcbw(D>yGzcy791@$PONpO%=# zg?ZwSFo8poR8KpL8lZhUe_7FCH+pf>(b~5<)PgJ|6c*P`jM$J?*f|Bx6=%UGkYM68!OzU>Q2_GVFY^?h3dLFb0RU z6{XM~<9lD|^~G5~qoob+mME|W*2H=VOl$}>dXfmj@`Fw=4 z%zG-US~(cyX<$A(j{J5!A2OrU%e&D>+>4nGYdkK)6f;N|Q%dZU4st8J_}L5-utVXi zNW*-@K=a1^*xBT44Cop#=H`XY)`6)o zrnI(p)OW3@dp_063BE*aa{;IOP~wYSI1W*F{oB}7T@E0%Lp=;`1QXN(~?w>Wqw-e+S~=cL5NLPQ}2Le}CoO{Vv27*FOo8@_izREb5Tp zm-Ya4@YG6G*v>ty+OQuqL4*~iR(~4{z&gGh*eCLrugyKY7hgge+zfKVPuCM1@Zhh7 z{*mpx>f9qx`Dae(PkBoCf@ZKG>$Z1?2-MwfJ6IsE@73P)BmSpcs+{IfDw^)p>4jUh zuE|r_M$ExEOQ;%J$6Mg!1#w>e_@4~>pI&mF(tNx@AA+;v)A?2UFu+4kaBI(@xRSJ` zc4?dap04w_1@QItOlf97jyeV;Bpk()=(282NmaZ(qVCe)7=Hw-5w$r`?a5(>c5(mk zw*S3{&j%i|Xr4jOcy5n&G~vKl*~5mf?kA8L|DDbv`aTh;tcH6O_U}*n$5`JD7zOx% zePllJUrp$L?7<6YQJ_&u{rxKvzz61(N&!vh|339!|Az+hy*$YbfB%ZRY_qF=SM0yu z_NV7@1B&=lk5`&sOFdRuoZROFA`YWQqvl&ZF4|WLm>fj>@`VO`Dm={0#qj*l+VLjon z=lI@;Nq=E0c;M-QC8iyU#(KJx_m*f6LFtzGyTPk;0yUD zSqx2jMYZ`FjX;-?bvXe}5KrySn~EK7j_XwHsYa$sGo%O~rNr;IN4@C#j z<9Qlr7?sk&fB7&!nBrx1vZ-6M)&G)>NIEBw2r8oaS0%Ig%4Zg^gMcEkb`W>#z*cf` z>v<^<&qV^z3rV}xUPC};TmYED6acLfjk0?#6V2{v)QG=odhVB)a7EC*sn#=Ef(lU_UD<3W-B@X!<98i!b~ zkvW#?q?RNK`Ji4N_vK*hyq8h<#=nmYC||`sb66fe6Ih?;y545|)5QD7Dh?mreDN6D zq*Y6}x6__W^dEkVXENqs>>$WH@Fm}sMEqsP@O+hALJ)9au-&N`z+YZO3N$qZD3jqZ z6S?f^kj~=&x>JKFxgx)0(dHY?f8F0nLB5&ptH$5E1V9`y{@-3hl56zJ8N^=y(k_6f zGx(Qn{cl_;cqmt{Y2%uX;VZ{ZXjx5~i^d<%r z4&2)ku@^8DNIVAn6eW!d{`59ji~?IL1yDZbSbm#)pD>(z@3|}Pqfdqm#v&I8tOrSF zTAP?&97eD?b5>qlFWABk-B>)EK)C;P{6vAU%ArekzrKyl5ToOFdi89BNQtv2ySlpw zNc}HZwu88S7-0YJ`SOsjJEhHsr@!rBg= zR>lPUbue!+9FB(+hO_MLi`cVO&SseaM_SREtS=6-FoieM9yocaBOh;EH3GKK->l|~ z!9PQ1rZkp~1 z&J<6at^uqw%2jGaoRg@G_YC;Hd^1&Nihu$B&%ro_{E3FjADyUtn=#TvlW`=S+<)ZP zzIdH8p$jcE6QA-%{P>b-vqQi|vvtRnMtcrfZH0P2FnWBX-4- zl|3Q2%u#J{63JD_p^13?F_>DBuE+0ro=&&@NZ)Z@;Y9)>K+c36u5`y1G2IdJKx$3n zdI5*7-QLAij0ia6lbgrlj$cVZGX|PokU5Q)$hSYLOtb~%Hl$1VILoL<83iNncUB0? z0wh7E29V$mRiOS+efe*zh$kIzPzQq;u6+1Ckfs$&y=O2{Shxy|A`n-O26*p?Y`{`o zZ4i9<-7cu>1`aVpz$^1kC6;RoF!_ovw0_mO`~ex>n^Bi9)`Y=x0LZVBJ8pHBYz@V` zl7Fyud?_=^0ZJBkBp58w+vR}GT4GI~OMK6MHtc&C`BaydR?2XtDc;3WkeVHl2Ow{p z+^}BljcOHn1evc%&}`f|oTO8KM1gKfb`BB_|JM8#;@~%*?82eKAd;+@Tu9X!!fsA5 z^iBht{yUN|z)Q+~dqO}7D7qub(W*k_GpNOe7Il}~Up=}^#FgeZAFCShemb!zveFm%H!rL3!ZNbL!^NB(thLh86`Bamat?eFT>D8lrjdEg&xbcTD~YU&dY?RBb@NFOeE(q})|D zMxgFYb!Cw>78luW?|aj>9{^HsCZ}G9@oVi)S6V=({RcIh$L zg=p2GBMEu}#>3mBhBA+;)bqu23F4Ets_CxHtBRu4$Z=ojgq&Nskr-pS zKJhcE>y2j>CHyktUKeeBx-?Az^OWeGpDcI;$`$7DA&ya}PiSF-#FtvNarIbF9h#9p z6kTMPKuUkxJ}>s|`0O3=IwER7B4TuxiMLx#j2=E({6ga!Fb~M{*+wme2-Z$_PS*~T zTDOJCrPi`WX%efaX_37!=|Dl5Jzv)r97G74#%I_za0$hH{hDNtFE z*aPfTUG&}TtY6{9Jns1+7UEYCiE7Ft{4S+DL`C;}XlTQ%n1*!U7xR3ngV3pkkNO*w zk04mDZ|Y7`r-C|AQKN^nsgRc*fJMjLVje%IdIjL{6>lv~HR|kUDgpwkEf=eIv=JZU z^WyO}^19uOKR)bCa$n!cN_3J>Vm4zv7C6yp^+rBEz{}15h5eXR{@!MRi!PYS#;9{H z4w3L;M7ZeZdrh~?y%38noivu&I`bwv$k6~#9&LzLfXPiV5m4-HYOh{rh??(8cw1{j z-?JpkO&3Lfn+aua6TG~>c>I)Ffu<{V#TN7T$(7TpMbt|m4K)%uRERl!-@x6C=Dvgn z){y$pK0IKuy{Sotb5TCl?UScOd%rt_GHRuDAVd*T-Wg;8n2)3 zC~xer8jshtUQL~^CAr%KV?QN3#13B*zi+_Angcv6AI4s#q0Iz3Pcbe?ahosfo>;z4 z-D9;}6@?{5f95$=)%JWSi03pqkWXvznIqSfihQ}jE1)Xsm#^ON_R6$Bj4P^{{rLK! zzv?6Xu!U`oBc1+j!&1u;y$fk2e)s*BD<^?A$tXJUxJrC!h6}S_NL0amMfC@7v6LEZ zJRdcQEOJB3>yKpYz60o5Z%iHk+aE8N9_^WHgCfgNURTbIk-E6;nX@z+wOUnj>BLof z+<~wM$iaX8@lfvEtSwh?@&{eymj#(kM1RG-C_<4!%*i=}5(zA}ncDLR(6i-*zEj~O zL7%o|F&b8-S3MW#KdX4i9H`CMlGt$BRlJZ^yhSbGoeXkk=HKSMkbObXZdm; z4)E97FHa0D@d_S2yRX#`kgGAHSqyV~KYp_uq(8^}Bq+*G#?pQLsr6^h&5@!*B3KTp zZ{g)h-QTsg2F~1m`6Llc-q&OGju!U?KB>T$wG|CrR_Ig&HHKfA!-5G2wR?qADT-H` z%@hu_8R0gj-<~fGAT8`5&WA1ms}BK17!X;@qR=xYMw3xb0}Rwd%RmG4JmpVQ1J6!lG9yKVd^3APYw}gH?(o4u0u=I{=^f@<7d6 z7?vOneEJ?k`RB!R3VxAt_qR_3{$qpDk?-F9--rF9BhM+&d)(2#{jtvN!QWgT$?j1& ze!JfyfSEjlQ5G)4{SRXR{v=EV^Ex%{89nCTY<&N-8zvLS+TLe(|JN9aB#`AW@G~4@ z-u$Og4}S1`C?D=WnJ7Q(I|&cJb;|ahpZ71C|7=FKuO9y2t@!`A?kj(1JXGrBGXK%W z_(fQ@{%Mu>cNTy6(_~^!i329fd!2*-z4$s+3Gx5-$UhtU=PRk3zY-`i)uN9aMT2a&L+`K>up#Xh>igBn-xD{~X$!#!n>h1-{g(o%rqytJ>tImOGwJ z4YaTQN+sP7yC_!Lb;Kh|ujo0>wu%nt+;1Iwso$k~A8wZobb})aNx=*E)fk7+HO?)I_2%+;fqj=0AnSio>1niMO=nKZrV#Dd;q(FErcUyl2 zh?T!nciEQ+A+Awvu=-edbK@Mow#MRh19cL=)=vxpq7)LqIn%j3R+33$nsz1Hx2voo zHJxN(vYq@PwwB0!;UCJUK@h`gY*wBdCPPnSw>@!qzErY&Hdn+Eu*m#!*alWx_A37l1@d-F0IeJ?0$%YQ4@hzt}vwEYfPHTdRl9pWoNa!hB=(0t^>Z3nF4`vXYRfc)*9B^TBNi7@Vw$!+(Kr~0Ev*=T!++3F6!z089 z#gNvACk+BM?i2M2Go1z z7icKuD5d$iuva&EQ`r+;xpODCJ(nY#6b&Q@BWSqnE?RSYPD$Al36=W%^T#VzBexAI zF4x}oiI7>R_te(Pl|~dksDvT$5{~i}61q4%M%gas?_faCiqB@+;b5^lA17=Dq(Kgq zHXh}gP-Uo$2Tne%bM$B9{4sJ!Vv!dqoiVFutFvAGz0_bx-f^*uBK=c{AZJ4M&EDe- z2AK#Z-9bq6qsu7)*Ol`F%tPBHJ*%Zll#5Jpp^eONOXt(=h?%-Gg!t0|zFT6iCcIUw zz4el%Lf214#Im2T$Dp|>s!eukmnT~}dtJ^PN57hGZ?+z7*=XnGY6G&O@biPEE{b-4 zalkA^7M9yaCJ`9|W^EUyEcYuV^@03|8A`(CrOzT2UvI)>c{W(^Iv3;+HK9SCQH3*3 z8xF;zx0K_EPF#_tEE(S4n!A6`^%$~-5kIrKc8IpwoK~Y#yPS>bkx@Mez6mf@rqacp7<0SZHE3?zkG?6t)j9_5``i>B3=;R zP4)7Ji=Bx^=5?iKGMA*NeyLvbJj}YoZydJ@*q5U;`VE&J)WhvOHJR&4L_PaocQuv5 z)7SiVT}dX=@6I`6fvJ{SPvMk0rqfHrfoiV-;pC@-C4Ec2fjI~VY^6wqUsaj=)J05`8~UR{ZQGm<`?)xDe&_C;xTOd_T>gsvRD9(%tIl{KPpMnmTdI$_ z-r?`Cbn&@tM;rwix6-fA*Yh&N6Vu)XV1A0hV|0vxW}mmSx{NFvZ;ZPKU#^=iobfuo zZo9S8!IoO{SvI2B-9L)1D|={(TQ@7nRh^)FA$oXz%N$6k zlU#n9YlJ%?dbm3RSlJsoPV5%XOBiCfbz^yXbk@Z@S1en;T#y=%Sy0PRRyApq$!J0Y zsLtsdqor!_#OU$ZOhU1V4LLRoq_S0t8=YC-gE)V)fT?ti^PakR!t01CN^Syp&%QW! z^y{yJG6|Pdtwa)(!xdRD#w&*JJ9^BU)Iz|H5$S_uz~r;F_AcP_v%;KKu1&;W~bOfDjDFmo@s=0=GaP?T_iK| zZnI$bI?YgrzBS^%$~(A22w3Uu$@TWx5gd#*!GbR~p$AwNRx_;7a9N>hG}Tuivt` zwKj}+-$-*)Hoy9=QOzaYAeQpwaI0vo;wkPL!wl}&sN64H|BqQK^vdbQm2WO(sQh*- z%8jSwBWaY#olkdgI?0lw_700ql~`o-0V4b(L(0q|>c{)pp?6`= z(2O2hN35seEnzzDTyd31J}O^L`SPOz@h1(a%`mYdi{Dh9Ug=JXv=!pV>0VESNaXC8 zp=e~= z`KSxA2!&3#u4)6cl=;q#YA@-W=W(+>f3-4O>q8y(az?I(K$`69?8f1?T=O)GpN#wQ z^*Zg77Attu&*w;NJg(w%wu2Ipd_xJGM}S*lFkBcA52SM6QT}bKqT8=+ z0rzs&g*lJl6AWDSOUfLCx%}Z0SG*mxCaD^UQkVAErZv?-!bW!pq7j7+#~PeU=$;!i zQ;oqJ*B1K?LYI#)MkM)B&5KkzRJbm-d0uki%fi|*vd^t2SK%x78}3kY>DLVbPyx6$ zT3>0V80MzTt?dObXPbm}=>D?$Ps168jmxVOMfQC+gQ5EGCaO)!HAWLzQ`DalL@VAD zOgUg_UHI4f>KmQ*QUTKXb7tL5G>0~O^Bh^p>T_+Z?;qu=3T(%2@?(l+cHc+I?ATu2 z#U!CFsj4q}y_!DPHLD@b!ki!JrI-h4&-v8RJV}n`^k;p!VnHPpPnnk z>-`E=r+%%Kur3bU#VmAr%!ynb!vJeM(bjE?2(K`{k8G?eu35rlzL;}uD4+F|vRO+6 zbp?@kb^-fMu4`}O*({gQyNdeZ3g_x6M04E^OG;t}Y4!_$j3U#D(k~t1W|WJ~uxD9D z5fX<3eC)a@R?MHVs~H89t3_ww{TL{(I(`sjW~#7?ISophXvSd_6nCHi#|~SJ&>_S1eB`vRA1FF1dBbn{jjLApW6UwiEt5r5~i;! zv+&t>r zIodCN#jZ}aQEQ2=3YrTyJM$@_hZ#|-Ey)I(lNo81r3G{Qcr&Or8`A;1U?A5|JFysb$V@Nc9; zr)Y>gbz4oE(!)<&dn$Cg*7ztToJl@pR#*wz(=%>Tc{K|Vb$$@|nPn4w#M+WY{k>*bCj2Wr7NOyZ<~ z3>Td<*>&VEeX@Vj*D3u4L9s!2lbT;izXeAY0oN6@)e}QC4XfflAUBfhyv_ZY&aCq= zFHs3~nzWj^;h!u38I4MZDqn0_E#Q{JpPpeI@As#8l9@j*w#pc)0!~G9>KCZnfrs&* zzkHz-()M?IOL97Mjs8xy@AW@AQllWE(PD;8GUMM<9im)jl#2D-(D`Y38F(r3F#m(yS8E4GBn=!j?1bH9xb*$(AhB6^eVLFx842q6`p! zn9<3lPPRmKl(TL_?Du>hJEqVpKcnHN7~uKxCkR?r)1CnVEEayH+z^~SV~H5+w_lp7 z^WLf-!8`4aZ=&vgzUo|ub~s#@Q`Vhr1IAh)(sUr9Ov`BAgSluI^1du6)9-eZcp$AI zwjPA>LH9;16#jtKH0w${A5)9;L~Jucsr9qvCnwqk_&X1cBmz*Zdg44qQ12TEnOk1n z!~;97|IG=do{;827Z08t4sfJ?OA2vi+kn;WOTBJVR7ht^=3tbbOn6<>d8H<&;YB9} z`7#rZfP%d%jA5+-X^Qt^0aol-^Q8QactR?BLb2m!67=`mplg&wcb;d2ZfX5}^@qF= z)zkNFnR7R2@w(e=NhgcAc^_LjbOqfG3TmHKK_Z6C#DzfnfHq?S9*!N=)zK0IXR)fI zvzYOCu$XZf&ym`nkBRR$r6Yu0Ndmd{iB5rG#Ih`xB`9M zDzx|Jdzcu%nY+*~nmb!%`-f^E(EZSv@*eo=6fjIjV%?W-Glr6R^#$=uAo|uCwB2W3 zz11P`?pz8y*p%;uuzo+#olahO6$EnaUoZEd=s0bU9F=We!iSpZl?U}e>K~|Xgo{EuN;=H6#X8juuhnOLnpri zhs*4jGy)xLTOZp5H`SL6#4OYAdCKO$PBa>!I*)!_3pXL~j__v*>D9)k#D%NwR>M{W4*Byala2HB^b`-t%mljnIgrzq z9`&&UI!tcfU4NkI*G?z7xVwDtEZgYkC3Zz>za7IC4^gSO3Q2D=kezRi1-Jgq zJ@x0it|Wc(NOwNbfh&Y2Og#S4UjyzX0ImDJKm8M+2O|o-IHH$IU??JLWY_@_5g~dV z*2x&Dl6Xd zvC1w@3;L$|XTioB*HR#F-D~yz#_s2(!DMY52B85PVq3T}l1>-_0=nPBX~ET~Zh@QY z?rfEIaBpI}-K0zkmvx>_W-z1T!EP3d1{m56?{IWrIi9D?ds`}lMCr3|BMEgCA~dbz zRS3nVre_6-F+bS!RP&jYuIMFeti1FS&)f*gdq=>lrderGRS(l`uxp#~vcRIAvjwRG z^`Wn^_WX(-p2TbQIw0a_%su2YB(aH{ms|uPh1WoN@R;EW znFVyianEzAfbubn3*!>g77w|Qhfz%M=vyx7tKF<_sG}|-O ze7m2G?Y;<2@`i?Vz+2@uInUT_8VgDXZxqO8&^vE4|LHHY1qb^JV3YLT+g?(I{v^X> zC{wybIi%c>R4qVI{MMVEhLq=sOAy<&Oj_!AW@PX)_{1rYH3>9VS9X z)%dpitNl_o5dK%h2|6@du%BVtMcYGO*ZF^R*0D$-2mPtBeKHL)z;Tf97fNI~G|jK} z4L-w0e*^mUO2NT^nuX#UA#wCfnYOgAf>aSDue;$)iO-d$vOfI z({>!tnj)oXnuT(W5t}9Tz1^|L%CyTz=6nq0_yJ|ppA{)Um%Yk#P)%3DftBr}|L%rE zlTxz{(qTM7WDRggC+&g{C!ESo-1hxsK0I>DrGsaH*ZmVJbzZ7;kjCe!#JGKc#-#qk z%Fwmj!i9mdodT+s}U!?NQog&$mS?s(ecxd4>!-NPiQ@08zk+7IleVt6v1q7$0<+v=pc zjwO|7aXLokpO@TPMg|l8l&Am1Z%}iVyfE^xK_6QSqM6E0c2t>%cmK55;yMXTQ2t%e zf=3tm-U~0L@aoE7o!ViC#$4D-R2`@W;g}&59fo?uyw`Sm|IK=#NXK8upsd4b%1Yh4 z!EpUuLjXm5XoY^Q<|uDuOWO)O!`RnE36=0d@oz2|p(dvHhVN;J|j)r~*b+2YER6& zr}1E_SpEW<$h!VRDKBCZ$tgkLS2d9uwMr#q*%AgVnl3<+j2Zt>vXn5e-w4VfSn!W>D+p580@@+y>iz% zZ`FmSU!&l%MnQ1-oe)&(3=+Fgwo2(xj1U!0>kwi;ltZ9CQ}C#@o)Gc9G1OL=d-S<7 zm-u0?o`4ag)0C$9fTD_v^L-_KJxJ%4KNasVh?outEH7E)^1uXEm_+zx_f+D}gIZbi zI~9DrwEV}l$-1b*DlAGe^^B$3=$hOPQwn;l*gy}TcIQemXL^jHLT zf-#xaqE>E!0pwNS6(&*c-)6nQ5Wz7i+eRN@E$^#PZ42bM^!Q4W(%J_5O0qD{_sGP2 z;SJ5J^rZ#Ha(l=gA_ice>2cbA-!%Ys4C_X_n0R9ZhR)#pO*v`8Ex1ZZ|L&Vp*K=I*ZO~a(gl6^uCfhBzrmpeKpmtK zhR=X7l@O5j>iUI5_+--$rL_oA*Z7`HDk?)`C~+n*LOn$<%ayK-#@KJ{DY8p#_|XVr zX~J-(sns0j9iM!D#VFv9N~SwxDVC^l7UdJ+pXX2Nyqs zti8gbb@QaAwD96m1nom@l!!(g5DbVx1_qL8fU8ulTv^FE9abLX&Q*CrK2G*&jrX2D z=Dx8*44wFolvqx1J@SWX6R}7FH9PW`H!6Kv>-06fQ zHWH$LE(dM0Lj)Z3O$Zxb`V*eeUVU|r<4*UYZBB1IzByo4q)=IA1=-lD6h z(I?Wx(kq+qguJRsXrh)IK^S7?!qvuXikQ&`FC#cU0n5VEGb!4>^>5 zY(G1RO1lH=(uUufRn5%ruBHOig>x-cQBR-yK{0$n;uae1RzJB}M3+~Q_c%ZD{ zL<|`q9tE=Xpa((B+~Ai6jtjfqv}PQRD-Y{+d*l0E@eRKU)a|mLMy@O%+yh@kD&_i! zxfRuM1`-y4U*_T@8ik74Zss#;pyeJD+E9H1$gh8U{|?Wn0BQJCWj+G@0S?z+8m%M= zr}Z2vf`(y98h|uTXC-AD`NMXRDSpWFp*!aAri!Na@*NR6lU8l){)f`(${o^N?}m{$ zb#PM8_TQq3%M3JBv1&zM-hmpE@U`(`Q)R%gY_BHsg)+trBr`Cq zH9(xmE4zlb{1uLWghHfT!msJy0eKUW&XTcmyG>()*70W(nxKZURhRID&@n|c$Z4&D zr@_sl)%roi<0dW`iB6|*773baw)`Qk>71D1?Sp*Wr*msq*}yr&vRc`E3sRU8h4N&D zen%GJ)8TwQWOGoxiJ4)SX!Z4C7lHfaV?C7YL7x-%y=@=UC(kvAi5F*%LDyh(TC

    EYs6JK3u{#GwR^jLD&;6jh=?&iXXbWgXX)}Z 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

    gMEqeXb~jTNW(|xar|6A+VHoOlX-jQR6fZK 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

    + +![Search Quality advanced mode with HNSW parameters](/documentation/tutorials/retrieval-quality/search-quality-advanced.png) + +Precision should increase at the cost of higher build time and memory. + + +![Search Quality results after HNSW tuning](/documentation/tutorials/retrieval-quality/search-quality-after-tuning.png) + +Tune until you hit the point that matches your quality and cost targets. + +## Automate in CI with Python + +The Web UI is the fastest way to check recall interactively. For continuous integration or scripted regression tests, the Qdrant client exposes the same exact-search mode via `search_params=models.SearchParams(exact=True)`. Compare the ANN and exact top-k sets yourself and compute recall. + +The helper below takes a list of query vectors and returns the average recall@k. Supply your own test set: a representative sample of query vectors from your workload, held out from training. ```python from qdrant_client import QdrantClient, models -client = QdrantClient("http://localhost:6333") -client.create_collection( - collection_name="arxiv-titles-instructorxl-embeddings", - vectors_config=models.VectorParams( - size=768, # Size of the embeddings generated by InstructorXL model - distance=models.Distance.COSINE, - ), -) -``` -We are now ready to index the training data. Uploading the records is going to trigger the indexing process, which will build the HNSW graph. -The indexing process may take some time, depending on the size of the dataset, but your data is going to be available for search immediately -after receiving the response from the `upsert` endpoint. **As long as the indexing is not finished, and HNSW not built, Qdrant will perform -the exact search**. We have to wait until the indexing is finished to be sure that the approximate search is performed. - -```python -client.upload_points( # upload_points is available as of qdrant-client v1.7.1 - collection_name="arxiv-titles-instructorxl-embeddings", - points=[ - models.PointStruct( - id=item["id"], - vector=item["vector"], - payload=item, - ) - for item in train_dataset - ] -) - -while True: - collection_info = client.get_collection(collection_name="arxiv-titles-instructorxl-embeddings") - if collection_info.status == models.CollectionStatus.GREEN: - # Collection status is green, which means the indexing is finished - break -``` - -## Standard Mode vs Exact Search - -Qdrant has a built-in exact search mode, which can be used to measure the quality of the search results. In this mode, Qdrant performs a -full kNN search for each query, without any approximation. It is not suitable for production use with high load, but it is perfect for the -evaluation of the ANN algorithm and its parameters. It might be triggered by setting the `exact` parameter to `True` in the search request. -We are simply going to use all the examples from the test dataset as queries and compare the results of the approximate search with the -results of the exact search. Let's create a helper function with `k` being a parameter, so we can calculate the `recall@k` for different -values of `k`. - -```python -def avg_recall_at_k(k: int): +def avg_recall_at_k( + client: QdrantClient, + collection_name: str, + test_vectors: list, + k: int, +) -> float: recalls = [] - for item in test_dataset: - ann_result = client.query_points( - collection_name="arxiv-titles-instructorxl-embeddings", - query=item["vector"], - limit=k, - ).points - - knn_result = client.query_points( - collection_name="arxiv-titles-instructorxl-embeddings", - query=item["vector"], - limit=k, - search_params=models.SearchParams( - exact=True, # Turns on the exact search mode - ), - ).points + for vector in test_vectors: + ann_ids = { + p.id for p in client.query_points( + collection_name=collection_name, + query=vector, + limit=k, + ).points + } + knn_ids = { + p.id for p in client.query_points( + collection_name=collection_name, + query=vector, + limit=k, + search_params=models.SearchParams(exact=True), + ).points + } + recalls.append(len(ann_ids & knn_ids) / k) - # We can calculate the recall@k by comparing the ids of the search results - ann_ids = set(item.id for item in ann_result) - knn_ids = set(item.id for item in knn_result) - recall = len(ann_ids.intersection(knn_ids)) / k - recalls.append(recall) - return sum(recalls) / len(recalls) ``` -Calculating the `recall@5` is as simple as calling the function with the corresponding parameter: - -```python -print(f"avg(recall@5) = {avg_recall_at_k(k=5)}") -``` - -Response: - -```text -avg(recall@5) = 0.9935999999999995 -``` - -As we can see, the recall of the approximate search vs exact search is pretty high. There are, however, some scenarios when we -need higher recall and can accept higher latency. HNSW is pretty tunable, and we can increase the recall by changing its parameters. - -## Tweaking the HNSW Parameters - -HNSW is a hierarchical graph, where each node has a set of links to other nodes. The number of edges per node is called the `m` parameter. -The larger the value of it, the higher the recall of the search, but more space required. The `ef_construct` parameter is the number of -neighbours to consider during the index building. Again, the larger the value, the higher the recall, but the longer the indexing time. -The default values of these parameters are `m=16` and `ef_construct=100`. Let's try to increase them to `m=32` and `ef_construct=200` and -see how it affects the recall. Of course, we need to wait until the indexing is finished before we can perform the search. - -```python -client.update_collection( - collection_name="arxiv-titles-instructorxl-embeddings", - hnsw_config=models.HnswConfigDiff( - m=32, # Increase the number of edges per node from the default 16 to 32 - ef_construct=200, # Increase the number of neighbours from the default 100 to 200 - ) -) - -while True: - collection_info = client.get_collection(collection_name="arxiv-titles-instructorxl-embeddings") - if collection_info.status == models.CollectionStatus.GREEN: - # Collection status is green, which means the indexing is finished - break -``` - -The same function can be used to calculate the average `recall@5`: - -```python -print(f"avg(recall@5) = {avg_recall_at_k(k=5)}") -``` - -Response: - -```text -avg(recall@5) = 0.9969999999999998 -``` - -The recall has obviously increased, and we know how to control it. However, there is a trade-off between the recall and the search -latency and memory requirements. In some specific cases, we may want to increase the recall as much as possible, so now we know how -to do it. +Drop it into your CI pipeline and fail the job if recall drops below a threshold after an embedding model change or index config update. ## Wrapping Up -Assessing the quality of retrieval is a critical aspect of evaluating semantic search performance. It is imperative to measure retrieval quality when aiming for optimal quality of. -your search results. Qdrant provides a built-in exact search mode, which can be used to measure the quality of the ANN algorithm itself, -even in an automated way, as part of your CI/CD pipeline. +Measuring ANN recall keeps HNSW tuning honest. The Search Quality tab gives you a quick interactive read; the Python helper above plugs into CI to catch regressions after embedding model changes or index config updates. -Again, **the quality of the embeddings is the most important factor**. HNSW does a pretty good job in terms of recall, and it is -parameterizable and tunable, when required. There are some other ANN algorithms available out there, such as [IVF*](https://github.com/facebookresearch/faiss/wiki/Faiss-indexes#cell-probe-methods-indexivf-indexes), -but they usually [perform worse than HNSW in terms of quality and performance](https://nirantk.com/writing/pgvector-vs-qdrant/#correctness). +HNSW covers most workloads well and is tunable when you need more recall. Other ANN algorithms exist, such as [IVF*](https://github.com/facebookresearch/faiss/wiki/Faiss-indexes#cell-probe-methods-indexivf-indexes), but they generally [perform worse than HNSW on quality and performance](https://nirantk.com/writing/pgvector-vs-qdrant/#correctness). From 175f92ddbed730dd06b444eb824c159f38c0e699 Mon Sep 17 00:00:00 2001 From: Dylan Couzon Date: Wed, 22 Apr 2026 17:02:45 -0400 Subject: [PATCH 25/64] change recall back to precision@k The Search Quality tab in the Web UI reports precision@k, not recall@k, so the whole tutorial now uses precision@k as the metric label: "ANN recall" -> "ANN precision" in the anchor, section headers, Python helper (avg_precision_at_k), and prose. Kept a one-line bridge note that ANN-benchmarks terminology calls this recall@k, since both searches return exactly k items. --- .../retrieval-quality.md | 38 +++++++++---------- 1 file changed, 17 insertions(+), 21 deletions(-) diff --git a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality.md b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality.md index b484ef475..5073953e9 100644 --- a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality.md +++ b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality.md @@ -11,32 +11,28 @@ weight: 6 | Time: 30 min | Level: Intermediate | | | |--------------|---------------------|--|----| -This tutorial measures **layer 1** of the evaluation ladder, **ANN recall**: the share of exact kNN results that Qdrant's approximate nearest-neighbor search recovers. For retrieval relevance (layer 2), see the Building a Golden Query Set tutorial. +This tutorial measures **layer 1** of the evaluation ladder, **ANN precision**: the share of Qdrant's approximate nearest-neighbor top-k that appears in the exact kNN top-k. For retrieval relevance (layer 2), see the Building a Golden Query Set tutorial. -We'll measure Qdrant's ANN recall with `recall@k` and tune HNSW parameters to control the recall/latency trade-off. The ANN algorithm is one of several levers that shape retrieval quality in a production pipeline, alongside the embedding model, retrieval strategy (dense, sparse, hybrid, and multi-vector), filtering, and reranking. +We'll measure Qdrant's ANN precision with `precision@k` and tune HNSW parameters to control the precision/latency trade-off. The ANN algorithm is one of several levers that shape retrieval quality in a production pipeline, alongside the embedding model, retrieval strategy (dense, sparse, hybrid, and multi-vector), filtering, and reranking. -## ANN Recall +## ANN Precision -Embedding quality sets the ceiling on search quality and is measured separately via benchmarks like [MTEB](https://huggingface.co/spaces/mteb/leaderboard). The retrieval pipeline can still underperform that ceiling: vector search engines such as Qdrant don't run pure kNN at query time but use **approximate nearest-neighbor** (ANN) algorithms for speed. ANN is faster than exact search but can return suboptimal results. **ANN recall** measures that gap. +Embedding quality sets the ceiling on search quality and is measured separately via benchmarks like [MTEB](https://huggingface.co/spaces/mteb/leaderboard). The retrieval pipeline can still underperform that ceiling: vector search engines such as Qdrant don't run pure kNN at query time but use **approximate nearest-neighbor** (ANN) algorithms for speed. ANN is faster than exact search but can return suboptimal results. **ANN precision** measures that gap. -For a broader discussion of what to measure and when (ANN recall vs retrieval relevance vs business impact, and which metric fits which scenario), -see [Retrieval Quality Fundamentals](/documentation/tutorials-search-engineering/retrieval-quality-fundamentals/). This tutorial focuses on the -ANN-algorithm layer and measures it with `recall@k`: the fraction of the true top-k items returned by exact search that the approximate search -recovers. When both ANN and exact search return exactly `k` items, `recall@k` and `precision@k` are numerically identical; we use "recall" to -match the ANN-benchmarks convention. +For a broader discussion of the full evaluation ladder (ANN quality, retrieval relevance, business impact), see [Retrieval Quality Fundamentals](/documentation/tutorials-search-engineering/retrieval-quality-fundamentals/). This tutorial measures the ANN layer with `precision@k`: the fraction of ANN's top-k results that appear in the exact kNN top-k. In ANN-benchmarks terminology this is equivalent to `recall@k`, since both searches return exactly `k` items. -## Measure ANN Recall with the Web UI +## Measure ANN Precision with the Web UI Qdrant's Web UI has a Search Quality tab that measures the gap between approximate and exact search without requiring evaluation code. Open the dashboard at `http://localhost:6333/dashboard` (or your cluster's dashboard on Qdrant Cloud), navigate to your collection, and click the Search Quality tab. A run launches automatically with a default sample size of 10 queries, comparing ANN against exact kNN. ![Search Quality tab with default evaluation results](/documentation/tutorials/retrieval-quality/search-quality-tab.png) -The tab reports average **precision@k**. The score is typically high but not always perfect. When you need higher recall and can accept higher latency or more memory, HNSW is tunable. +The tab reports average **precision@k**. The score is typically high but not always perfect. When you need higher precision and can accept higher latency or more memory, HNSW is tunable. ## Tweaking the HNSW Parameters -HNSW is a hierarchical graph where each node has a set of links to other nodes. The `m` parameter controls the number of edges per node: higher `m` means higher recall at the cost of more memory. The `ef_construct` parameter controls how many neighbours are considered during index building: higher `ef_construct` means higher recall at the cost of longer indexing time. Defaults are `m=16` and `ef_construct=100`. +HNSW is a hierarchical graph where each node has a set of links to other nodes. The `m` parameter controls the number of edges per node: higher `m` means higher precision at the cost of more memory. The `ef_construct` parameter controls how many neighbours are considered during index building: higher `ef_construct` means higher precision at the cost of longer indexing time. Defaults are `m=16` and `ef_construct=100`. For the full list of HNSW parameters, including on-disk storage and precision/memory trade-offs, see [Optimize Performance](/documentation/operations/optimize/). @@ -54,21 +50,21 @@ Tune until you hit the point that matches your quality and cost targets. ## Automate in CI with Python -The Web UI is the fastest way to check recall interactively. For continuous integration or scripted regression tests, the Qdrant client exposes the same exact-search mode via `search_params=models.SearchParams(exact=True)`. Compare the ANN and exact top-k sets yourself and compute recall. +The Web UI is the fastest way to check precision interactively. For continuous integration or scripted regression tests, the Qdrant client exposes the same exact-search mode via `search_params=models.SearchParams(exact=True)`. Compare the ANN and exact top-k sets yourself and compute precision@k. -The helper below takes a list of query vectors and returns the average recall@k. Supply your own test set: a representative sample of query vectors from your workload, held out from training. +The helper below takes a list of query vectors and returns the average precision@k. Supply your own test set: a representative sample of query vectors from your workload, held out from training. ```python from qdrant_client import QdrantClient, models -def avg_recall_at_k( +def avg_precision_at_k( client: QdrantClient, collection_name: str, test_vectors: list, k: int, ) -> float: - recalls = [] + precisions = [] for vector in test_vectors: ann_ids = { p.id for p in client.query_points( @@ -85,15 +81,15 @@ def avg_recall_at_k( search_params=models.SearchParams(exact=True), ).points } - recalls.append(len(ann_ids & knn_ids) / k) + precisions.append(len(ann_ids & knn_ids) / k) - return sum(recalls) / len(recalls) + return sum(precisions) / len(precisions) ``` -Drop it into your CI pipeline and fail the job if recall drops below a threshold after an embedding model change or index config update. +Drop it into your CI pipeline and fail the job if precision drops below a threshold after an embedding model change or index config update. ## Wrapping Up -Measuring ANN recall keeps HNSW tuning honest. The Search Quality tab gives you a quick interactive read; the Python helper above plugs into CI to catch regressions after embedding model changes or index config updates. +Measuring ANN precision keeps HNSW tuning honest. The Search Quality tab gives you a quick interactive read; the Python helper above plugs into CI to catch regressions after embedding model changes or index config updates. -HNSW covers most workloads well and is tunable when you need more recall. Other ANN algorithms exist, such as [IVF*](https://github.com/facebookresearch/faiss/wiki/Faiss-indexes#cell-probe-methods-indexivf-indexes), but they generally [perform worse than HNSW on quality and performance](https://nirantk.com/writing/pgvector-vs-qdrant/#correctness). +HNSW covers most workloads well and is tunable when you need higher precision. Other ANN algorithms exist, such as [IVF*](https://github.com/facebookresearch/faiss/wiki/Faiss-indexes#cell-probe-methods-indexivf-indexes), but they generally [perform worse than HNSW on quality and performance](https://nirantk.com/writing/pgvector-vs-qdrant/#correctness). From 92af150b00cddf5d8e1af776090601cdd68ceac6 Mon Sep 17 00:00:00 2001 From: Dylan Couzon Date: Wed, 22 Apr 2026 17:13:27 -0400 Subject: [PATCH 26/64] retrieval-quality: rename to "Measuring ANN Precision" - Update title, H1, and Time in retrieval-quality.md (30 min -> 15 min reflects the pivot to Web UI) - Rename references in tutorials-lp-overview.md and the headless tutorial index; swap the pill from Python to Web UI to reflect the new primary flow - Replace "ANN recall" with "ANN precision" in Fundamentals (4 places: intro, comparison note, ladder table, cross-link) and in the golden-set tutorial's layer-1 cross-reference - Filename kept as retrieval-quality.md so existing URLs and aliases still work --- .../headless/content/tutorials/search-engineering.md | 2 +- .../content/documentation/tutorials-lp-overview.md | 2 +- .../retrieval-quality-fundamentals.md | 8 ++++---- .../retrieval-quality-golden-set.md | 2 +- .../tutorials-search-engineering/retrieval-quality.md | 6 +++--- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/qdrant-landing/content/documentation/headless/content/tutorials/search-engineering.md b/qdrant-landing/content/documentation/headless/content/tutorials/search-engineering.md index 5041da568..3ff505852 100644 --- a/qdrant-landing/content/documentation/headless/content/tutorials/search-engineering.md +++ b/qdrant-landing/content/documentation/headless/content/tutorials/search-engineering.md @@ -7,7 +7,7 @@ | [Multivector Document Retrieval](/documentation/tutorials-search-engineering/pdf-retrieval-at-scale/) | PDF RAG using ColPali and embedding pooling. | Python | 30m | Intermediate | | [Retrieval Quality Fundamentals](/documentation/tutorials-search-engineering/retrieval-quality-fundamentals/) | Understand evaluation levels and choose the right metric. | Python | 20m | Intermediate | | [Building a Golden Query Set](/documentation/tutorials-search-engineering/retrieval-quality-golden-set/) | Generate ground truth data at scale and avoid data leakage. | Python | 40m | Intermediate | -| [Retrieval Quality Evaluation](/documentation/tutorials-search-engineering/retrieval-quality/) | Measure ANN recall and tune HNSW parameters. | Python | 30m | Intermediate | +| [Measuring ANN Precision](/documentation/tutorials-search-engineering/retrieval-quality/) | Measure ANN precision with the Web UI and tune HNSW parameters. | Web UI | 15m | Intermediate | | [Hybrid Search with Reranking](/documentation/tutorials-search-engineering/reranking-hybrid-search/) | Implement late interaction and sparse reranking. | Python | 40m | Intermediate | | [Semantic Search for Code](/documentation/tutorials-search-engineering/code-search/) | Navigate codebases using vector similarity. | Python | 45m | Intermediate | | [Multivectors and Late Interaction](/documentation/tutorials-search-engineering/using-multivector-representations/) | Effective use of multivector representations. | Python | 30m | Intermediate | diff --git a/qdrant-landing/content/documentation/tutorials-lp-overview.md b/qdrant-landing/content/documentation/tutorials-lp-overview.md index aae6e5e3f..103e6060d 100644 --- a/qdrant-landing/content/documentation/tutorials-lp-overview.md +++ b/qdrant-landing/content/documentation/tutorials-lp-overview.md @@ -70,7 +70,7 @@ partition: qdrant | [Multivector Document Retrieval](/documentation/tutorials-search-engineering/pdf-retrieval-at-scale/) | PDF RAG using ColPali and embedding pooling. | Python | 30m | Intermediate | | [Retrieval Quality Fundamentals](/documentation/tutorials-search-engineering/retrieval-quality-fundamentals/) | Understand evaluation levels and choose the right metric. | Python | 20m | Intermediate | | [Building a Golden Query Set](/documentation/tutorials-search-engineering/retrieval-quality-golden-set/) | Generate ground truth data at scale and avoid data leakage. | Python | 40m | Intermediate | -| [Retrieval Quality Evaluation](/documentation/tutorials-search-engineering/retrieval-quality/) | Measure ANN recall and tune HNSW parameters. | Python | 30m | Intermediate | +| [Measuring ANN Precision](/documentation/tutorials-search-engineering/retrieval-quality/) | Measure ANN precision with the Web UI and tune HNSW parameters. | Web UI | 15m | Intermediate | | [Reranking for Better Search](/documentation/search-precision/reranking-semantic-search/) | Use multivector representations for better ranking. | Python | 30m | Intermediate | | [Hybrid Search with Reranking](/documentation/tutorials-search-engineering/reranking-hybrid-search/) | Implement late interaction and sparse reranking. | Python | 40m | Intermediate | | [Semantic Search for Code](/documentation/tutorials-search-engineering/code-search/) | Navigate codebases using vector similarity. | Python | 45m | Intermediate | diff --git a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-fundamentals.md b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-fundamentals.md index 30848008b..9a5fa8cb6 100644 --- a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-fundamentals.md +++ b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-fundamentals.md @@ -12,9 +12,9 @@ aliases: Before measuring retrieval quality, it's worth understanding what you're measuring. Retrieval quality operates at three distinct levels, and it's easy to optimize for the wrong one. -The first level is **ANN recall**: does the approximate search return the same results as an exact nearest-neighbor search? This is a purely algorithmic question about how faithfully HNSW approximates exhaustive search. It has nothing to do with whether those results are useful to a human. +The first level is **ANN precision**: does the approximate search return the same results as an exact nearest-neighbor search? This is a purely algorithmic question about how faithfully HNSW approximates exhaustive search. It has nothing to do with whether those results are useful to a human. -The second level is **retrieval relevance**: of the results returned, how many are relevant to the query intent? This requires a labeled ground-truth dataset or human judgment. A pipeline can achieve near-perfect ANN recall and still surface irrelevant documents if the embeddings are a poor fit for the task. +The second level is **retrieval relevance**: of the results returned, how many are relevant to the query intent? This requires a labeled ground-truth dataset or human judgment. A pipeline can achieve near-perfect ANN precision and still surface irrelevant documents if the embeddings are a poor fit for the task. The third level is **business impact**: does better retrieval lead to better outcomes like lower hallucination rates in downstream LLMs, higher task-completion rates, or improved user satisfaction scores? This is what stakeholders care about, but it's the hardest to measure directly. The causal chain from a vector match to a user outcome is long and easily dominated by generator behavior, UI, and other confounders, so no single offline metric is a reliable proxy for a KPI. The next section describes how teams bridge this gap in practice. @@ -24,7 +24,7 @@ The three levels aren't measured in isolation. Teams that successfully connect r | # | Layer | What it measures | Cadence | Cost | |---|---|---|---|---| -| 1 | ANN recall | `Recall@k` vs exact kNN on a sampled query set | On index or embedding changes | Low | +| 1 | ANN precision | `Recall@k` vs exact kNN on a sampled query set | On index or embedding changes | Low | | 2 | Retrieval relevance | `Recall@k` / `NDCG@k` vs a labeled golden set | Weekly, or on retrieval-stack changes | Low per run; **golden set is the real cost** (see next tutorial) | | 3 | End-to-end answer quality | LLM-as-judge or human rating on the golden set | Weekly, or on retrieval or generator changes | Moderate (LLM-judge cost × eval size) | | 4 | Business impact | Online A/B behind a flag | Per release, once offline layers pass | High (traffic, experimentation infra) | @@ -71,4 +71,4 @@ On choosing `k`: set it to match actual usage. If the application shows 5 result ## Next Steps -To build a labeled dataset for relevance evaluation, see [Building a Golden Query Set](/documentation/tutorials-search-engineering/retrieval-quality-golden-set/). To measure and tune the ANN recall of a Qdrant collection in practice, see [Retrieval Quality Evaluation](/documentation/tutorials-search-engineering/retrieval-quality/). +To build a labeled dataset for relevance evaluation, see [Building a Golden Query Set](/documentation/tutorials-search-engineering/retrieval-quality-golden-set/). To measure and tune the ANN precision of a Qdrant collection in practice, see [Measuring ANN Precision](/documentation/tutorials-search-engineering/retrieval-quality/). diff --git a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-golden-set.md b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-golden-set.md index f164ca4b6..f2dd19977 100644 --- a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-golden-set.md +++ b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-golden-set.md @@ -10,7 +10,7 @@ aliases: | Time: 40 min | Level: Intermediate | | | |--------------|---------------------|--|----| -This tutorial covers **layer 2** of the evaluation ladder: **retrieval relevance**. Measuring how well retrieved results match real user intent requires a labeled dataset of queries paired with their expected relevant documents (commonly called a *golden query set* or *ground truth*). For layer 1 (ANN recall against exact kNN), which needs no relevance labels, use the **Search Quality** tab in the Qdrant Web UI. +This tutorial covers **layer 2** of the evaluation ladder: **retrieval relevance**. Measuring how well retrieved results match real user intent requires a labeled dataset of queries paired with their expected relevant documents (commonly called a *golden query set* or *ground truth*). For layer 1 (ANN precision against exact kNN), which needs no relevance labels, use the **Search Quality** tab in the Qdrant Web UI. ## Generating Queries diff --git a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality.md b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality.md index 5073953e9..d50b561b6 100644 --- a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality.md +++ b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality.md @@ -1,14 +1,14 @@ --- -title: Retrieval Quality Evaluation +title: Measuring ANN Precision aliases: - /documentation/tutorials/retrieval-quality/ - /documentation/beginner-tutorials/retrieval-quality/ weight: 6 --- -# Evaluate Retrieval Quality +# Measuring ANN Precision -| Time: 30 min | Level: Intermediate | | | +| Time: 15 min | Level: Intermediate | | | |--------------|---------------------|--|----| This tutorial measures **layer 1** of the evaluation ladder, **ANN precision**: the share of Qdrant's approximate nearest-neighbor top-k that appears in the exact kNN top-k. For retrieval relevance (layer 2), see the Building a Golden Query Set tutorial. From 5748d6db8c412e07b5766c98b679741462afcfa2 Mon Sep 17 00:00:00 2001 From: Dylan Couzon Date: Wed, 22 Apr 2026 22:17:07 -0400 Subject: [PATCH 27/64] update for moved URL --- .../tutorials-search-engineering/retrieval-quality.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality.md b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality.md index d50b561b6..eecba347b 100644 --- a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality.md +++ b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality.md @@ -34,7 +34,7 @@ The tab reports average **precision@k**. The score is typically high but not alw HNSW is a hierarchical graph where each node has a set of links to other nodes. The `m` parameter controls the number of edges per node: higher `m` means higher precision at the cost of more memory. The `ef_construct` parameter controls how many neighbours are considered during index building: higher `ef_construct` means higher precision at the cost of longer indexing time. Defaults are `m=16` and `ef_construct=100`. -For the full list of HNSW parameters, including on-disk storage and precision/memory trade-offs, see [Optimize Performance](/documentation/operations/optimize/). +For the full list of HNSW parameters, including on-disk storage and precision/memory trade-offs, see [Optimize Performance](/documentation/ops-optimization/optimize/). Toggle **advanced mode** in the Search Quality tab to tune these parameters inline. Raise `m` to 32 and `ef_construct` to 200, then run the evaluation again. From e2df842fb5bb58a79924336afadd161533fca08a Mon Sep 17 00:00:00 2001 From: Dylan Couzon Date: Wed, 22 Apr 2026 22:31:35 -0400 Subject: [PATCH 28/64] retrieval-quality-fundamentals: structure & scope pass - Add "why measure retrieval quality" lead-in paragraph - Expand ANN on first use; flag sparse vectors as out of scope for layer 1 (they use exact matching) - Add LLM-as-judge to layer-2 ground-truth options - Break the Tooling bullet into per-layer recommendations: Web UI for L1, ranx for L2, Ragas/Phoenix/DeepEval for L3 - Reorder Quality Metrics so layer 1 (ANN recall formula + exact kNN equivalence) comes before the generic layer-2 relevance metrics; trim a redundant sentence - Add end-to-end answer quality as a distinct third layer in the prose intro so it matches the ladder table's four rows - Standardize vocabulary on "layer" (was mixing "level" in the intro with "layer" everywhere else); update the section anchor to #connecting-the-layers-in-practice in this file and the two cross-linking tutorials Co-Authored-By: Claude Opus 4.7 (1M context) --- .../retrieval-quality-fundamentals.md | 29 ++++++++++--------- .../retrieval-quality-golden-set.md | 2 +- .../retrieval-quality.md | 2 +- 3 files changed, 18 insertions(+), 15 deletions(-) diff --git a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-fundamentals.md b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-fundamentals.md index 9a5fa8cb6..9ef78edb7 100644 --- a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-fundamentals.md +++ b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-fundamentals.md @@ -10,17 +10,21 @@ aliases: | Time: 20 min | Level: Intermediate | | | |--------------|---------------------|--|----| -Before measuring retrieval quality, it's worth understanding what you're measuring. Retrieval quality operates at three distinct levels, and it's easy to optimize for the wrong one. +Retrieval quality decides what shows up in a search result. When it drops, downstream systems suffer: RAG answers hallucinate, search users bounce, and agents pick the wrong tools. Measuring it systematically is how you catch regressions from embedding model swaps, index config changes, or dataset drift before they reach production. -The first level is **ANN precision**: does the approximate search return the same results as an exact nearest-neighbor search? This is a purely algorithmic question about how faithfully HNSW approximates exhaustive search. It has nothing to do with whether those results are useful to a human. +Before measuring retrieval quality, it's worth understanding what you're measuring. Retrieval quality operates at four distinct layers, and it's easy to optimize for the wrong one. -The second level is **retrieval relevance**: of the results returned, how many are relevant to the query intent? This requires a labeled ground-truth dataset or human judgment. A pipeline can achieve near-perfect ANN precision and still surface irrelevant documents if the embeddings are a poor fit for the task. +The first layer is **approximate nearest-neighbor (ANN) precision**: does the approximate index return the same results as an exact nearest-neighbor search? This is a purely algorithmic question about how faithfully HNSW approximates exhaustive search. (Sparse vectors use exact matching, so this layer doesn't apply to them.) ANN precision has nothing to do with whether those results are useful to a human. -The third level is **business impact**: does better retrieval lead to better outcomes like lower hallucination rates in downstream LLMs, higher task-completion rates, or improved user satisfaction scores? This is what stakeholders care about, but it's the hardest to measure directly. The causal chain from a vector match to a user outcome is long and easily dominated by generator behavior, UI, and other confounders, so no single offline metric is a reliable proxy for a KPI. The next section describes how teams bridge this gap in practice. +The second layer is **retrieval relevance**: of the results returned, how many are relevant to the query intent? This requires a labeled ground-truth dataset, human judgment, or LLM-as-judge scoring. A pipeline can achieve near-perfect ANN precision and still surface irrelevant documents if the embeddings are a poor fit for the task. -## Connecting the Levels in Practice +The third layer is **end-to-end answer quality**: does the full pipeline (retrieval plus whatever consumes it, such as an LLM, a ranker, or a recommendation surface) produce the right output? This is usually measured offline with LLM-as-judge or human rating on a labeled test set. It's downstream of retrieval but upstream of any business KPI. -The three levels aren't measured in isolation. Teams that successfully connect retrieval work to business outcomes tend to build an **evaluation ladder** that runs each layer at a different cadence and cost, and uses the result of each layer to decide whether to invest effort at the next: +The fourth layer is **business impact**: does better retrieval lead to better outcomes like lower hallucination rates in downstream LLMs, higher task-completion rates, or improved user satisfaction scores? This is what stakeholders care about, but it's the hardest to measure directly. The causal chain from a vector match to a user outcome is long and easily dominated by generator behavior, UI, and other confounders, so no single offline metric is a reliable proxy for a KPI. The next section describes how teams bridge this gap in practice. + +## Connecting the Layers in Practice + +The four layers aren't measured in isolation. Teams that successfully connect retrieval work to business outcomes tend to build an **evaluation ladder** that runs each layer at a different cadence and cost, and uses the result of each layer to decide whether to invest effort at the next: | # | Layer | What it measures | Cadence | Cost | |---|---|---|---|---| @@ -37,24 +41,23 @@ Each layer is necessary but not sufficient. A win at layer 2 that doesn't carry **Pre-register the decision rule.** Before running the A/B, write down what constitutes a win and what constitutes a no-ship, in terms of both the retrieval metric and the KPI. This is the highest-leverage discipline for avoiding "recall improved but the KPI didn't, the KPI is noisy, let's ship anyway" rationalization. -**Tooling.** Qdrant owns layers 1 and 2 directly. For layer 3, the ecosystem has mature tooling like [Ragas](https://docs.ragas.io/), [Arize Phoenix](https://phoenix.arize.com/), and [DeepEval](https://docs.confident-ai.com/) that handles LLM-as-judge scoring and offline answer-quality eval. +**Tooling.** For layer 1, the Qdrant Web UI ships with a Search Quality tab that measures ANN vs exact kNN without code (see [Measuring ANN Precision](/documentation/tutorials-search-engineering/retrieval-quality/)). For layer 2, [ranx](https://amenra.github.io/ranx/) is the standard Python library for ranking metrics (recall@k, MRR, NDCG@k, and others). For layer 3, the ecosystem has mature tooling like [Ragas](https://docs.ragas.io/), [Arize Phoenix](https://phoenix.arize.com/), and [DeepEval](https://docs.confident-ai.com/) for LLM-as-judge scoring and offline answer-quality eval. ## Quality Metrics -There are various ways to quantify the quality of semantic search. Some of them, such as [Precision@k](https://en.wikipedia.org/wiki/Evaluation_measures_(information_retrieval)#Precision_at_k), -are based on the number of relevant documents in the top-k search results. Others, such as [Mean Reciprocal Rank (MRR)](https://en.wikipedia.org/wiki/Mean_reciprocal_rank), -take into account the position of the first relevant document in the search results. [DCG and NDCG](https://en.wikipedia.org/wiki/Discounted_cumulative_gain) -metrics are, in turn, based on the relevance score of the documents. +Different layers call for different metrics. The right choice depends on what the pipeline does with its results and what ground truth is available. -To evaluate the ANN algorithm itself, the question is simple: of the `k` true nearest neighbors an exact search would return, how many did the approximation find? That fraction is **`recall@k`**: +**Layer 1 (ANN precision).** The question is simple: of the `k` true nearest neighbors an exact search would return, how many did the approximation find? That fraction is **`recall@k`**: `recall@k = |ANN results ∩ exact results| / k` When both searches return exactly `k` items, `recall@k` and `precision@k` are numerically identical. The ANN community uses "recall" by convention to make clear that exact kNN is the ground truth. +**Layer 2 (retrieval relevance).** Several metrics quantify relevance against a labeled ground truth. [Precision@k](https://en.wikipedia.org/wiki/Evaluation_measures_(information_retrieval)#Precision_at_k) is based on the number of relevant documents in the top-k. [Mean Reciprocal Rank (MRR)](https://en.wikipedia.org/wiki/Mean_reciprocal_rank) takes into account the position of the first relevant document. [DCG and NDCG](https://en.wikipedia.org/wiki/Discounted_cumulative_gain) are based on the relevance score of the documents. + ### Choosing the Right Metric -The right choice of metric depends on what the search pipeline does with its results, and on what ground truth is available. The table below is a starting point, not a prescription: pick the metric that matches your ground truth and your user-visible behavior. +The table below is a starting point, not a prescription: pick the metric that matches your ground truth and your user-visible behavior. | Scenario | Recommended metric | Ground truth | Why | |---|---|---|---| diff --git a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-golden-set.md b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-golden-set.md index f2dd19977..3c3a388e0 100644 --- a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-golden-set.md +++ b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-golden-set.md @@ -10,7 +10,7 @@ aliases: | Time: 40 min | Level: Intermediate | | | |--------------|---------------------|--|----| -This tutorial covers **layer 2** of the evaluation ladder: **retrieval relevance**. Measuring how well retrieved results match real user intent requires a labeled dataset of queries paired with their expected relevant documents (commonly called a *golden query set* or *ground truth*). For layer 1 (ANN precision against exact kNN), which needs no relevance labels, use the **Search Quality** tab in the Qdrant Web UI. +This tutorial covers **layer 2** of the evaluation ladder: **retrieval relevance**. Measuring how well retrieved results match real user intent requires a labeled dataset of queries paired with their expected relevant documents (commonly called a *golden query set* or *ground truth*). For layer 1 (ANN precision against exact kNN), which needs no relevance labels, use the **Search Quality** tab in the Qdrant Web UI. ## Generating Queries diff --git a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality.md b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality.md index eecba347b..61163b835 100644 --- a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality.md +++ b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality.md @@ -11,7 +11,7 @@ weight: 6 | Time: 15 min | Level: Intermediate | | | |--------------|---------------------|--|----| -This tutorial measures **layer 1** of the evaluation ladder, **ANN precision**: the share of Qdrant's approximate nearest-neighbor top-k that appears in the exact kNN top-k. For retrieval relevance (layer 2), see the Building a Golden Query Set tutorial. +This tutorial measures **layer 1** of the evaluation ladder, **ANN precision**: the share of Qdrant's approximate nearest-neighbor top-k that appears in the exact kNN top-k. For retrieval relevance (layer 2), see the Building a Golden Query Set tutorial. We'll measure Qdrant's ANN precision with `precision@k` and tune HNSW parameters to control the precision/latency trade-off. The ANN algorithm is one of several levers that shape retrieval quality in a production pipeline, alongside the embedding model, retrieval strategy (dense, sparse, hybrid, and multi-vector), filtering, and reranking. From fb1672c102fba4074bd9f54c5f1efaa3afdd42d3 Mon Sep 17 00:00:00 2001 From: Dylan Couzon Date: Wed, 22 Apr 2026 22:39:03 -0400 Subject: [PATCH 29/64] retrieval-quality-fundamentals: tone pass - Soften "how teams bridge this gap" to "common patterns for bridging this gap" so we don't imply we harvested real client pipelines for this writeup - Reframe the layer-2/3 diagnostic and the "Isolate the component under test" bullet so they name multiple downstream consumer types (LLM generator, ranker, UI) rather than assuming RAG - Add a one-line caveat that A/B design for RAG and agentic systems is still evolving to the Proxy KPIs paragraph - Simplify the recall@k / precision@k equivalence note and link ann-benchmarks.com as the citation for community convention Co-Authored-By: Claude Opus 4.7 (1M context) --- .../retrieval-quality-fundamentals.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-fundamentals.md b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-fundamentals.md index 9ef78edb7..43a7eb52f 100644 --- a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-fundamentals.md +++ b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-fundamentals.md @@ -20,7 +20,7 @@ The second layer is **retrieval relevance**: of the results returned, how many a The third layer is **end-to-end answer quality**: does the full pipeline (retrieval plus whatever consumes it, such as an LLM, a ranker, or a recommendation surface) produce the right output? This is usually measured offline with LLM-as-judge or human rating on a labeled test set. It's downstream of retrieval but upstream of any business KPI. -The fourth layer is **business impact**: does better retrieval lead to better outcomes like lower hallucination rates in downstream LLMs, higher task-completion rates, or improved user satisfaction scores? This is what stakeholders care about, but it's the hardest to measure directly. The causal chain from a vector match to a user outcome is long and easily dominated by generator behavior, UI, and other confounders, so no single offline metric is a reliable proxy for a KPI. The next section describes how teams bridge this gap in practice. +The fourth layer is **business impact**: does better retrieval lead to better outcomes like lower hallucination rates in downstream LLMs, higher task-completion rates, or improved user satisfaction scores? This is what stakeholders care about, but it's the hardest to measure directly. The causal chain from a vector match to a user outcome is long and easily dominated by generator behavior, UI, and other confounders, so no single offline metric is a reliable proxy for a KPI. The next section lays out common patterns for bridging this gap. ## Connecting the Layers in Practice @@ -33,11 +33,11 @@ The four layers aren't measured in isolation. Teams that successfully connect re | 3 | End-to-end answer quality | LLM-as-judge or human rating on the golden set | Weekly, or on retrieval or generator changes | Moderate (LLM-judge cost × eval size) | | 4 | Business impact | Online A/B behind a flag | Per release, once offline layers pass | High (traffic, experimentation infra) | -Each layer is necessary but not sufficient. A win at layer 2 that doesn't carry through to layer 3 usually means the generator or the prompt is the bottleneck, not retrieval. This is the most useful diagnostic the ladder provides, and the reason teams shouldn't collapse layers 2 and 3 into a single score. +Each layer is necessary but not sufficient. A win at layer 2 that doesn't carry through to layer 3 usually means the downstream consumer (an LLM generator in RAG, a ranker in a search UI, or the prompt itself) is the bottleneck, not retrieval. This is the most useful diagnostic the ladder provides, and the reason teams shouldn't collapse layers 2 and 3 into a single score. -**Isolate the component under test.** When end-to-end quality moves, hold one side fixed: evaluate retrieval with the generator frozen, and evaluate the generator with retrieval frozen. Without this, attribution collapses into guesswork and the ladder stops being diagnostic. +**Isolate the component under test.** When end-to-end quality moves, hold one side fixed: evaluate retrieval with the downstream piece frozen (an LLM generator, a ranker, or the UI), and evaluate that piece with retrieval frozen. Without this, attribution collapses into guesswork and the ladder stops being diagnostic. -**Proxy KPIs for teams without A/B infrastructure.** Most teams don't have the traffic or tooling to run a proper A/B. Cheap production signals that correlate with business value (click position on surfaced results, answer copy or share rate, session-level task completion, thumbs-up/down) can be instrumented long before a formal experimentation platform exists, and sit usefully between the golden-set layer and the full A/B. +**Proxy KPIs for teams without A/B infrastructure.** A/B design for RAG and agentic systems is still evolving, and most teams don't have the traffic or tooling for a proper A/B regardless. Cheap production signals that correlate with business value (click position on surfaced results, answer copy or share rate, session-level task completion, thumbs-up/down) can be instrumented long before a formal experimentation platform exists, and sit usefully between the golden-set layer and the full A/B. **Pre-register the decision rule.** Before running the A/B, write down what constitutes a win and what constitutes a no-ship, in terms of both the retrieval metric and the KPI. This is the highest-leverage discipline for avoiding "recall improved but the KPI didn't, the KPI is noisy, let's ship anyway" rationalization. @@ -51,7 +51,7 @@ Different layers call for different metrics. The right choice depends on what th `recall@k = |ANN results ∩ exact results| / k` -When both searches return exactly `k` items, `recall@k` and `precision@k` are numerically identical. The ANN community uses "recall" by convention to make clear that exact kNN is the ground truth. +Because both result sets are size `k`, this formula is numerically identical to `precision@k`. The [ANN-benchmarks](https://ann-benchmarks.com/) community uses "recall" to make clear that exact kNN is the ground truth. **Layer 2 (retrieval relevance).** Several metrics quantify relevance against a labeled ground truth. [Precision@k](https://en.wikipedia.org/wiki/Evaluation_measures_(information_retrieval)#Precision_at_k) is based on the number of relevant documents in the top-k. [Mean Reciprocal Rank (MRR)](https://en.wikipedia.org/wiki/Mean_reciprocal_rank) takes into account the position of the first relevant document. [DCG and NDCG](https://en.wikipedia.org/wiki/Discounted_cumulative_gain) are based on the relevance score of the documents. From ebe01452d6f262ea682566fee04f83a350f57164 Mon Sep 17 00:00:00 2001 From: Dylan Couzon Date: Wed, 22 Apr 2026 22:43:02 -0400 Subject: [PATCH 30/64] retrieval-quality-fundamentals: cite Evan Miller on A/B integrity Back the "pre-register the decision rule" advice with a link to Evan Miller's "How Not to Run an A/B Test," which is the canonical reference for why post-hoc decisions and peeking wreck A/B validity. Addresses mrscoopers' ask to support the advice with external resources. Co-Authored-By: Claude Opus 4.7 (1M context) --- .../retrieval-quality-fundamentals.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-fundamentals.md b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-fundamentals.md index 43a7eb52f..c13aaa69e 100644 --- a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-fundamentals.md +++ b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-fundamentals.md @@ -39,7 +39,7 @@ Each layer is necessary but not sufficient. A win at layer 2 that doesn't carry **Proxy KPIs for teams without A/B infrastructure.** A/B design for RAG and agentic systems is still evolving, and most teams don't have the traffic or tooling for a proper A/B regardless. Cheap production signals that correlate with business value (click position on surfaced results, answer copy or share rate, session-level task completion, thumbs-up/down) can be instrumented long before a formal experimentation platform exists, and sit usefully between the golden-set layer and the full A/B. -**Pre-register the decision rule.** Before running the A/B, write down what constitutes a win and what constitutes a no-ship, in terms of both the retrieval metric and the KPI. This is the highest-leverage discipline for avoiding "recall improved but the KPI didn't, the KPI is noisy, let's ship anyway" rationalization. +**Pre-register the decision rule.** Before running the A/B, write down what constitutes a win and what constitutes a no-ship, in terms of both the retrieval metric and the KPI. This is the highest-leverage discipline for avoiding "recall improved but the KPI didn't, the KPI is noisy, let's ship anyway" rationalization. See Evan Miller's [How Not to Run an A/B Test](https://www.evanmiller.org/how-not-to-run-an-ab-test.html) on why post-hoc decisions wreck A/B integrity. **Tooling.** For layer 1, the Qdrant Web UI ships with a Search Quality tab that measures ANN vs exact kNN without code (see [Measuring ANN Precision](/documentation/tutorials-search-engineering/retrieval-quality/)). For layer 2, [ranx](https://amenra.github.io/ranx/) is the standard Python library for ranking metrics (recall@k, MRR, NDCG@k, and others). For layer 3, the ecosystem has mature tooling like [Ragas](https://docs.ragas.io/), [Arize Phoenix](https://phoenix.arize.com/), and [DeepEval](https://docs.confident-ai.com/) for LLM-as-judge scoring and offline answer-quality eval. From ecddc5c65adebf73fd65f52747896da17dc8b943 Mon Sep 17 00:00:00 2001 From: Dylan Couzon Date: Wed, 22 Apr 2026 22:52:20 -0400 Subject: [PATCH 31/64] retrieval-quality-fundamentals: drop Evan Miller citation The 2010 piece is too aged to serve as the credibility anchor this paragraph needs, and the other prescriptive bullets in this section don't cite external sources either. Keeping the advice prose-only for consistency. Co-Authored-By: Claude Opus 4.7 (1M context) --- .../retrieval-quality-fundamentals.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-fundamentals.md b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-fundamentals.md index c13aaa69e..43a7eb52f 100644 --- a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-fundamentals.md +++ b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-fundamentals.md @@ -39,7 +39,7 @@ Each layer is necessary but not sufficient. A win at layer 2 that doesn't carry **Proxy KPIs for teams without A/B infrastructure.** A/B design for RAG and agentic systems is still evolving, and most teams don't have the traffic or tooling for a proper A/B regardless. Cheap production signals that correlate with business value (click position on surfaced results, answer copy or share rate, session-level task completion, thumbs-up/down) can be instrumented long before a formal experimentation platform exists, and sit usefully between the golden-set layer and the full A/B. -**Pre-register the decision rule.** Before running the A/B, write down what constitutes a win and what constitutes a no-ship, in terms of both the retrieval metric and the KPI. This is the highest-leverage discipline for avoiding "recall improved but the KPI didn't, the KPI is noisy, let's ship anyway" rationalization. See Evan Miller's [How Not to Run an A/B Test](https://www.evanmiller.org/how-not-to-run-an-ab-test.html) on why post-hoc decisions wreck A/B integrity. +**Pre-register the decision rule.** Before running the A/B, write down what constitutes a win and what constitutes a no-ship, in terms of both the retrieval metric and the KPI. This is the highest-leverage discipline for avoiding "recall improved but the KPI didn't, the KPI is noisy, let's ship anyway" rationalization. **Tooling.** For layer 1, the Qdrant Web UI ships with a Search Quality tab that measures ANN vs exact kNN without code (see [Measuring ANN Precision](/documentation/tutorials-search-engineering/retrieval-quality/)). For layer 2, [ranx](https://amenra.github.io/ranx/) is the standard Python library for ranking metrics (recall@k, MRR, NDCG@k, and others). For layer 3, the ecosystem has mature tooling like [Ragas](https://docs.ragas.io/), [Arize Phoenix](https://phoenix.arize.com/), and [DeepEval](https://docs.confident-ai.com/) for LLM-as-judge scoring and offline answer-quality eval. From 340c6528ca297817aec9949665d31d61043df5ec Mon Sep 17 00:00:00 2001 From: Dylan Couzon Date: Thu, 23 Apr 2026 11:06:18 -0400 Subject: [PATCH 32/64] Clean up, tone --- .../content/tutorials/search-engineering.md | 2 +- .../documentation/tutorials-lp-overview.md | 2 +- .../retrieval-quality-fundamentals.md | 2 +- .../retrieval-quality-golden-set.md | 28 ++++++++++++------- .../retrieval-quality.md | 7 +++-- 5 files changed, 25 insertions(+), 16 deletions(-) diff --git a/qdrant-landing/content/documentation/headless/content/tutorials/search-engineering.md b/qdrant-landing/content/documentation/headless/content/tutorials/search-engineering.md index 3ff505852..d6daa777f 100644 --- a/qdrant-landing/content/documentation/headless/content/tutorials/search-engineering.md +++ b/qdrant-landing/content/documentation/headless/content/tutorials/search-engineering.md @@ -6,8 +6,8 @@ | [Collaborative Filtering](/documentation/tutorials-search-engineering/collaborative-filtering/) | Collaborative filtering using sparse embeddings. | Python | 45m | Intermediate | | [Multivector Document Retrieval](/documentation/tutorials-search-engineering/pdf-retrieval-at-scale/) | PDF RAG using ColPali and embedding pooling. | Python | 30m | Intermediate | | [Retrieval Quality Fundamentals](/documentation/tutorials-search-engineering/retrieval-quality-fundamentals/) | Understand evaluation levels and choose the right metric. | Python | 20m | Intermediate | -| [Building a Golden Query Set](/documentation/tutorials-search-engineering/retrieval-quality-golden-set/) | Generate ground truth data at scale and avoid data leakage. | Python | 40m | Intermediate | | [Measuring ANN Precision](/documentation/tutorials-search-engineering/retrieval-quality/) | Measure ANN precision with the Web UI and tune HNSW parameters. | Web UI | 15m | Intermediate | +| [Building a Golden Query Set](/documentation/tutorials-search-engineering/retrieval-quality-golden-set/) | Generate ground truth data at scale and avoid data leakage. | Python | 40m | Intermediate | | [Hybrid Search with Reranking](/documentation/tutorials-search-engineering/reranking-hybrid-search/) | Implement late interaction and sparse reranking. | Python | 40m | Intermediate | | [Semantic Search for Code](/documentation/tutorials-search-engineering/code-search/) | Navigate codebases using vector similarity. | Python | 45m | Intermediate | | [Multivectors and Late Interaction](/documentation/tutorials-search-engineering/using-multivector-representations/) | Effective use of multivector representations. | Python | 30m | Intermediate | diff --git a/qdrant-landing/content/documentation/tutorials-lp-overview.md b/qdrant-landing/content/documentation/tutorials-lp-overview.md index 103e6060d..ac6eda5c2 100644 --- a/qdrant-landing/content/documentation/tutorials-lp-overview.md +++ b/qdrant-landing/content/documentation/tutorials-lp-overview.md @@ -69,8 +69,8 @@ partition: qdrant | [Collaborative Filtering](/documentation/tutorials-search-engineering/collaborative-filtering/) | Collaborative filtering using sparse embeddings. | Python | 45m | Intermediate | | [Multivector Document Retrieval](/documentation/tutorials-search-engineering/pdf-retrieval-at-scale/) | PDF RAG using ColPali and embedding pooling. | Python | 30m | Intermediate | | [Retrieval Quality Fundamentals](/documentation/tutorials-search-engineering/retrieval-quality-fundamentals/) | Understand evaluation levels and choose the right metric. | Python | 20m | Intermediate | -| [Building a Golden Query Set](/documentation/tutorials-search-engineering/retrieval-quality-golden-set/) | Generate ground truth data at scale and avoid data leakage. | Python | 40m | Intermediate | | [Measuring ANN Precision](/documentation/tutorials-search-engineering/retrieval-quality/) | Measure ANN precision with the Web UI and tune HNSW parameters. | Web UI | 15m | Intermediate | +| [Building a Golden Query Set](/documentation/tutorials-search-engineering/retrieval-quality-golden-set/) | Generate ground truth data at scale and avoid data leakage. | Python | 40m | Intermediate | | [Reranking for Better Search](/documentation/search-precision/reranking-semantic-search/) | Use multivector representations for better ranking. | Python | 30m | Intermediate | | [Hybrid Search with Reranking](/documentation/tutorials-search-engineering/reranking-hybrid-search/) | Implement late interaction and sparse reranking. | Python | 40m | Intermediate | | [Semantic Search for Code](/documentation/tutorials-search-engineering/code-search/) | Navigate codebases using vector similarity. | Python | 45m | Intermediate | diff --git a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-fundamentals.md b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-fundamentals.md index 43a7eb52f..2ae50c5d4 100644 --- a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-fundamentals.md +++ b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-fundamentals.md @@ -29,7 +29,7 @@ The four layers aren't measured in isolation. Teams that successfully connect re | # | Layer | What it measures | Cadence | Cost | |---|---|---|---|---| | 1 | ANN precision | `Recall@k` vs exact kNN on a sampled query set | On index or embedding changes | Low | -| 2 | Retrieval relevance | `Recall@k` / `NDCG@k` vs a labeled golden set | Weekly, or on retrieval-stack changes | Low per run; **golden set is the real cost** (see next tutorial) | +| 2 | Retrieval relevance | `Recall@k` / `NDCG@k` vs a labeled golden set | Weekly, or on retrieval-stack changes | Low per run; **golden set is the real cost**| | 3 | End-to-end answer quality | LLM-as-judge or human rating on the golden set | Weekly, or on retrieval or generator changes | Moderate (LLM-judge cost × eval size) | | 4 | Business impact | Online A/B behind a flag | Per release, once offline layers pass | High (traffic, experimentation infra) | diff --git a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-golden-set.md b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-golden-set.md index 3c3a388e0..f655433fe 100644 --- a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-golden-set.md +++ b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-golden-set.md @@ -1,6 +1,6 @@ --- title: Building a Golden Query Set -weight: 5 +weight: 6 aliases: - /documentation/tutorials/retrieval-quality-golden-set/ --- @@ -10,23 +10,28 @@ aliases: | Time: 40 min | Level: Intermediate | | | |--------------|---------------------|--|----| -This tutorial covers **layer 2** of the evaluation ladder: **retrieval relevance**. Measuring how well retrieved results match real user intent requires a labeled dataset of queries paired with their expected relevant documents (commonly called a *golden query set* or *ground truth*). For layer 1 (ANN precision against exact kNN), which needs no relevance labels, use the **Search Quality** tab in the Qdrant Web UI. +This tutorial focuses on **retrieval relevance**: how well retrieved results match real user intent. +To measure retrieval relevance, you need a labeled dataset of queries paired with their expected relevant documents (commonly called a *golden query set* or *ground truth*). + +To evaluate other layers of your retrieval pipeline, see the evaluation ladder. ## Generating Queries -There are three practical approaches to building a golden set. They trade quality against cost and scale, so most teams use a mix. Pick the ones that match your resources and quality bar. +There are three practical approaches to building a golden set. Each one trades quality against cost and scale. -### 1. Human Annotation (Highest Quality, Highest Cost) +### 1. Human Annotation -Domain experts assign relevance scores on a binary (relevant / not relevant) or graded (0/1/2 or 1–5) scale. This is the cleanest approach for high-stakes applications and produces the graded labels NDCG needs. Expert time is the bottleneck, so reserve it for a small, high-value subset — the hardest queries or the ones that matter most commercially — and use the other two approaches for coverage. +Domain experts assign relevance scores on a binary (relevant / not relevant) or graded (0/1/2 or 1–5) scale. Human-labeled data produces the highest-fidelity signal and is the only practical source for graded labels, which ranking metrics like [Normalized Discounted Cumulative Gain (NDCG)](https://en.wikipedia.org/wiki/Discounted_cumulative_gain) use to reward relevant results appearing at higher positions. Expert time is the bottleneck, which typically limits this approach to a small set of high-value queries. -### 2. Real User Queries from Logs (High Realism, Requires Production Traffic) +### 2. Real User Queries from Logs -If your app records queries with click or explicit-feedback signals, sample query-document pairs directly. This captures real user intent and vocabulary, and should be your first choice once production traffic exists. Stratify sampling so rare-but-important cases aren't drowned out. For search-style traffic, that usually means query type or topic cluster. For RAG or agentic retrieval, it often means conversation turn or intent class. A few hundred labeled pairs can detect large metric differences; per-slice analysis or small ranking deltas need substantially more. Treat any number as a starting point and widen confidence intervals if the signal is noisy. +If your app records queries with click or explicit-feedback signals, sample query-document pairs directly. Log-based pairs reflect real user intent and vocabulary that synthetic queries cannot replicate, though the approach requires production traffic and a signal that maps to relevance. Frequent queries dominate uniform samples, so stratifying by query type, topic cluster, conversation turn, or intent class keeps rare-but-important cases represented. A few hundred labeled pairs typically detects large metric differences; per-slice analysis or small ranking deltas require substantially more. -### 3. LLM-Based Synthetic Generation (Scales Cheaply, Lowest Fidelity) +### 3. LLM-Based Synthetic Generation -When logs and reviewers aren't available, prompt an LLM to generate plausible queries for each document. This scales to thousands of pairs, but synthetic queries are easier to retrieve than what real users type. Frameworks such as Ragas provide ready-made testset generators if you want a maintained tool; the example below is a minimal prompt shape you can adapt to any model. +An LLM can generate plausible queries for each document. This scales to thousands of pairs cheaply, but synthetic queries are typically easier to retrieve than real user queries, which inflates offline scores relative to production behavior. Frameworks such as Ragas provide ready-made testset generators if you want a maintained tool. + +The example below prompts an LLM to produce short, realistic queries for each document, with the source document serving as the labeled relevant answer. ```python import os @@ -39,6 +44,8 @@ client = anthropic.Anthropic( ) def generate_queries_for_doc(doc_text: str, n: int = 3) -> list[str]: + # doc_text is one document from your corpus; iterate over the corpus + # to build the full golden set, with each source doc as the relevance label. response = client.messages.create( model=os.environ.get("ANTHROPIC_MODEL", "claude-sonnet-4-6"), max_tokens=256, @@ -65,9 +72,10 @@ Construct the labels as a `Qrels` object (a dict mapping query IDs to `{doc_id: from qdrant_client import QdrantClient from ranx import Qrels, Run, evaluate -client = QdrantClient("http://localhost:6333") +client = QdrantClient("http://localhost:6333") # or QdrantClient(url="https://.cloud.qdrant.io", api_key="...") for Qdrant Cloud def retrieval_run(golden_set: list, collection: str, k: int = 10) -> Run: + # Each entry: {"query_id": str, "query_vector": list[float], "labels": {doc_id: score}} run = {} for entry in golden_set: results = client.query_points( diff --git a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality.md b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality.md index 61163b835..c55e80119 100644 --- a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality.md +++ b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality.md @@ -3,7 +3,7 @@ title: Measuring ANN Precision aliases: - /documentation/tutorials/retrieval-quality/ - /documentation/beginner-tutorials/retrieval-quality/ -weight: 6 +weight: 5 --- # Measuring ANN Precision @@ -11,9 +11,10 @@ weight: 6 | Time: 15 min | Level: Intermediate | | | |--------------|---------------------|--|----| -This tutorial measures **layer 1** of the evaluation ladder, **ANN precision**: the share of Qdrant's approximate nearest-neighbor top-k that appears in the exact kNN top-k. For retrieval relevance (layer 2), see the Building a Golden Query Set tutorial. +This tutorial focuses on **ANN precision**: how closely approximate nearest-neighbor (ANN) search matches exact kNN search. +To measure ANN precision, you compare Qdrant's approximate top-k against the exact kNN top-k, then tune HNSW parameters to control the precision/latency trade-off. -We'll measure Qdrant's ANN precision with `precision@k` and tune HNSW parameters to control the precision/latency trade-off. The ANN algorithm is one of several levers that shape retrieval quality in a production pipeline, alongside the embedding model, retrieval strategy (dense, sparse, hybrid, and multi-vector), filtering, and reranking. +To evaluate other layers of your retrieval pipeline, see the evaluation ladder. ## ANN Precision From e3e051653016909f2a9d151ca1bd44358c13e92b Mon Sep 17 00:00:00 2001 From: Dylan Couzon Date: Thu, 23 Apr 2026 20:22:19 -0400 Subject: [PATCH 33/64] clean up Retrieval quality --- .../retrieval-quality.md | 31 +++++++------------ 1 file changed, 11 insertions(+), 20 deletions(-) diff --git a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality.md b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality.md index c55e80119..219e7fa6c 100644 --- a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality.md +++ b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality.md @@ -8,43 +8,34 @@ weight: 5 # Measuring ANN Precision -| Time: 15 min | Level: Intermediate | | | +| Time: 15 min | Level: Beginner | | | |--------------|---------------------|--|----| This tutorial focuses on **ANN precision**: how closely approximate nearest-neighbor (ANN) search matches exact kNN search. -To measure ANN precision, you compare Qdrant's approximate top-k against the exact kNN top-k, then tune HNSW parameters to control the precision/latency trade-off. +To measure ANN precision, you compare Qdrant's approximate top-k against the exact kNN top-k using `precision@k`, then tune HNSW parameters to trade memory and build time for higher precision. -To evaluate other layers of your retrieval pipeline, see the evaluation ladder. - -## ANN Precision - -Embedding quality sets the ceiling on search quality and is measured separately via benchmarks like [MTEB](https://huggingface.co/spaces/mteb/leaderboard). The retrieval pipeline can still underperform that ceiling: vector search engines such as Qdrant don't run pure kNN at query time but use **approximate nearest-neighbor** (ANN) algorithms for speed. ANN is faster than exact search but can return suboptimal results. **ANN precision** measures that gap. - -For a broader discussion of the full evaluation ladder (ANN quality, retrieval relevance, business impact), see [Retrieval Quality Fundamentals](/documentation/tutorials-search-engineering/retrieval-quality-fundamentals/). This tutorial measures the ANN layer with `precision@k`: the fraction of ANN's top-k results that appear in the exact kNN top-k. In ANN-benchmarks terminology this is equivalent to `recall@k`, since both searches return exactly `k` items. +To learn more about retrieval quality evaluation, see the evaluation ladder. ## Measure ANN Precision with the Web UI -Qdrant's Web UI has a Search Quality tab that measures the gap between approximate and exact search without requiring evaluation code. Open the dashboard at `http://localhost:6333/dashboard` (or your cluster's dashboard on Qdrant Cloud), navigate to your collection, and click the Search Quality tab. A run launches automatically with a default sample size of 10 queries, comparing ANN against exact kNN. +Qdrant's Web UI has a Search Quality tab that measures the gap between approximate and exact search without requiring evaluation code. Open the dashboard at `http://localhost:6333/dashboard` (or your cluster's dashboard on Qdrant Cloud), navigate to your collection, open the Search Quality tab, and click **Check Index Quality** to run the comparison. - ![Search Quality tab with default evaluation results](/documentation/tutorials/retrieval-quality/search-quality-tab.png) -The tab reports average **precision@k**. The score is typically high but not always perfect. When you need higher precision and can accept higher latency or more memory, HNSW is tunable. +The tab reports average **precision@k** (1.0 = perfect overlap; 0.95+ is typical for well-tuned HNSW). HNSW has tunable parameters that trade memory and index build time for higher precision. -## Tweaking the HNSW Parameters +## Tuning the HNSW Parameters -HNSW is a hierarchical graph where each node has a set of links to other nodes. The `m` parameter controls the number of edges per node: higher `m` means higher precision at the cost of more memory. The `ef_construct` parameter controls how many neighbours are considered during index building: higher `ef_construct` means higher precision at the cost of longer indexing time. Defaults are `m=16` and `ef_construct=100`. +HNSW is a hierarchical graph where each node has a set of links to other nodes. The `m` parameter controls the number of edges per node: higher `m` means higher precision at the cost of more memory. The `ef_construct` parameter controls how many neighbors are considered during index building: higher `ef_construct` means higher precision at the cost of longer indexing time. Defaults are `m=16` and `ef_construct=100`. For the full list of HNSW parameters, including on-disk storage and precision/memory trade-offs, see [Optimize Performance](/documentation/ops-optimization/optimize/). Toggle **advanced mode** in the Search Quality tab to tune these parameters inline. Raise `m` to 32 and `ef_construct` to 200, then run the evaluation again. - ![Search Quality advanced mode with HNSW parameters](/documentation/tutorials/retrieval-quality/search-quality-advanced.png) Precision should increase at the cost of higher build time and memory. - ![Search Quality results after HNSW tuning](/documentation/tutorials/retrieval-quality/search-quality-after-tuning.png) Tune until you hit the point that matches your quality and cost targets. @@ -53,7 +44,7 @@ Tune until you hit the point that matches your quality and cost targets. The Web UI is the fastest way to check precision interactively. For continuous integration or scripted regression tests, the Qdrant client exposes the same exact-search mode via `search_params=models.SearchParams(exact=True)`. Compare the ANN and exact top-k sets yourself and compute precision@k. -The helper below takes a list of query vectors and returns the average precision@k. Supply your own test set: a representative sample of query vectors from your workload, held out from training. +This helper takes a list of query vectors and returns the average precision@k. Use a representative sample of query vectors from your workload as your test set. ```python from qdrant_client import QdrantClient, models @@ -87,10 +78,10 @@ def avg_precision_at_k( return sum(precisions) / len(precisions) ``` -Drop it into your CI pipeline and fail the job if precision drops below a threshold after an embedding model change or index config update. +Wire it into CI and fail the job when precision falls below your target threshold. This catches regressions from embedding model swaps or index config changes before they reach production. ## Wrapping Up -Measuring ANN precision keeps HNSW tuning honest. The Search Quality tab gives you a quick interactive read; the Python helper above plugs into CI to catch regressions after embedding model changes or index config updates. +Measuring ANN precision keeps HNSW tuning honest. The Search Quality tab gives you a quick interactive read; the Python helper plugs into CI to catch regressions after embedding model changes or index config updates. -HNSW covers most workloads well and is tunable when you need higher precision. Other ANN algorithms exist, such as [IVF*](https://github.com/facebookresearch/faiss/wiki/Faiss-indexes#cell-probe-methods-indexivf-indexes), but they generally [perform worse than HNSW on quality and performance](https://nirantk.com/writing/pgvector-vs-qdrant/#correctness). +Once ANN precision is on target, the next layer is whether the retrieved results are relevant to users. See [Building a Golden Query Set](/documentation/tutorials-search-engineering/retrieval-quality-golden-set/). \ No newline at end of file From c21062782b68f7341c5452b270437367fa435208 Mon Sep 17 00:00:00 2001 From: Dylan Couzon Date: Thu, 23 Apr 2026 20:22:29 -0400 Subject: [PATCH 34/64] clean up golden set --- .../retrieval-quality-golden-set.md | 80 ++++++++++--------- 1 file changed, 44 insertions(+), 36 deletions(-) diff --git a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-golden-set.md b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-golden-set.md index f655433fe..a88cd7269 100644 --- a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-golden-set.md +++ b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-golden-set.md @@ -11,9 +11,11 @@ aliases: |--------------|---------------------|--|----| This tutorial focuses on **retrieval relevance**: how well retrieved results match real user intent. -To measure retrieval relevance, you need a labeled dataset of queries paired with their expected relevant documents (commonly called a *golden query set* or *ground truth*). +To measure retrieval relevance, you need a labeled dataset of queries paired with their expected relevant documents (commonly called a *golden query set* or *ground truth*). This tutorial covers both building that dataset and running it through Qdrant to compute relevance metrics. -To evaluate other layers of your retrieval pipeline, see the evaluation ladder. +To learn more about retrieval quality evaluation, see the evaluation ladder. + +**Prerequisites.** A Qdrant collection with your corpus indexed, an embedding model available to encode queries at evaluation time, and Python with `ranx` installed. ## Generating Queries @@ -21,52 +23,48 @@ There are three practical approaches to building a golden set. Each one trades q ### 1. Human Annotation -Domain experts assign relevance scores on a binary (relevant / not relevant) or graded (0/1/2 or 1–5) scale. Human-labeled data produces the highest-fidelity signal and is the only practical source for graded labels, which ranking metrics like [Normalized Discounted Cumulative Gain (NDCG)](https://en.wikipedia.org/wiki/Discounted_cumulative_gain) use to reward relevant results appearing at higher positions. Expert time is the bottleneck, which typically limits this approach to a small set of high-value queries. +Domain experts assign relevance scores on a binary (relevant / not relevant) or graded (0/1/2 or 1–5) scale. Human-labeled data produces the highest-fidelity signal and is the primary source for graded labels. Expert time is the bottleneck, which typically limits this approach to a small set of high-value queries. ### 2. Real User Queries from Logs -If your app records queries with click or explicit-feedback signals, sample query-document pairs directly. Log-based pairs reflect real user intent and vocabulary that synthetic queries cannot replicate, though the approach requires production traffic and a signal that maps to relevance. Frequent queries dominate uniform samples, so stratifying by query type, topic cluster, conversation turn, or intent class keeps rare-but-important cases represented. A few hundred labeled pairs typically detects large metric differences; per-slice analysis or small ranking deltas require substantially more. +Sample query-document pairs from your production logs, using clicks or explicit feedback (thumbs up/down, ratings) as the relevance signal. Real user queries capture intent and vocabulary that synthetic generation can't match, but you need enough traffic and a signal that maps to relevance. + +Balance the sample so frequent queries don't crowd out rare ones: group by query type, topic, or intent class. Start with a few hundred labeled pairs to detect large metric differences; per-slice analysis or small ranking deltas need substantially more. ### 3. LLM-Based Synthetic Generation -An LLM can generate plausible queries for each document. This scales to thousands of pairs cheaply, but synthetic queries are typically easier to retrieve than real user queries, which inflates offline scores relative to production behavior. Frameworks such as Ragas provide ready-made testset generators if you want a maintained tool. +An LLM can generate plausible queries for documents sampled from your corpus. This scales cheaply to thousands of pairs, but synthetic queries are typically easier to retrieve than real user queries, which inflates offline scores. For very large corpora, log-based sampling is often more practical. -The example below prompts an LLM to produce short, realistic queries for each document, with the source document serving as the labeled relevant answer. +The document you feed the LLM (the **source document**) becomes the relevance label for every query it generates: -```python -import os +```text +You are helping build an evaluation dataset for a search system. -import anthropic +Generate 3 realistic search queries for the document below. +Each query should be what a real user would type to find it. +Phrase queries naturally, not as paraphrases of the document. +Return only the queries, one per line. No numbering or explanation. -# Anthropic's API is one option; any LLM works. -client = anthropic.Anthropic( - api_key=os.environ.get("ANTHROPIC_API_KEY"), -) - -def generate_queries_for_doc(doc_text: str, n: int = 3) -> list[str]: - # doc_text is one document from your corpus; iterate over the corpus - # to build the full golden set, with each source doc as the relevance label. - response = client.messages.create( - model=os.environ.get("ANTHROPIC_MODEL", "claude-sonnet-4-6"), - max_tokens=256, - messages=[{ - "role": "user", - "content": ( - f"Generate {n} short, realistic search queries that would lead a user to the " - f"following document. Return only the queries, one per line.\n\n{doc_text}" - ), - }], - ) - return response.content[0].text.strip().splitlines() +Document: +{document_text} ``` +**Tune the prompt to your corpus:** + +- **Query style.** Questions for FAQ/RAG, keyword phrases for e-commerce, intent phrases for code search, or technical terms for specialist domains. +- **Count per document.** `3` is a default; tune to document length and golden-set size. +- **Persona.** A generic "user" works broadly; specialist corpora (medical, legal, technical) benefit from targeted personas. +- **Language.** Default English; state multilingual explicitly. + ## Using the Golden Set -Once queries are labeled, run each through Qdrant and compare the returned IDs against the labels. The metric to compute depends on what the labels record (see the metric-selection table). +Before running the evaluation, load your labeled queries and assemble each into an entry with a `query_id`, a `query_vector`, and `labels`. The `query_vector` comes from embedding the query text with the same model your Qdrant collection uses. The `labels` dict maps relevant doc IDs to their relevance score: for synthetic queries, the source document's ID; for human or log-based labels, the annotated relevant docs. + +Once assembled, run each query through Qdrant and compare the returned IDs against the labels. The metric to compute depends on what the labels record (see the metric-selection table). Use ranx, a Python library for ranking evaluation. It covers `recall@k`, `MRR`, `NDCG@k`, and others through a single `Qrels` / `Run` interface, and handles both binary and graded labels the same way. -Construct the labels as a `Qrels` object (a dict mapping query IDs to `{doc_id: relevance_score}`) and the Qdrant results as a `Run` (a dict mapping query IDs to `{doc_id: ranking_score}`). For binary labels, use `1` for relevant; for graded labels, use the raw 0/1/2 scores. +Construct the labels as a `Qrels` object (a dict mapping query IDs to `{doc_id: relevance_score}`) and the Qdrant results as a `Run` (a dict mapping query IDs to `{doc_id: ranking_score}`). For binary labels, use `1` for relevant; for graded labels, use the raw 0/1/2 scores. [NDCG (Normalized Discounted Cumulative Gain)](https://en.wikipedia.org/wiki/Discounted_cumulative_gain) is the standard metric when you have graded labels; it rewards relevant results appearing at higher positions. ```python from qdrant_client import QdrantClient @@ -92,20 +90,30 @@ run = retrieval_run(golden_set, collection="my_collection", k=10) metrics = evaluate(qrels, run, ["recall@10", "mrr", "ndcg@10"]) ``` -For the full metric list (Precision@k, MAP, ERR, and others), see the ranx docs. +`evaluate()` returns a dict of metric names to floats, for example: -Re-run this whenever the retrieval stack changes: new embedding model, new index config, new reranker. +```python +{"recall@10": 0.82, "mrr": 0.71, "ndcg@10": 0.76} +``` + +Higher is better on all three metrics. For the full metric list (Precision@k, MAP, ERR, and others), see the ranx docs. + +Re-run whenever the retrieval stack changes: new embedding model (which also requires re-embedding queries and re-indexing), new index config, or new reranker. In CI, compute `recall@10` against a fixed golden set and fail the job when the score drops below your target threshold. ## Pitfalls to Watch For (Data Leakage and Friends) In golden query sets, **data leakage** means any setup that makes offline metrics look better than production reality. Unlike classic train/test leakage, the issue is often evaluation design. Keep source documents in the index (they are the expected relevant answers). Focus on these risks: -**Synthetic-query unrealism.** LLMs often mirror source wording, creating easier queries than real user input. This inflates offline scores. Mitigate it by prompting for queries from users who have not seen the source, then compare synthetic and real-query distributions (length and specificity). +**Synthetic-query unrealism.** LLMs often mirror source wording, creating easier queries than real user input. This inflates offline scores. Mitigate it by instructing the LLM to generate queries as a user who hasn't seen the source document, then compare synthetic and real-query distributions (length and specificity). **Embedding-model contamination.** If your embedding model was trained on pairs overlapping with the golden set, results will look better than true generalization. For hosted models, review published training data when possible. For in-house fine-tuning, keep strict train/eval separation. -**Near-duplicate documents.** A query from document A may retrieve near-duplicate B, which is relevant but unlabeled. That makes **precision look worse** because labels are incomplete. Deduplicate before labeling (for example, cosine similarity > 0.95), or label duplicate clusters together. +**Near-duplicate documents.** A query from document A may retrieve near-duplicate B, which is relevant but unlabeled. That makes **metrics look worse** because labels are incomplete. Deduplicate before labeling (for example, cosine similarity > 0.95), or label duplicate clusters together. **Temporal drift.** If the corpus changes, queries generated from newer documents can unfairly evaluate older index snapshots. Pin a corpus snapshot for each run and regenerate the golden set after material corpus changes. -**Reviewer reproducibility.** Version the full evaluation setup: corpus snapshot, prompt, LLM version, and dedup threshold. Otherwise you cannot tell whether a later score drop is model/index regression or dataset drift. +**Setup reproducibility.** Version the full evaluation setup: corpus snapshot, prompt, LLM version, and dedup threshold. Otherwise you can't tell whether a later score drop is model/index regression or dataset drift. + +## Next Steps + +Once retrieval relevance is on target, the next layer is pipeline output quality: whether the full pipeline produces the right output when retrieval feeds into a consumer (LLM generator, ranker, or UI). See [Evaluating Pipeline Output Quality](/documentation/tutorials-search-engineering/retrieval-quality-pipeline-output/). From 54ecb5b63ca8d75ab6238de0b72e9471455cfdd7 Mon Sep 17 00:00:00 2001 From: Dylan Couzon Date: Thu, 23 Apr 2026 20:22:55 -0400 Subject: [PATCH 35/64] turn fundamentals into blog --- .../retrieval-quality-fundamentals.md | 223 +++++++++++++++--- 1 file changed, 188 insertions(+), 35 deletions(-) diff --git a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-fundamentals.md b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-fundamentals.md index 2ae50c5d4..02ecdf530 100644 --- a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-fundamentals.md +++ b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-fundamentals.md @@ -1,77 +1,230 @@ --- -title: Retrieval Quality Fundamentals +title: The Four Layers of Retrieval Evaluation weight: 4 aliases: - /documentation/tutorials/retrieval-quality-fundamentals/ --- -# Retrieval Quality Fundamentals +# The Four Layers of Retrieval Evaluation -| Time: 20 min | Level: Intermediate | | | -|--------------|---------------------|--|----| + -Retrieval quality decides what shows up in a search result. When it drops, downstream systems suffer: RAG answers hallucinate, search users bounce, and agents pick the wrong tools. Measuring it systematically is how you catch regressions from embedding model swaps, index config changes, or dataset drift before they reach production. +A team swaps embedding models. Offline recall@10 climbs from 0.71 to 0.79. They ship. A week later, the hallucination dashboard hasn't moved, session length hasn't moved, and their PM wants to know whether the migration was worth it. Nobody in the room can give a straight answer. -Before measuring retrieval quality, it's worth understanding what you're measuring. Retrieval quality operates at four distinct layers, and it's easy to optimize for the wrong one. +This scenario plays out every time a retrieval system touches production. Model swaps, index reconfigurations, chunking changes, reranker upgrades, and dataset refreshes each claim to improve quality. Most of them ship without anyone knowing, before or after, whether they did. The missing piece is a systematic way to measure retrieval quality across the full stack, from algorithmic correctness all the way to business outcomes. -The first layer is **approximate nearest-neighbor (ANN) precision**: does the approximate index return the same results as an exact nearest-neighbor search? This is a purely algorithmic question about how faithfully HNSW approximates exhaustive search. (Sparse vectors use exact matching, so this layer doesn't apply to them.) ANN precision has nothing to do with whether those results are useful to a human. +Retrieval quality operates at four distinct layers. Each one measures something different, costs something different, and fails in a different way. Teams that ship retrieval improvements with confidence tend to measure all four. Teams that can't answer the PM's question are usually optimizing one layer while flying blind on the others. -The second layer is **retrieval relevance**: of the results returned, how many are relevant to the query intent? This requires a labeled ground-truth dataset, human judgment, or LLM-as-judge scoring. A pipeline can achieve near-perfect ANN precision and still surface irrelevant documents if the embeddings are a poor fit for the task. +## The Four Layers -The third layer is **end-to-end answer quality**: does the full pipeline (retrieval plus whatever consumes it, such as an LLM, a ranker, or a recommendation surface) produce the right output? This is usually measured offline with LLM-as-judge or human rating on a labeled test set. It's downstream of retrieval but upstream of any business KPI. +Retrieval quality sits on top of embedding quality. Embedding quality is measured separately by benchmarks like [MTEB](https://huggingface.co/spaces/mteb/leaderboard), a public leaderboard for embedding models, and it sets the ceiling on every downstream metric. The four layers that follow evaluate how well the pipeline preserves that ceiling. -The fourth layer is **business impact**: does better retrieval lead to better outcomes like lower hallucination rates in downstream LLMs, higher task-completion rates, or improved user satisfaction scores? This is what stakeholders care about, but it's the hardest to measure directly. The causal chain from a vector match to a user outcome is long and easily dominated by generator behavior, UI, and other confounders, so no single offline metric is a reliable proxy for a KPI. The next section lays out common patterns for bridging this gap. +### Layer 1: Approximate Nearest-Neighbor (ANN) Precision -## Connecting the Layers in Practice +Does the approximate index return the same results an exact nearest-neighbor search would? This is a purely algorithmic question about how faithfully the index (HNSW, or whichever ANN algorithm is in use) approximates exhaustive search. Sparse vectors use exact matching, so this layer doesn't apply to them. Layer 1 has nothing to do with whether the results are useful to a human. -The four layers aren't measured in isolation. Teams that successfully connect retrieval work to business outcomes tend to build an **evaluation ladder** that runs each layer at a different cadence and cost, and uses the result of each layer to decide whether to invest effort at the next: +### Layer 2: Retrieval Relevance -| # | Layer | What it measures | Cadence | Cost | +Of the results returned, how many are relevant to the query intent? This requires a labeled ground-truth dataset, human judgment, or LLM-as-judge scoring. A pipeline can hit near-perfect ANN precision and still surface irrelevant documents when the embeddings are a poor fit for the task. + +### Layer 3: Pipeline Output Quality + +Does the full pipeline (retrieval plus whatever consumes it: an LLM, a ranker, a recommendation surface) produce the right output? This is typically measured offline with LLM-as-judge or human rating on a labeled test set, and increasingly on sampled production traffic. It's downstream of retrieval and upstream of any business KPI. + +### Layer 4: Business Impact + +Does better retrieval lead to better business outcomes: lower hallucination rates, higher task-completion rates, improved user satisfaction, lower support cost, more revenue? This is what stakeholders care about, and it's the layer most teams fail to connect back to the work they're doing. The second half of this post is dedicated to it. + +## The Evaluation Ladder + +The four layers aren't measured in isolation. Teams that connect retrieval work to business outcomes build an *evaluation ladder* that runs each layer at a different cadence and cost, and uses the result of each layer to decide whether to invest effort at the next. + +| # | Layer | What It Measures | Cadence | Cost | |---|---|---|---|---| -| 1 | ANN precision | `Recall@k` vs exact kNN on a sampled query set | On index or embedding changes | Low | -| 2 | Retrieval relevance | `Recall@k` / `NDCG@k` vs a labeled golden set | Weekly, or on retrieval-stack changes | Low per run; **golden set is the real cost**| -| 3 | End-to-end answer quality | LLM-as-judge or human rating on the golden set | Weekly, or on retrieval or generator changes | Moderate (LLM-judge cost × eval size) | -| 4 | Business impact | Online A/B behind a flag | Per release, once offline layers pass | High (traffic, experimentation infra) | +| 1 | ANN precision | `Precision@k` vs exact kNN on a sampled query set | On index or embedding changes | Low | +| 2 | Retrieval relevance | `Recall@k` or `NDCG@k` vs a labeled golden set | Weekly, or on retrieval-stack changes | Low per run; the golden set is the real cost | +| 3 | Pipeline output quality | LLM-as-judge or human rating on the golden set and on sampled production traffic | Weekly, or on retrieval or generator changes | Moderate (LLM-judge cost × eval size) | +| 4 | Business impact | Online A/B behind a flag, or proxy signals | Per release, once offline layers pass | High (traffic, experimentation infra) | -Each layer is necessary but not sufficient. A win at layer 2 that doesn't carry through to layer 3 usually means the downstream consumer (an LLM generator in RAG, a ranker in a search UI, or the prompt itself) is the bottleneck, not retrieval. This is the most useful diagnostic the ladder provides, and the reason teams shouldn't collapse layers 2 and 3 into a single score. +Each layer is necessary but not sufficient. A win at layer 2 that doesn't carry through to layer 3 usually means the downstream consumer (the LLM generator in RAG, the ranker in a search UI, the prompt itself) is the bottleneck, not retrieval. This is the most useful diagnostic the ladder provides, and it's the reason teams shouldn't collapse layers 2 and 3 into a single score. -**Isolate the component under test.** When end-to-end quality moves, hold one side fixed: evaluate retrieval with the downstream piece frozen (an LLM generator, a ranker, or the UI), and evaluate that piece with retrieval frozen. Without this, attribution collapses into guesswork and the ladder stops being diagnostic. +### Isolate the Component Under Test -**Proxy KPIs for teams without A/B infrastructure.** A/B design for RAG and agentic systems is still evolving, and most teams don't have the traffic or tooling for a proper A/B regardless. Cheap production signals that correlate with business value (click position on surfaced results, answer copy or share rate, session-level task completion, thumbs-up/down) can be instrumented long before a formal experimentation platform exists, and sit usefully between the golden-set layer and the full A/B. +When end-to-end quality moves, hold one side fixed. Evaluate retrieval with the downstream piece frozen (a specific LLM generator, a specific ranker, the current UI), and evaluate that piece with retrieval frozen. Without this discipline, attribution collapses into guesswork and the ladder stops being diagnostic. -**Pre-register the decision rule.** Before running the A/B, write down what constitutes a win and what constitutes a no-ship, in terms of both the retrieval metric and the KPI. This is the highest-leverage discipline for avoiding "recall improved but the KPI didn't, the KPI is noisy, let's ship anyway" rationalization. +### Pre-Register the Decision Rule -**Tooling.** For layer 1, the Qdrant Web UI ships with a Search Quality tab that measures ANN vs exact kNN without code (see [Measuring ANN Precision](/documentation/tutorials-search-engineering/retrieval-quality/)). For layer 2, [ranx](https://amenra.github.io/ranx/) is the standard Python library for ranking metrics (recall@k, MRR, NDCG@k, and others). For layer 3, the ecosystem has mature tooling like [Ragas](https://docs.ragas.io/), [Arize Phoenix](https://phoenix.arize.com/), and [DeepEval](https://docs.confident-ai.com/) for LLM-as-judge scoring and offline answer-quality eval. +Before running the A/B, write down what counts as a win and what counts as a no-ship, in terms of both the retrieval metric and the KPI. This is the highest-leverage habit for avoiding "recall improved but the KPI didn't, the KPI is noisy, let's ship anyway" rationalization. We'll unpack the mechanics of a good decision rule in the layer 4 section. + +### Tooling + +For layer 1, the Qdrant Web UI ships with a Search Quality tab that measures ANN vs exact kNN without code (see [Measuring ANN Precision](/documentation/tutorials-search-engineering/retrieval-quality/)). For layer 2, [ranx](https://amenra.github.io/ranx/) is the standard Python library for ranking metrics (recall@k, MRR, NDCG@k, and others). For layer 3, tools like [Ragas](https://docs.ragas.io/), [Arize Phoenix](https://phoenix.arize.com/), and [DeepEval](https://docs.confident-ai.com/) cover LLM-as-judge scoring and offline answer-quality evaluation. Layer 4 tooling is a different category (experimentation platforms like Statsig, Eppo, or GrowthBook; product analytics like Amplitude, Mixpanel, or PostHog; LLM observability for production quality monitoring), covered in the layer 4 section. ## Quality Metrics Different layers call for different metrics. The right choice depends on what the pipeline does with its results and what ground truth is available. -**Layer 1 (ANN precision).** The question is simple: of the `k` true nearest neighbors an exact search would return, how many did the approximation find? That fraction is **`recall@k`**: +**Layer 1 (ANN precision).** The question is simple: of the `k` true nearest neighbors an exact search would return, how many did the approximation find? That fraction is **`precision@k`**: -`recall@k = |ANN results ∩ exact results| / k` +`precision@k = |ANN results ∩ exact results| / k` -Because both result sets are size `k`, this formula is numerically identical to `precision@k`. The [ANN-benchmarks](https://ann-benchmarks.com/) community uses "recall" to make clear that exact kNN is the ground truth. +Because both result sets are size `k`, precision and recall collapse to the same formula, and some literature (notably [ANN-benchmarks](https://ann-benchmarks.com/)) calls this `recall@k` to emphasize that exact kNN is the ground truth. -**Layer 2 (retrieval relevance).** Several metrics quantify relevance against a labeled ground truth. [Precision@k](https://en.wikipedia.org/wiki/Evaluation_measures_(information_retrieval)#Precision_at_k) is based on the number of relevant documents in the top-k. [Mean Reciprocal Rank (MRR)](https://en.wikipedia.org/wiki/Mean_reciprocal_rank) takes into account the position of the first relevant document. [DCG and NDCG](https://en.wikipedia.org/wiki/Discounted_cumulative_gain) are based on the relevance score of the documents. +**Layer 2 (retrieval relevance).** Several metrics quantify relevance against a labeled ground truth. [Precision@k](https://en.wikipedia.org/wiki/Evaluation_measures_(information_retrieval)#Precision_at_k) counts relevant documents in the top-k. [Mean Reciprocal Rank (MRR)](https://en.wikipedia.org/wiki/Mean_reciprocal_rank) accounts for the position of the first relevant document. [DCG and NDCG](https://en.wikipedia.org/wiki/Discounted_cumulative_gain) weight by graded relevance score. ### Choosing the Right Metric -The table below is a starting point, not a prescription: pick the metric that matches your ground truth and your user-visible behavior. +The table is a starting point, not a prescription. Pick the metric that matches your ground truth and your user-visible behavior. -| Scenario | Recommended metric | Ground truth | Why | +| Scenario | Recommended Metric | Ground Truth | Why | |---|---|---|---| -| Tuning HNSW parameters | `Recall@k` | Exact kNN search | Approximation manifests as missed items from the true top-k set, so set-overlap against exact search is the quantity that changes with index parameters | +| Tuning HNSW parameters | `Precision@k` | Exact kNN search | Approximation manifests as missed items from the true top-k set, so set-overlap against exact search is the quantity that changes with index parameters | | RAG pipeline (LLM reads top-k chunks) | `Recall@k` | Labeled relevant chunks | The LLM can recover if a relevant doc is at position 3 vs 1; missing it entirely hurts more | | Single-answer retrieval (FAQ, Q&A) | `MRR` or `Hits@1` | Labeled correct answer | The first result is what the user acts on; lower ranks matter little | -| Re-ranking or recommendation feeds | `NDCG@k` | Graded relevance labels (e.g. 0/1/2) | Order within the result list matters; a highly relevant doc at rank 5 is worse than at rank 1 | - -Note that `Recall@k` appears twice with different ground truths: against exact kNN when tuning the index, against labeled data when evaluating the pipeline end-to-end. They share a formula but answer different questions. +| Re-ranking or recommendation feeds | `NDCG@k` | Graded relevance labels (for example, 0/1/2) | Order within the result list matters; a highly relevant doc at rank 5 is worse than at rank 1 | On choosing `k`: set it to match actual usage. If the application shows 5 results to the user, measure `@5`. If a RAG pipeline passes 10 chunks to the LLM, measure `@10`. Reporting `@100` for a UI that surfaces 5 results makes the metric look artificially good. -`NDCG` is worth the added complexity only when you have **graded relevance labels** (for example 0/1/2 scores per query-document pair rather than binary relevant/not-relevant) and when the downstream system benefits from fine-grained ranking. Without multi-grade annotations, the simpler metrics give a cleaner signal with less labeling overhead. +`NDCG` is worth the added complexity only when you have **graded relevance labels** (for example, 0/1/2 scores per query-document pair rather than binary relevant/not-relevant) and when the downstream system benefits from fine-grained ranking. Without multi-grade annotations, the simpler metrics give a cleaner signal with less labeling overhead. -## Next Steps +## Layer 4 in Depth: Connecting Retrieval to Business Outcomes -To build a labeled dataset for relevance evaluation, see [Building a Golden Query Set](/documentation/tutorials-search-engineering/retrieval-quality-golden-set/). To measure and tune the ANN precision of a Qdrant collection in practice, see [Measuring ANN Precision](/documentation/tutorials-search-engineering/retrieval-quality/). +### Why Layer 4 Is Different + +The first three layers are engineering questions with technical ground truth. ANN precision has exact kNN as its oracle. Retrieval relevance has a labeled golden set. Pipeline output quality has a judge (LLM or human) scoring outputs against expected answers. You can iterate on these layers in a notebook. + +Layer 4 is different. The "right" answer is a business outcome, the "ground truth" is user behavior in aggregate, and the measurement happens in production under noise that has nothing to do with retrieval: seasonality, UX changes, generator drift, competitor moves, traffic-mix shifts. An offline win can fail to move a KPI for reasons that aren't the retrieval team's fault: + +- **Generator dominance.** If the downstream LLM is already strong enough to compensate for mediocre retrieval, better retrieval doesn't move answer quality. This is common in RAG pipelines built on frontier models. +- **Ceiling effects.** If 90% of queries already have the right answer in the top 3, pushing recall@10 from 0.88 to 0.92 barely touches the KPI. The wins live in the long tail, which moves slowly. +- **Traffic dilution.** If a change only affects 5% of queries (say, long-tail non-English ones), it won't show up in a top-line metric averaged over all traffic. Slice the evaluation or the signal vanishes. +- **User adaptation.** Users who've learned to work around poor search reformulate multiple times. Better retrieval means fewer reformulations, which can look like lower engagement in some metrics. + +And a KPI can move without an offline win: novelty effects in the first week of an A/B, confounds with a simultaneous UI change, seasonality, or statistical noise on a low-traffic surface. Layer 4 measurement is the practice of telling these apart. + +### Pick the Right KPI for the Product Shape + +No single KPI captures "retrieval is working." The right KPI depends on what retrieval is *for*. The following table maps common application shapes to the metrics that correlate with user value, with a note on which are leading (respond quickly to retrieval changes) vs lagging (take weeks or months to move). + +| Application | Candidate KPIs | Leading / Lagging | +|---|---|---| +| RAG / Q&A | Answer-accepted rate, hallucination rate on sampled traffic, follow-up-question rate, source-click rate, regeneration rate | Leading: regeneration, follow-ups. Lagging: retention, NPS | +| Search UI | CTR@1, abandonment rate, reformulation rate, satisfied-session rate, time-to-first-click | Leading: all of these. Lagging: retention, repeat usage | +| Agentic | Task-completion rate, tool-selection accuracy, steps-to-completion, human-in-the-loop intervention rate | Leading: step count, tool accuracy. Lagging: cost per completed task, retention | +| Recommendations | Engagement rate, diversity-adjusted engagement, downstream conversion, long-term retention | Leading: engagement. Lagging: retention, LTV | + +Pick one or two leading KPIs and one lagging KPI. Leading KPIs tell you whether the change is working. Lagging KPIs tell you whether the work matters. + +### Guardrail Metrics + +A KPI win is only real if it doesn't break something else. Retrieval changes commonly trade against: + +- **Latency.** A larger `k`, a heavier reranker, or a multi-vector query can add tens of milliseconds to p95. On a chat surface, 80 ms of added latency can erase a 2-point gain on any quality metric. +- **Cost per query.** Reranker calls, LLM judges in production, and denser index configurations all raise the per-query bill. A recall improvement that doubles inference cost is rarely worth shipping at scale. +- **Index size and memory footprint.** A second vector space or higher-dimensional embeddings can multiply RAM. Qdrant's quantization and tiered storage exist because this trade-off is real. +- **Slice performance.** Top-line recall can rise while long-tail queries, non-English queries, or specific customer segments regress. Evaluate the relevant slices, not the average alone. +- **Safety and refusal rates.** In RAG, better retrieval sometimes surfaces content the system shouldn't answer from. Track refusal and unsafe-output rates alongside quality. + +Write the guardrails into the decision rule before the A/B runs. A change that lifts the KPI by 1% but bumps p95 latency by 60 ms and doubles index cost is a no-ship in most organizations, and arguing about that after the test is how regressions slip in. + +### Proxy Signals When You Can't A/B + +Most teams building retrieval systems don't have a proper experimentation platform. A/B design for RAG and agentic systems is still evolving, and even at companies with Statsig, Eppo, or GrowthBook wired up, getting statistical power on a low-traffic surface can take weeks. Proxy signals bridge the gap. They're cheap to instrument and correlate reliably enough with value to catch big regressions and big wins. + +The minimum viable instrumentation: + +- **Explicit feedback.** Thumbs up / thumbs down on each answer or result. Noisy per query, meaningful in aggregate. +- **Implicit quality signals.** Copy-to-clipboard, share, save, export actions. Much stronger than thumbs because they carry intent. +- **Regeneration rate.** The fraction of users who re-ask, click regenerate, or rephrase within a short window. A drop in regeneration rate after a retrieval change is one of the cleanest leading indicators for RAG. +- **Source-click rate.** In RAG, what fraction of users click through to the retrieved source? If retrieval is surfacing the right source, users verify more often. +- **Dwell and session structure.** Time on answer, number of follow-ups, session length. Blunt but cheap. +- **Abandonment.** Fraction of sessions that end without any positive signal. The strongest negative indicator. + +Build these into production telemetry before you need them. They're far cheaper to add early than to retrofit during an incident. + +### Close the Offline-Online Loop + +The single most useful exercise for a team serious about retrieval evaluation is calibrating the transfer function from offline wins to online movement. Run a handful of paired measurements: when offline recall@10 went up by 5 points, did the KPI move? By how much? Over how long? + +After three or four paired measurements, patterns emerge: + +- **The slope.** How much offline win translates to how much online movement. This is team- and product-specific; there's no industry constant. +- **The threshold.** Below some offline delta (typically 2 to 3 points on recall@10 in RAG), online noise swamps the signal. Stop running A/Bs below this threshold and batch changes instead. +- **The lag.** How long after launch the KPI moves. Two weeks is typical; a month isn't unusual for lagging metrics. + +Once calibrated, offline becomes a credible predictor of online impact, and the PM question ("is this worth shipping?") gets a defensible answer instead of a shrug. Until calibrated, offline wins are unfalsifiable and no amount of layer 2 and 3 polish buys trust with the business. + +### Experiment Design for Retrieval A/Bs + +Retrieval experiments have their own failure modes worth naming: + +- **Unit of randomization.** User is usually right. Session works for anonymous surfaces. Per-query randomization is almost always wrong for RAG: the same user getting different retrieval within a conversation produces incoherent experiences and breaks attribution. +- **Minimum detectable effect.** Retrieval A/Bs are chronically underpowered. If the KPI sits on a 3% baseline with high variance, detecting a 0.5 pp absolute change at 80% power may need millions of sessions. Check this *before* running the test. An underpowered test that shows "no effect" hasn't ruled anything out. +- **Novelty effects.** The first few days of any change show an effect that isn't the steady-state effect, in either direction. Run for at least two weeks, longer for low-traffic surfaces. Bake a minimum runtime into the decision rule. +- **Freeze the other side.** If the A/B is a retrieval change, don't ship a prompt change, a model swap, or a UI tweak during the same window. If you must, the attribution is compromised. Say so. +- **Simpson's paradox by query segment.** A retrieval change can lift the average while regressing on specific query types (short queries, non-English, ambiguous intents). Pre-register the slices that matter and check each one. +- **Interaction with the generator.** In RAG, a retrieval win is only real if the generator can use it. Evaluate on the generator you ship, not the strongest frontier model in a notebook. + +### When You Can't A/B at All + +Many retrieval systems run on traffic that's too low, too heterogeneous, or too sensitive for a conventional A/B. Alternatives that preserve some of the rigor: + +- **Interleaving.** Mix results from two retrieval systems in the same ranked list and track which side users click. Far more statistically efficient than A/B for ranking changes. +- **Side-by-side blind evaluation.** Show two variants of the same answer or result list to raters (internal, external, or the users themselves) and collect preferences. Works well for RAG where subjective answer quality dominates. +- **Shadow traffic.** Run the new retrieval path in parallel with production, don't serve it to users, and compare offline. Doesn't give a KPI answer but surfaces regressions safely. +- **Pre/post with guardrails.** If traffic is stable enough, launch the change for everyone and watch the metrics move. This is weak inference, so only do it with a strong rollback plan and heavy pre-registered guardrails. +- **Moderated user studies.** Small-n, high-signal. Best for catching user-experience regressions that metrics miss. +- **Expert review panels.** Domain experts score results on a rubric. Expensive per sample, valuable when user behavior is a poor proxy for quality (medical, legal, financial retrieval). + +Match the method to the risk. Shadow traffic for "is this safe?" Interleaving for ranking. Expert panels for compliance-sensitive domains. A/B only when you have traffic to spend. + +### Anatomy of a Decision Rule + +A good decision rule is a document, written before the experiment starts, that specifies: + +1. **Primary KPI and expected direction.** Which metric decides the ship. +2. **Minimum effect size.** Below what delta the result is "flat" and not a win, regardless of statistical significance. +3. **Guardrails.** Which metrics must not regress, and by how much. +4. **Slices.** Which query or user segments get checked independently. +5. **Minimum runtime and sample size.** When the test is allowed to stop. +6. **Ship / no-ship / iterate criteria.** What combination of results leads to which decision. +7. **What happens if the KPI moves but the offline metric didn't, or vice versa.** The hardest case to handle under pressure and the most common. + +The reason to write it down is that once results are in, everyone develops opinions about which metric is "really" important. Pre-registration is a commitment device against motivated reasoning. Review it. Agree on it. Sign it. Then run the test. + +### The Organizational Pattern + +The evaluation ladder is also an interface contract between teams. The common pattern in mature organizations: + +- **Retrieval engineers own layers 1 and 2.** Index configuration, embedding choice, chunking, hybrid strategies. Their deliverable is a retrieval system that hits a target on the golden set. +- **Applied ML or evaluation engineers own layer 3.** LLM-as-judge infrastructure, golden-set curation, pipeline-output measurement across the full stack. +- **Product and analytics own layer 4.** KPI definition, experimentation platform, A/B analysis, business attribution. + +The common failure mode is gaps at the handoffs. Retrieval engineers report recall wins that never get scored end-to-end. Evaluation engineers report answer-quality wins that never make it into an A/B. PMs run A/Bs that can't be attributed back to a specific retrieval change. The evaluation ladder is how those handoffs get made explicit, with a shared set of metrics and a shared cadence. + +Teams that skip layers fail in predictable ways. Skipping layer 2 means every layer 3 regression is a mystery. Skipping layer 3 means shipping retrieval wins that don't help the user. Skipping layer 4 means shipping changes that feel good to the engineering team but don't move the business. Skipping layer 1 means chasing relevance problems that are really index-tuning problems in disguise. + +### The Hard Case: Offline Wins, Flat KPI + +This is the scenario at the top of the post, and it's the one worth thinking through most carefully. Offline recall is up. The KPI is flat. What do you do? + +The answer depends on why. Work through the possibilities in order: + +1. **Is the test powered?** Check the minimum detectable effect first. If the KPI can't detect a change of this size at this traffic level, "flat" means "we didn't measure it," not "there was no effect." Rerun with more traffic or batch the change with others. +2. **Is the KPI leading or lagging?** If you're measuring retention on a two-week A/B, the signal may not have arrived yet. Check leading indicators (regeneration rate, follow-up rate, reformulation rate) for movement. +3. **Is the downstream component dominating?** If the generator is strong enough to compensate for mediocre retrieval, retrieval wins disappear. Re-run the layer 3 evaluation with a weaker generator to confirm. This is useful information: it means retrieval isn't the bottleneck, and further investment should shift to the generator or the surface. +4. **Is the win concentrated in a slice that's invisible in the aggregate?** Check long-tail queries, specific languages, specific user cohorts. A 20% lift on 3% of queries is a real win even if the overall KPI doesn't move. +5. **Is the offline metric measuring the wrong thing?** If recall went up but the retrieved items are still the wrong ones for the task, the golden set is miscalibrated. Re-examine the labels. +6. **Is it genuinely a non-improvement?** Sometimes the answer is yes. This is why pre-registration exists. A shrug and a ship is how drift accumulates. + +A team that can walk this list with a straight face, on the record, after every test, is a team that knows what its retrieval system does. + +## Closing Argument + +Retrieval systems are infrastructure that touch every AI feature a team ships. They get swapped, tuned, and replaced constantly. Without a measurement discipline across the four layers, those changes land blind, regressions accumulate, and the gap between "the retrieval team is busy" and "the product is getting better" widens until someone has to justify the work to a skeptical exec and can't. + +The four-layer ladder is the cheapest version of that discipline. Layer 1 catches index regressions. Layer 2 catches relevance regressions. Layer 3 catches output-quality regressions. Layer 4 catches the wins and losses that matter. Run each at its right cadence, connect the results, and the PM's question ("was the migration worth it?") becomes a defensible answer instead of a shrug. + +Qdrant is built around the same principle at the engine level. Retrieval primitives (dense vectors, sparse vectors, metadata filters, multi-vector representations, custom scoring) are exposed as composable decisions so engineers can tune for the quality metric that matters on their surface. Qdrant powers retrieval at Canva, Tripadvisor, HubSpot, Bosch, and others, from billion-scale user-generated content to domain-specific enterprise RAG. The ladder doesn't depend on any particular engine, and it's easier to run when the one you're on gives you enough control to move each layer on purpose. + +To measure and tune the ANN precision of a Qdrant collection in practice, see [Measuring ANN Precision](/documentation/tutorials-search-engineering/retrieval-quality/). To build a labeled dataset for relevance evaluation, see [Building a Golden Query Set](/documentation/tutorials-search-engineering/retrieval-quality-golden-set/). To score pipeline output quality on that golden set, see [Evaluating Pipeline Output Quality](/documentation/tutorials-search-engineering/retrieval-quality-pipeline-output/). From 7a4129be1ed3fb3ce773815a653f6181681dda15 Mon Sep 17 00:00:00 2001 From: Dylan Couzon Date: Thu, 23 Apr 2026 20:23:10 -0400 Subject: [PATCH 36/64] add third guide + update indices --- .../content/tutorials/search-engineering.md | 5 +- .../retrieval-quality-pipeline-output.md | 127 ++++++++++++++++++ 2 files changed, 130 insertions(+), 2 deletions(-) create mode 100644 qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-pipeline-output.md diff --git a/qdrant-landing/content/documentation/headless/content/tutorials/search-engineering.md b/qdrant-landing/content/documentation/headless/content/tutorials/search-engineering.md index d6daa777f..5dd24d102 100644 --- a/qdrant-landing/content/documentation/headless/content/tutorials/search-engineering.md +++ b/qdrant-landing/content/documentation/headless/content/tutorials/search-engineering.md @@ -5,9 +5,10 @@ | [Relevance Feedback](/documentation/tutorials-search-engineering/using-relevance-feedback/) | Relevance Feedback Retrieval in Qdrant | Python | 30m | Intermediate | | [Collaborative Filtering](/documentation/tutorials-search-engineering/collaborative-filtering/) | Collaborative filtering using sparse embeddings. | Python | 45m | Intermediate | | [Multivector Document Retrieval](/documentation/tutorials-search-engineering/pdf-retrieval-at-scale/) | PDF RAG using ColPali and embedding pooling. | Python | 30m | Intermediate | -| [Retrieval Quality Fundamentals](/documentation/tutorials-search-engineering/retrieval-quality-fundamentals/) | Understand evaluation levels and choose the right metric. | Python | 20m | Intermediate | -| [Measuring ANN Precision](/documentation/tutorials-search-engineering/retrieval-quality/) | Measure ANN precision with the Web UI and tune HNSW parameters. | Web UI | 15m | Intermediate | +| [Retrieval Quality Fundamentals](/documentation/tutorials-search-engineering/retrieval-quality-fundamentals/) | Understand evaluation levels and choose the right metric. | Python | 20m | Beginner | +| [Measuring ANN Precision](/documentation/tutorials-search-engineering/retrieval-quality/) | Measure ANN precision with the Web UI and tune HNSW parameters. | Web UI | 15m | Beginner | | [Building a Golden Query Set](/documentation/tutorials-search-engineering/retrieval-quality-golden-set/) | Generate ground truth data at scale and avoid data leakage. | Python | 40m | Intermediate | +| [Evaluating Pipeline Output Quality](/documentation/tutorials-search-engineering/retrieval-quality-pipeline-output/) | Score a RAG pipeline with Ragas and isolate retrieval vs generation failures. | Python | 45m | Intermediate | | [Hybrid Search with Reranking](/documentation/tutorials-search-engineering/reranking-hybrid-search/) | Implement late interaction and sparse reranking. | Python | 40m | Intermediate | | [Semantic Search for Code](/documentation/tutorials-search-engineering/code-search/) | Navigate codebases using vector similarity. | Python | 45m | Intermediate | | [Multivectors and Late Interaction](/documentation/tutorials-search-engineering/using-multivector-representations/) | Effective use of multivector representations. | Python | 30m | Intermediate | diff --git a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-pipeline-output.md b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-pipeline-output.md new file mode 100644 index 000000000..9d1959657 --- /dev/null +++ b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-pipeline-output.md @@ -0,0 +1,127 @@ +--- +title: Evaluating Pipeline Output Quality +weight: 7 +aliases: + - /documentation/tutorials/retrieval-quality-pipeline-output/ +--- + +# Evaluating Pipeline Output Quality + +| Time: 45 min | Level: Intermediate | | | +|--------------|---------------------|--|----| + +This tutorial focuses on **pipeline output quality**: whether the full retrieval pipeline produces the right output once retrieved results reach a consumer, most often an LLM generator in a RAG system. +To measure pipeline output quality, you run your golden query set through the full pipeline, capture each `(question, retrieved_context, answer)` triple, and score the triples against judgment metrics like faithfulness, answer relevancy, and context precision. + +To learn more about retrieval quality evaluation, see the evaluation ladder. + +**Prerequisites.** A Qdrant collection with your corpus indexed, a labeled golden set (see [Building a Golden Query Set](/documentation/tutorials-search-engineering/retrieval-quality-golden-set/)), LLM access for both generation and judging, and Python with `ragas` installed. + +## Wiring the RAG Pipeline + +Layer 3 reuses the same golden set you built for layer 2, but it runs each query through the full pipeline instead of stopping at Qdrant's response. For every golden query, retrieve the top-k chunks from Qdrant, pass them into the generator with a grounding prompt, and record what the generator returned. + +The prompt is the seam between retrieval and generation, so keep it framework-agnostic and write it down as a plain-text artifact you can version: + +```text +You are answering questions using retrieved source material. + +Answer the question below using only the provided context. +If the context does not contain the answer, say so explicitly. +Do not rely on outside knowledge. + +Context: +{retrieved_context} + +Question: +{question} +``` + +Run the loop and assemble one evaluation sample per query. Each sample carries the question, the retrieved contexts (as a list of strings in rank order), the generated answer, and the ground-truth answer if you have one. + +```python +from qdrant_client import QdrantClient + +client = QdrantClient("http://localhost:6333") # or QdrantClient(url="https://.cloud.qdrant.io", api_key="...") for Qdrant Cloud + +def build_eval_set(golden_set: list, collection: str, k: int = 10) -> list: + samples = [] + for entry in golden_set: + results = client.query_points( + collection_name=collection, + query=entry["query_vector"], + limit=k, + ).points + contexts = [p.payload["text"] for p in results] + answer = generate_answer(entry["question"], contexts) # your LLM call + samples.append({ + "question": entry["question"], + "contexts": contexts, + "answer": answer, + "ground_truth": entry.get("ground_truth", ""), + }) + return samples +``` + +`generate_answer` is your own generator call, filled from the prompt template. Keep it in its own function so you can swap the model or the prompt without touching the evaluation code. + +## Scoring with Ragas + +Ragas is a Python library for evaluating RAG outputs with LLM-as-judge metrics. Three metrics cover the common failure modes for layer 3: + +- **`faithfulness`** checks whether the answer only makes claims supported by the retrieved context. It drops when the generator hallucinates or leaks parametric knowledge. +- **`answer_relevancy`** checks whether the answer addresses the question. It drops when the generator pads, dodges, or drifts off-topic. +- **`context_precision`** checks whether the retrieved chunks are relevant to the ground-truth answer and ranked highly. It drops when retrieval surfaces noise that crowds out the useful chunks. + +Pass the eval samples into `evaluate()` with those three metrics: + +```python +from datasets import Dataset +from ragas import evaluate +from ragas.metrics import faithfulness, answer_relevancy, context_precision + +dataset = Dataset.from_list(samples) +scores = evaluate( + dataset, + metrics=[faithfulness, answer_relevancy, context_precision], +) +``` + +`evaluate()` returns a result object whose aggregate scores look like this: + +```python +{"faithfulness": 0.88, "answer_relevancy": 0.81, "context_precision": 0.74} +``` + +Higher is better on all three. Inspect the per-sample scores to find the worst-scoring queries, because aggregates hide the distribution that tells you what's breaking. + +Wire this into CI against a fixed golden set and fail the job when any of the three metrics falls below its target threshold. That catches generator regressions from prompt edits, model swaps, or chunking changes before they reach production. + +Ragas isn't the only tool in this space: DeepEval has a pytest-native API that fits the CI story more directly, and teams that want full rubric control often build a small set of custom LLM-as-judge prompts instead. + +## Isolating Retrieval vs Generation + +Layer 3 and layer 2 share the same golden set on purpose: when you run them together on every evaluation run, the pair of scores is diagnostic. Pair the layer-2 `recall@10` with the layer-3 `faithfulness` for the same queries and read the 2x2: + +| Recall@10 | Faithfulness | Diagnosis | +|---|---|---| +| High | High | Ship to layer 4. | +| High | Low | Generator or prompt problem. Retrieval is surfacing the right context; something downstream (prompt, model, or temperature) is misusing it. | +| Low | Low | Fix retrieval first. The generator can't be faithful to context it never saw. | +| Low | High | Rare and worth a second look. Usually the generator is answering from parametric knowledge rather than the retrieved context, so the faithfulness score is measuring against the wrong source. | + +This split is the reason the ladder keeps layers 2 and 3 separate. Collapsing them into one end-to-end score tells you the pipeline moved, but not which half moved, so the next iteration becomes guesswork. + +## Pitfalls to Watch For + +**Judge bias.** LLM judges reward verbose, confident, or well-formatted answers even when the underlying claim is weaker. Calibrate by running a sample of outputs through human raters and comparing; if judge and human scores disagree often, adjust the rubric or swap the judge model. + +**Self-judging contamination.** Using the same model to generate and to judge inflates scores because the judge recognizes and rewards its own output style. Pick a different model family for the judge than for the generator, and record both versions in every run so score shifts can't be blamed on a silent upgrade. + +**Cost scaling.** LLM-as-judge cost grows with queries times metrics times judge calls per metric, and Ragas makes multiple judge calls per sample. A 500-query golden set with three metrics is hundreds of judge-model calls per run. Sample aggressively during iteration and reserve the full sweep for release candidates. + +**Non-RAG consumers.** Ragas metrics assume a generator output. If retrieval feeds a ranker, a recommendation surface, or a UI, swap Ragas for metrics that match the consumer: CTR and dwell time for a UI, graded rubrics for a ranker, and task-completion scores for an agent. The layer-3 method (freeze the consumer, score the end-to-end output against the golden set) stays the same; only the metric changes. + +## Next Steps + +Once pipeline output quality is on target, the final layer is business impact: whether the retrieval change moves the KPIs users and stakeholders respond to. There isn't a dedicated tutorial for layer 4, because the mechanics depend on your experimentation platform, product shape, and traffic profile. See the evaluation ladder and the layer 4 section of the same document for the methodology: proxy KPIs when you can't run an A/B, pre-registered decision rules, and experiment design for retrieval changes. From 1b93c42a9b2f423308c37b21c2a0730cc050e1b1 Mon Sep 17 00:00:00 2001 From: Dylan Couzon Date: Thu, 23 Apr 2026 20:25:11 -0400 Subject: [PATCH 37/64] update indices --- .../content/documentation/tutorials-lp-overview.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/qdrant-landing/content/documentation/tutorials-lp-overview.md b/qdrant-landing/content/documentation/tutorials-lp-overview.md index 622f63f67..5994908d4 100644 --- a/qdrant-landing/content/documentation/tutorials-lp-overview.md +++ b/qdrant-landing/content/documentation/tutorials-lp-overview.md @@ -68,9 +68,10 @@ partition: develop | [Semantic Search Basics](/documentation/tutorials-search-engineering/neural-search/) | Deploy a search service for company descriptions. | FastAPI | 30m | Beginner | | [Collaborative Filtering](/documentation/tutorials-search-engineering/collaborative-filtering/) | Collaborative filtering using sparse embeddings. | Python | 45m | Intermediate | | [Multivector Document Retrieval](/documentation/tutorials-search-engineering/pdf-retrieval-at-scale/) | PDF RAG using ColPali and embedding pooling. | Python | 30m | Intermediate | -| [Retrieval Quality Fundamentals](/documentation/tutorials-search-engineering/retrieval-quality-fundamentals/) | Understand evaluation levels and choose the right metric. | Python | 20m | Intermediate | -| [Measuring ANN Precision](/documentation/tutorials-search-engineering/retrieval-quality/) | Measure ANN precision with the Web UI and tune HNSW parameters. | Web UI | 15m | Intermediate | +| [Retrieval Quality Fundamentals](/documentation/tutorials-search-engineering/retrieval-quality-fundamentals/) | Understand evaluation levels and choose the right metric. | Python | 20m | Beginner | +| [Measuring ANN Precision](/documentation/tutorials-search-engineering/retrieval-quality/) | Measure ANN precision with the Web UI and tune HNSW parameters. | Web UI | 15m | Beginner | | [Building a Golden Query Set](/documentation/tutorials-search-engineering/retrieval-quality-golden-set/) | Generate ground truth data at scale and avoid data leakage. | Python | 40m | Intermediate | +| [Evaluating Pipeline Output Quality](/documentation/tutorials-search-engineering/retrieval-quality-pipeline-output/) | Score a RAG pipeline with Ragas and isolate retrieval vs generation failures. | Python | 45m | Intermediate | | [Reranking for Better Search](/documentation/search-precision/reranking-semantic-search/) | Use multivector representations for better ranking. | Python | 30m | Intermediate | | [Hybrid Search with Reranking](/documentation/tutorials-search-engineering/reranking-hybrid-search/) | Implement late interaction and sparse reranking. | Python | 40m | Intermediate | | [Semantic Search for Code](/documentation/tutorials-search-engineering/code-search/) | Navigate codebases using vector similarity. | Python | 45m | Intermediate | From 0ed547e945f29562a80a18a03fc0d93f53623928 Mon Sep 17 00:00:00 2001 From: Dylan Couzon Date: Thu, 23 Apr 2026 20:37:11 -0400 Subject: [PATCH 38/64] update code snippets --- .../retrieval-quality-pipeline-output.md | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-pipeline-output.md b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-pipeline-output.md index 9d1959657..209f1fe0a 100644 --- a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-pipeline-output.md +++ b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-pipeline-output.md @@ -15,7 +15,7 @@ To measure pipeline output quality, you run your golden query set through the fu To learn more about retrieval quality evaluation, see the evaluation ladder. -**Prerequisites.** A Qdrant collection with your corpus indexed, a labeled golden set (see [Building a Golden Query Set](/documentation/tutorials-search-engineering/retrieval-quality-golden-set/)), LLM access for both generation and judging, and Python with `ragas` installed. +**Prerequisites.** A Qdrant collection with your corpus indexed and chunk text stored under a `text` payload field, a labeled golden set that also carries the raw question text and (optionally) a ground-truth answer per entry (see [Building a Golden Query Set](/documentation/tutorials-search-engineering/retrieval-quality-golden-set/)), LLM access for both generation and judging, and Python with `ragas` installed. ## Wiring the RAG Pipeline @@ -41,6 +41,7 @@ Run the loop and assemble one evaluation sample per query. Each sample carries t ```python from qdrant_client import QdrantClient +from ragas import SingleTurnSample client = QdrantClient("http://localhost:6333") # or QdrantClient(url="https://.cloud.qdrant.io", api_key="...") for Qdrant Cloud @@ -54,12 +55,12 @@ def build_eval_set(golden_set: list, collection: str, k: int = 10) -> list: ).points contexts = [p.payload["text"] for p in results] answer = generate_answer(entry["question"], contexts) # your LLM call - samples.append({ - "question": entry["question"], - "contexts": contexts, - "answer": answer, - "ground_truth": entry.get("ground_truth", ""), - }) + samples.append(SingleTurnSample( + user_input=entry["question"], + retrieved_contexts=contexts, + response=answer, + reference=entry.get("ground_truth", ""), + )) return samples ``` @@ -71,16 +72,15 @@ def build_eval_set(golden_set: list, collection: str, k: int = 10) -> list: - **`faithfulness`** checks whether the answer only makes claims supported by the retrieved context. It drops when the generator hallucinates or leaks parametric knowledge. - **`answer_relevancy`** checks whether the answer addresses the question. It drops when the generator pads, dodges, or drifts off-topic. -- **`context_precision`** checks whether the retrieved chunks are relevant to the ground-truth answer and ranked highly. It drops when retrieval surfaces noise that crowds out the useful chunks. +- **`context_precision`** checks whether the retrieved chunks are relevant to the ground-truth answer and ranked highly. It drops when retrieval surfaces noise that crowds out the useful chunks. `context_precision` compares against the `reference` field, so it only scores queries that carry a ground-truth answer. Pass the eval samples into `evaluate()` with those three metrics: ```python -from datasets import Dataset -from ragas import evaluate +from ragas import EvaluationDataset, evaluate from ragas.metrics import faithfulness, answer_relevancy, context_precision -dataset = Dataset.from_list(samples) +dataset = EvaluationDataset(samples=samples) scores = evaluate( dataset, metrics=[faithfulness, answer_relevancy, context_precision], From 0e6e3e3c5c7fe8f4afedef2e765e93c6d3677998 Mon Sep 17 00:00:00 2001 From: Dylan Couzon Date: Thu, 23 Apr 2026 21:41:16 -0400 Subject: [PATCH 39/64] golden-set final update --- .../retrieval-quality-golden-set.md | 58 +++++++++++++++---- 1 file changed, 48 insertions(+), 10 deletions(-) diff --git a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-golden-set.md b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-golden-set.md index a88cd7269..af9fea41b 100644 --- a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-golden-set.md +++ b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-golden-set.md @@ -58,13 +58,48 @@ Document: ## Using the Golden Set -Before running the evaluation, load your labeled queries and assemble each into an entry with a `query_id`, a `query_vector`, and `labels`. The `query_vector` comes from embedding the query text with the same model your Qdrant collection uses. The `labels` dict maps relevant doc IDs to their relevance score: for synthetic queries, the source document's ID; for human or log-based labels, the annotated relevant docs. +ranx is a Python library for ranking-metric evaluation. It covers the standard IR metrics (`recall@k`, `MRR`, `NDCG@k`, `Precision@k`, MAP, and others) through one consistent interface, so you don't hand-roll each metric or juggle different libraries as needs grow. -Once assembled, run each query through Qdrant and compare the returned IDs against the labels. The metric to compute depends on what the labels record (see the metric-selection table). +The evaluation runs in three steps: load the labeled queries into the shape ranx expects, run each through Qdrant, then compute metrics. -Use ranx, a Python library for ranking evaluation. It covers `recall@k`, `MRR`, `NDCG@k`, and others through a single `Qrels` / `Run` interface, and handles both binary and graded labels the same way. +**1. Load and assemble.** For each labeled query, build an entry with `query_id`, `query_vector` (embedded with the same model your Qdrant collection uses), and `labels`: -Construct the labels as a `Qrels` object (a dict mapping query IDs to `{doc_id: relevance_score}`) and the Qdrant results as a `Run` (a dict mapping query IDs to `{doc_id: ranking_score}`). For binary labels, use `1` for relevant; for graded labels, use the raw 0/1/2 scores. [NDCG (Normalized Discounted Cumulative Gain)](https://en.wikipedia.org/wiki/Discounted_cumulative_gain) is the standard metric when you have graded labels; it rewards relevant results appearing at higher positions. +```python +{ + "query_id": "q1", + "query_vector": [0.12, -0.48, 0.33, ...], # embedding of the query text + "labels": {"doc_42": 1}, # source doc for synthetic queries, relevant docs otherwise +} +``` + +Build the full `golden_set` by normalizing whatever your generation pipeline produced, then looping through it: + +```python +from your_embedding_model import embed + +# Normalize whatever your generation pipeline produced into this shape: +# - Synthetic: one item per generated query, labels = {source_doc_id: 1} +# - Logs: one item per query-click pair, labels = {clicked_doc_id: 1} +# - Human: one item per annotated query, labels = {doc_id: score, ...} +labeled_data = [ + {"query_text": "how does X work", "labels": {"doc_42": 1}}, + {"query_text": "what is Y used for", "labels": {"doc_55": 1, "doc_88": 1}}, + # ...one entry per labeled query +] + +golden_set = [] +for i, item in enumerate(labeled_data): + golden_set.append({ + "query_id": f"q{i}", + "query_vector": embed(item["query_text"]), + "labels": item["labels"], + }) +``` + +**2. Build `Qrels` and `Run`.** ranx compares two inputs, both shaped as `{query_id: {doc_id: score}}`: + +- **`Qrels`** (query relevance judgments). The labeled ground truth. Use `1` for binary labels or the raw `0/1/2` for graded labels. +- **`Run`** (retrieval output). What Qdrant returned for each query, with similarity scores. ```python from qdrant_client import QdrantClient @@ -73,7 +108,6 @@ from ranx import Qrels, Run, evaluate client = QdrantClient("http://localhost:6333") # or QdrantClient(url="https://.cloud.qdrant.io", api_key="...") for Qdrant Cloud def retrieval_run(golden_set: list, collection: str, k: int = 10) -> Run: - # Each entry: {"query_id": str, "query_vector": list[float], "labels": {doc_id: score}} run = {} for entry in golden_set: results = client.query_points( @@ -86,17 +120,21 @@ def retrieval_run(golden_set: list, collection: str, k: int = 10) -> Run: qrels = Qrels({entry["query_id"]: entry["labels"] for entry in golden_set}) run = retrieval_run(golden_set, collection="my_collection", k=10) +``` +**3. Compute metrics.** `evaluate(qrels, run, [...])` compares the two and returns a dict of metric names to floats. + +```python metrics = evaluate(qrels, run, ["recall@10", "mrr", "ndcg@10"]) ``` -`evaluate()` returns a dict of metric names to floats, for example: +`evaluate()` returns: ```python {"recall@10": 0.82, "mrr": 0.71, "ndcg@10": 0.76} ``` -Higher is better on all three metrics. For the full metric list (Precision@k, MAP, ERR, and others), see the ranx docs. +Higher is better on all three. See the metric-selection table to pick which matter for your use case. [NDCG (Normalized Discounted Cumulative Gain)](https://en.wikipedia.org/wiki/Discounted_cumulative_gain) specifically needs graded labels; for binary labels, stick with `recall@k` and `MRR`. For the full metric list (Precision@k, MAP, ERR, and others), see the ranx docs. Re-run whenever the retrieval stack changes: new embedding model (which also requires re-embedding queries and re-indexing), new index config, or new reranker. In CI, compute `recall@10` against a fixed golden set and fail the job when the score drops below your target threshold. @@ -108,11 +146,11 @@ In golden query sets, **data leakage** means any setup that makes offline metric **Embedding-model contamination.** If your embedding model was trained on pairs overlapping with the golden set, results will look better than true generalization. For hosted models, review published training data when possible. For in-house fine-tuning, keep strict train/eval separation. -**Near-duplicate documents.** A query from document A may retrieve near-duplicate B, which is relevant but unlabeled. That makes **metrics look worse** because labels are incomplete. Deduplicate before labeling (for example, cosine similarity > 0.95), or label duplicate clusters together. +**Near-duplicate documents.** Your retrieval may return a near-duplicate of a labeled document that isn't in the label set. That makes **metrics look worse** because labels are incomplete, not because retrieval is failing. A score dip here is a signal to audit your labels before tuning retrieval. Deduplicate before labeling (for example, cosine similarity > 0.95), or label duplicate clusters together. -**Temporal drift.** If the corpus changes, queries generated from newer documents can unfairly evaluate older index snapshots. Pin a corpus snapshot for each run and regenerate the golden set after material corpus changes. +**Temporal drift.** If the corpus changes after labeling, labels go stale: referenced docs may be removed or superseded by newer versions. Pin a corpus snapshot for each run and regenerate the golden set after material corpus changes. -**Setup reproducibility.** Version the full evaluation setup: corpus snapshot, prompt, LLM version, and dedup threshold. Otherwise you can't tell whether a later score drop is model/index regression or dataset drift. +**Setup reproducibility.** Version the full evaluation setup: corpus snapshot, how labels were produced, and any preprocessing thresholds. Otherwise you can't tell whether a later score drop is model/index regression or dataset drift. ## Next Steps From 5ca06869c2fa42b870d763f6d531983563ed20a9 Mon Sep 17 00:00:00 2001 From: Dylan Couzon Date: Thu, 23 Apr 2026 23:07:32 -0400 Subject: [PATCH 40/64] Improve dataset generation for next guide. --- .../retrieval-quality-golden-set.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-golden-set.md b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-golden-set.md index af9fea41b..614baa71d 100644 --- a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-golden-set.md +++ b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-golden-set.md @@ -62,12 +62,13 @@ Document: The evaluation runs in three steps: load the labeled queries into the shape ranx expects, run each through Qdrant, then compute metrics. -**1. Load and assemble.** For each labeled query, build an entry with `query_id`, `query_vector` (embedded with the same model your Qdrant collection uses), and `labels`: +**1. Load and assemble.** For each labeled query, build an entry with `query_id`, `query_text`, `query_vector` (embedded with the same model your Qdrant collection uses), and `labels`: ```python { "query_id": "q1", - "query_vector": [0.12, -0.48, 0.33, ...], # embedding of the query text + "query_text": "how does X work", + "query_vector": [0.12, -0.48, 0.33, ...], # embedding of query_text "labels": {"doc_42": 1}, # source doc for synthetic queries, relevant docs otherwise } ``` @@ -91,6 +92,7 @@ golden_set = [] for i, item in enumerate(labeled_data): golden_set.append({ "query_id": f"q{i}", + "query_text": item["query_text"], "query_vector": embed(item["query_text"]), "labels": item["labels"], }) From 07fb044ed45c800089477bc7e2f5df8bcbc0c49f Mon Sep 17 00:00:00 2001 From: Dylan Couzon Date: Thu, 23 Apr 2026 23:09:41 -0400 Subject: [PATCH 41/64] clean up tutorial 3 --- .../retrieval-quality-pipeline-output.md | 94 ++++++++++++++----- 1 file changed, 72 insertions(+), 22 deletions(-) diff --git a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-pipeline-output.md b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-pipeline-output.md index 209f1fe0a..1adc3d362 100644 --- a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-pipeline-output.md +++ b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-pipeline-output.md @@ -15,16 +15,31 @@ To measure pipeline output quality, you run your golden query set through the fu To learn more about retrieval quality evaluation, see the evaluation ladder. -**Prerequisites.** A Qdrant collection with your corpus indexed and chunk text stored under a `text` payload field, a labeled golden set that also carries the raw question text and (optionally) a ground-truth answer per entry (see [Building a Golden Query Set](/documentation/tutorials-search-engineering/retrieval-quality-golden-set/)), LLM access for both generation and judging, and Python with `ragas` installed. +**Prerequisites.** A Qdrant collection with your corpus indexed (chunk text in a `text` payload field), a labeled golden set (see [Building a Golden Query Set](/documentation/tutorials-search-engineering/retrieval-quality-golden-set/)), LLM access for generation and judging, and Python with `ragas` installed. The Wiring section shows the exact entry shape this tutorial expects. ## Wiring the RAG Pipeline -Layer 3 reuses the same golden set you built for layer 2, but it runs each query through the full pipeline instead of stopping at Qdrant's response. For every golden query, retrieve the top-k chunks from Qdrant, pass them into the generator with a grounding prompt, and record what the generator returned. +Ragas is a Python library that uses an LLM as a judge to score RAG outputs (rating each answer against criteria like faithfulness and relevancy instead of comparing to a labeled ground truth). It expects samples shaped as `(question, retrieved_context, answer)` triples, so you build a fresh evaluation set from your labeled data. Three steps: prepare the evaluation data, define a grounding prompt, and run the retrieve-generate-record loop. -The prompt is the seam between retrieval and generation, so keep it framework-agnostic and write it down as a plain-text artifact you can version: +**1. Prepare the evaluation data.** Each entry needs a `query_id`, a `query_text` (for prompting the generator), a `query_vector` (for retrieval), and `labels`. For `context_precision` only, also include a `ground_truth` reference answer. -```text -You are answering questions using retrieved source material. +```python +# Example of an evaluation-ready entry. +{ + "query_id": "q1", + "query_text": "how does X work", + "query_vector": [0.12, -0.48, 0.33, ...], + "labels": {"doc_42": 1}, + "ground_truth": "...", # optional; required for context_precision only +} +``` + +Different golden-set sources (human annotation, log sampling, or LLM synthesis) produce different raw shapes. Normalize to this structure before running the loop. + +**2. Define the grounding prompt.** The prompt is the seam between retrieval and generation. Keep it in a versioned string so you can swap models without touching the evaluation code: + +```python +PROMPT_TEMPLATE = """You are answering questions using retrieved source material. Answer the question below using only the provided context. If the context does not contain the answer, say so explicitly. @@ -34,29 +49,55 @@ Context: {retrieved_context} Question: -{question} +{query_text} +""" ``` -Run the loop and assemble one evaluation sample per query. Each sample carries the question, the retrieved contexts (as a list of strings in rank order), the generated answer, and the ground-truth answer if you have one. +**3. Run retrieval and generation.** For each entry, retrieve the top-k chunks, pass them through the generator, and record a `SingleTurnSample`. The example uses Anthropic, but any LLM provider works (OpenAI, Cohere, a local model). Only the `generate_answer` body changes: ```python +import os + +import anthropic from qdrant_client import QdrantClient from ragas import SingleTurnSample client = QdrantClient("http://localhost:6333") # or QdrantClient(url="https://.cloud.qdrant.io", api_key="...") for Qdrant Cloud +anthropic_client = anthropic.Anthropic(api_key=os.environ.get("ANTHROPIC_API_KEY")) + + +def generate_answer(query_text: str, contexts: list) -> str: + """Fill the prompt template with context + question, then call the LLM.""" + prompt = PROMPT_TEMPLATE.format( + retrieved_context="\n\n".join(contexts), + query_text=query_text, + ) + response = anthropic_client.messages.create( + model=os.environ.get("ANTHROPIC_MODEL", "claude-sonnet-4-6"), + max_tokens=512, + messages=[{"role": "user", "content": prompt}], + ) + return response.content[0].text + def build_eval_set(golden_set: list, collection: str, k: int = 10) -> list: + """For each labeled query: retrieve from Qdrant, generate an answer, package as a Ragas sample.""" samples = [] for entry in golden_set: + # Retrieve top-k chunks from Qdrant. results = client.query_points( collection_name=collection, query=entry["query_vector"], limit=k, ).points - contexts = [p.payload["text"] for p in results] - answer = generate_answer(entry["question"], contexts) # your LLM call + contexts = [p.payload["text"] for p in results] # adjust the payload key to match your schema + + # Generate an answer grounded in those chunks. + answer = generate_answer(entry["query_text"], contexts) + + # Package into a Ragas sample: question, context, answer, optional reference. samples.append(SingleTurnSample( - user_input=entry["question"], + user_input=entry["query_text"], retrieved_contexts=contexts, response=answer, reference=entry.get("ground_truth", ""), @@ -64,13 +105,13 @@ def build_eval_set(golden_set: list, collection: str, k: int = 10) -> list: return samples ``` -`generate_answer` is your own generator call, filled from the prompt template. Keep it in its own function so you can swap the model or the prompt without touching the evaluation code. +The result is a list of `SingleTurnSample` objects, one per query. Each sample carries the question, retrieved contexts, generated answer, and optional reference. The list feeds directly into Ragas's `evaluate()` in the next section. ## Scoring with Ragas -Ragas is a Python library for evaluating RAG outputs with LLM-as-judge metrics. Three metrics cover the common failure modes for layer 3: +Three Ragas metrics cover the common failure modes for pipeline output quality: -- **`faithfulness`** checks whether the answer only makes claims supported by the retrieved context. It drops when the generator hallucinates or leaks parametric knowledge. +- **`faithfulness`** checks whether the answer only makes claims supported by the retrieved context. It drops when the generator hallucinates or uses its training knowledge instead of the retrieved context. - **`answer_relevancy`** checks whether the answer addresses the question. It drops when the generator pads, dodges, or drifts off-topic. - **`context_precision`** checks whether the retrieved chunks are relevant to the ground-truth answer and ranked highly. It drops when retrieval surfaces noise that crowds out the useful chunks. `context_precision` compares against the `reference` field, so it only scores queries that carry a ground-truth answer. @@ -93,24 +134,33 @@ scores = evaluate( {"faithfulness": 0.88, "answer_relevancy": 0.81, "context_precision": 0.74} ``` -Higher is better on all three. Inspect the per-sample scores to find the worst-scoring queries, because aggregates hide the distribution that tells you what's breaking. +Higher is better on all three. Aggregates hide the distribution that tells you what's breaking, so drop into the per-query view to find the worst-scoring samples: -Wire this into CI against a fixed golden set and fail the job when any of the three metrics falls below its target threshold. That catches generator regressions from prompt edits, model swaps, or chunking changes before they reach production. +```python +per_query = scores.to_pandas() # row-per-query scores +worst = per_query.nsmallest(10, "faithfulness") +``` + +If you ship retrieval changes regularly, this evaluation earns its place in CI. Running it on every change against a fixed golden set catches generator regressions from prompt edits, model swaps, or chunking changes before they reach production. The usual pattern: set a target threshold per metric and fail the job when any score drops below. + +**Without a golden set.** `faithfulness` and `answer_relevancy` are reference-free; swap `context_precision` for `LLMContextPrecisionWithoutReference`. You can then score synthetic queries offline or sampled production traffic live, at the cost of no fixed baseline for regression gating. Ragas isn't the only tool in this space: DeepEval has a pytest-native API that fits the CI story more directly, and teams that want full rubric control often build a small set of custom LLM-as-judge prompts instead. ## Isolating Retrieval vs Generation -Layer 3 and layer 2 share the same golden set on purpose: when you run them together on every evaluation run, the pair of scores is diagnostic. Pair the layer-2 `recall@10` with the layer-3 `faithfulness` for the same queries and read the 2x2: +If you're also running [retrieval evaluation](/documentation/tutorials-search-engineering/retrieval-quality-golden-set/) against the same golden set, pairing the two scores on every run gives a diagnostic 2x2 for attributing score changes. When a metric drops after a change (new embedding model, new prompt, or new chunking strategy), the pair tells you which half of the pipeline to investigate. + +Pair `recall@10` from the retrieval evaluation with `faithfulness` from the pipeline-output evaluation. In the table, High and Low are relative to the target thresholds you set per metric. | Recall@10 | Faithfulness | Diagnosis | |---|---|---| -| High | High | Ship to layer 4. | +| High | High | Ready to ship. | | High | Low | Generator or prompt problem. Retrieval is surfacing the right context; something downstream (prompt, model, or temperature) is misusing it. | | Low | Low | Fix retrieval first. The generator can't be faithful to context it never saw. | -| Low | High | Rare and worth a second look. Usually the generator is answering from parametric knowledge rather than the retrieved context, so the faithfulness score is measuring against the wrong source. | +| Low | High | Rare. Usually means either the golden-set labels are incomplete (retrieval found useful docs the label set doesn't cover) or the generator punted with a non-committal answer that has no claims to fail on. Read a sample of per-query outputs before acting. | -This split is the reason the ladder keeps layers 2 and 3 separate. Collapsing them into one end-to-end score tells you the pipeline moved, but not which half moved, so the next iteration becomes guesswork. +This split is the reason to keep retrieval and pipeline-output evaluation separate. Collapsing them into one end-to-end score tells you the pipeline moved, but not which half moved, so the next iteration becomes guesswork. ## Pitfalls to Watch For @@ -118,10 +168,10 @@ This split is the reason the ladder keeps layers 2 and 3 separate. Collapsing th **Self-judging contamination.** Using the same model to generate and to judge inflates scores because the judge recognizes and rewards its own output style. Pick a different model family for the judge than for the generator, and record both versions in every run so score shifts can't be blamed on a silent upgrade. -**Cost scaling.** LLM-as-judge cost grows with queries times metrics times judge calls per metric, and Ragas makes multiple judge calls per sample. A 500-query golden set with three metrics is hundreds of judge-model calls per run. Sample aggressively during iteration and reserve the full sweep for release candidates. +**Cost scaling.** LLM-as-judge cost grows with queries times metrics times judge calls per metric, and Ragas makes multiple judge calls per sample. A 500-query golden set with three metrics runs into the thousands of judge-model calls per run. Sample aggressively during iteration and reserve the full sweep for release candidates. -**Non-RAG consumers.** Ragas metrics assume a generator output. If retrieval feeds a ranker, a recommendation surface, or a UI, swap Ragas for metrics that match the consumer: CTR and dwell time for a UI, graded rubrics for a ranker, and task-completion scores for an agent. The layer-3 method (freeze the consumer, score the end-to-end output against the golden set) stays the same; only the metric changes. +**Non-RAG consumers.** Ragas metrics assume a generator output. If retrieval feeds a ranker, a recommendation surface, or a UI, swap Ragas for metrics that match the consumer: CTR and dwell time for a UI, graded rubrics for a ranker, and task-completion scores for an agent. The method (freeze the consumer, score the end-to-end output against the golden set) stays the same; only the metric changes. ## Next Steps -Once pipeline output quality is on target, the final layer is business impact: whether the retrieval change moves the KPIs users and stakeholders respond to. There isn't a dedicated tutorial for layer 4, because the mechanics depend on your experimentation platform, product shape, and traffic profile. See the evaluation ladder and the layer 4 section of the same document for the methodology: proxy KPIs when you can't run an A/B, pre-registered decision rules, and experiment design for retrieval changes. +Once pipeline output quality is on target, the final step is business impact: whether the retrieval change moves the KPIs users and stakeholders respond to. There isn't a dedicated tutorial for this step, because the mechanics depend on your experimentation platform, product shape, and traffic profile. See the evaluation ladder for the methodology: proxy KPIs when you can't run an A/B, pre-registered decision rules, and experiment design for retrieval changes. From 29640488d934d7fde62814fe26aa99c2de487a00 Mon Sep 17 00:00:00 2001 From: Dylan Couzon Date: Thu, 23 Apr 2026 23:15:34 -0400 Subject: [PATCH 42/64] ann-precision: inline the four-layer framework and MTEB ceiling note Replaces the external pointer to retrieval-quality-fundamentals with a self-contained section introducing the four evaluation layers. The tutorial no longer depends on fundamentals for orientation. Co-Authored-By: Claude Opus 4.7 (1M context) --- .../tutorials-search-engineering/retrieval-quality.md | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality.md b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality.md index 219e7fa6c..785d24ac7 100644 --- a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality.md +++ b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality.md @@ -14,7 +14,16 @@ weight: 5 This tutorial focuses on **ANN precision**: how closely approximate nearest-neighbor (ANN) search matches exact kNN search. To measure ANN precision, you compare Qdrant's approximate top-k against the exact kNN top-k using `precision@k`, then tune HNSW parameters to trade memory and build time for higher precision. -To learn more about retrieval quality evaluation, see the evaluation ladder. +## The Four Layers of Retrieval Evaluation + +Retrieval quality operates at four layers. Each catches different failure modes at a different cadence and cost. This tutorial covers layer 1. + +- **Layer 1: ANN precision** (this tutorial). How closely approximate nearest-neighbor search matches exact kNN. Run on every index or embedding change. +- **Layer 2: Retrieval relevance** ([Building a Golden Query Set](/documentation/tutorials-search-engineering/retrieval-quality-golden-set/)). How well the results match query intent against a labeled dataset. Run weekly, or on retrieval-stack changes. +- **Layer 3: Pipeline output quality** ([Evaluating Pipeline Output Quality](/documentation/tutorials-search-engineering/retrieval-quality-pipeline-output/)). Whether the full pipeline (retrieval plus an LLM generator, a ranker, or a UI) produces the right output. Run weekly, or on retrieval or generator changes. +- **Layer 4: Business impact**. Whether better retrieval moves the KPIs the business cares about. Measured per release once the offline layers pass. + +Retrieval quality sits on top of embedding quality. Embedding quality is measured separately by benchmarks like [MTEB](https://huggingface.co/spaces/mteb/leaderboard) and sets the ceiling on every downstream metric. ## Measure ANN Precision with the Web UI From 1ab6ff384e414492efdefee09a4702ec95b50370 Mon Sep 17 00:00:00 2001 From: Dylan Couzon Date: Thu, 23 Apr 2026 23:16:37 -0400 Subject: [PATCH 43/64] golden-set: inline metric-selection table and choosing-k guidance Replaces the external pointer to retrieval-quality-fundamentals with an inline scenario-to-metric table plus guidance on picking k. The ladder pointer now references the four-layer section inside ANN Precision rather than the fundamentals page. Co-Authored-By: Claude Opus 4.7 (1M context) --- .../retrieval-quality-golden-set.md | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-golden-set.md b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-golden-set.md index 614baa71d..ec2f1895a 100644 --- a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-golden-set.md +++ b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-golden-set.md @@ -13,7 +13,7 @@ aliases: This tutorial focuses on **retrieval relevance**: how well retrieved results match real user intent. To measure retrieval relevance, you need a labeled dataset of queries paired with their expected relevant documents (commonly called a *golden query set* or *ground truth*). This tutorial covers both building that dataset and running it through Qdrant to compute relevance metrics. -To learn more about retrieval quality evaluation, see the evaluation ladder. +For orientation on the four layers of retrieval evaluation and where this tutorial fits, see [Measuring ANN Precision](/documentation/tutorials-search-engineering/retrieval-quality/#the-four-layers-of-retrieval-evaluation). **Prerequisites.** A Qdrant collection with your corpus indexed, an embedding model available to encode queries at evaluation time, and Python with `ranx` installed. @@ -136,7 +136,17 @@ metrics = evaluate(qrels, run, ["recall@10", "mrr", "ndcg@10"]) {"recall@10": 0.82, "mrr": 0.71, "ndcg@10": 0.76} ``` -Higher is better on all three. See the metric-selection table to pick which matter for your use case. [NDCG (Normalized Discounted Cumulative Gain)](https://en.wikipedia.org/wiki/Discounted_cumulative_gain) specifically needs graded labels; for binary labels, stick with `recall@k` and `MRR`. For the full metric list (Precision@k, MAP, ERR, and others), see the ranx docs. +Higher is better on all three. Which metric matters most depends on what your pipeline does with results: + +| Scenario | Recommended Metric | Why | +|---|---|---| +| RAG pipeline (LLM reads top-k chunks) | `Recall@k` | The LLM can recover if a relevant doc is at position 3 vs 1; missing it entirely hurts more | +| Single-answer retrieval (FAQ or Q&A) | `MRR` or `Hits@1` | The first result is what the user acts on; lower ranks matter little | +| Re-ranking or recommendation feeds | `NDCG@k` | Order within the result list matters; a highly relevant doc at rank 5 is worse than at rank 1 | + +[NDCG (Normalized Discounted Cumulative Gain)](https://en.wikipedia.org/wiki/Discounted_cumulative_gain) needs graded labels (for example, 0/1/2 scores per query-document pair). For binary labels, stick with `recall@k` and `MRR`. For the full metric list (Precision@k, MAP, ERR, and others), see the ranx docs. + +On choosing `k`: set it to match actual usage. If the application shows 5 results to the user, measure `@5`. If a RAG pipeline passes 10 chunks to the LLM, measure `@10`. Reporting `@100` for a UI that surfaces 5 results makes the metric look artificially good. Re-run whenever the retrieval stack changes: new embedding model (which also requires re-embedding queries and re-indexing), new index config, or new reranker. In CI, compute `recall@10` against a fixed golden set and fail the job when the score drops below your target threshold. From cbda4a6c9cec543cfc1f4768ec6f0dbec239a001 Mon Sep 17 00:00:00 2001 From: Dylan Couzon Date: Thu, 23 Apr 2026 23:19:17 -0400 Subject: [PATCH 44/64] pipeline-output: replace Next Steps with Connecting to Business Impact Folds the business-impact framework (KPI selection, pre-registered decision rules, offline-online calibration, proxy signals) into the tutorial so it stands alone without the external fundamentals page. The ladder pointer in the intro now references the four-layer section inside ANN Precision. Co-Authored-By: Claude Opus 4.7 (1M context) --- .../retrieval-quality-pipeline-output.md | 29 +++++++++++++++++-- 1 file changed, 26 insertions(+), 3 deletions(-) diff --git a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-pipeline-output.md b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-pipeline-output.md index 1adc3d362..742db6f02 100644 --- a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-pipeline-output.md +++ b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-pipeline-output.md @@ -13,7 +13,7 @@ aliases: This tutorial focuses on **pipeline output quality**: whether the full retrieval pipeline produces the right output once retrieved results reach a consumer, most often an LLM generator in a RAG system. To measure pipeline output quality, you run your golden query set through the full pipeline, capture each `(question, retrieved_context, answer)` triple, and score the triples against judgment metrics like faithfulness, answer relevancy, and context precision. -To learn more about retrieval quality evaluation, see the evaluation ladder. +For orientation on the four layers of retrieval evaluation and where this tutorial fits, see [Measuring ANN Precision](/documentation/tutorials-search-engineering/retrieval-quality/#the-four-layers-of-retrieval-evaluation). **Prerequisites.** A Qdrant collection with your corpus indexed (chunk text in a `text` payload field), a labeled golden set (see [Building a Golden Query Set](/documentation/tutorials-search-engineering/retrieval-quality-golden-set/)), LLM access for generation and judging, and Python with `ragas` installed. The Wiring section shows the exact entry shape this tutorial expects. @@ -172,6 +172,29 @@ This split is the reason to keep retrieval and pipeline-output evaluation separa **Non-RAG consumers.** Ragas metrics assume a generator output. If retrieval feeds a ranker, a recommendation surface, or a UI, swap Ragas for metrics that match the consumer: CTR and dwell time for a UI, graded rubrics for a ranker, and task-completion scores for an agent. The method (freeze the consumer, score the end-to-end output against the golden set) stays the same; only the metric changes. -## Next Steps +## Connecting to Business Impact -Once pipeline output quality is on target, the final step is business impact: whether the retrieval change moves the KPIs users and stakeholders respond to. There isn't a dedicated tutorial for this step, because the mechanics depend on your experimentation platform, product shape, and traffic profile. See the evaluation ladder for the methodology: proxy KPIs when you can't run an A/B, pre-registered decision rules, and experiment design for retrieval changes. +Once pipeline output quality is on target, the remaining question is whether those offline wins move the KPIs the business responds to. It's the hardest measurement to get right, but a few disciplines make it manageable without a full experimentation platform. + +### Pick KPIs That Match the Product Shape + +No single KPI captures "retrieval is working." The right one depends on what retrieval is for. Pair one or two leading KPIs (which respond quickly) with a lagging KPI (which takes weeks or months to move). + +| Application | Leading KPIs | Lagging KPIs | +|---|---|---| +| RAG or Q&A | Regeneration rate, follow-up rate, source-click rate | Retention, NPS | +| Search UI | CTR@1, abandonment rate, reformulation rate | Retention, repeat usage | +| Agentic | Step count to completion, tool-selection accuracy | Cost per completed task | +| Recommendations | Engagement rate, diversity-adjusted engagement | Retention, long-term value | + +### Pre-Register the Decision Rule + +Before running an A/B, write down what counts as a win, what counts as a no-ship, and which guardrails (latency, cost, slice performance, safety) can't regress. This is the highest-leverage habit for avoiding "the KPI is noisy, let's ship anyway" rationalization after results land. + +### Calibrate the Offline-Online Transfer Function + +Pair offline metric changes with online KPI changes over a few launches. After three or four paired measurements, patterns emerge: the slope (how much offline translates to online), the threshold (below what offline delta online noise dominates), and the lag (how long after launch the KPI moves). Until calibrated, offline wins are unfalsifiable claims. + +### Proxy Signals When You Can't A/B + +Most teams don't have a proper experimentation platform, or don't have the traffic to power a test quickly. Cheap-to-instrument signals correlate enough with value to catch big regressions and big wins: thumbs up or down on answers, regeneration rate, source-click rate, copy or share actions, and session abandonment. Build these into production telemetry before you need them. From e02bfb0bf11b6be941d81bc3e5b9e6c63a20c53b Mon Sep 17 00:00:00 2001 From: Dylan Couzon Date: Thu, 23 Apr 2026 23:22:40 -0400 Subject: [PATCH 45/64] delete retrieval-quality-fundamentals and remove from nav indexes The four-layer framework, metric-selection table, and business-impact guidance now live inside the three execution tutorials. The fundamentals page is no longer needed as a shared reference and readers don't have to leave the tutorial flow to get context. Co-Authored-By: Claude Opus 4.7 (1M context) --- .../content/tutorials/search-engineering.md | 1 - .../documentation/tutorials-lp-overview.md | 1 - .../retrieval-quality-fundamentals.md | 230 ------------------ 3 files changed, 232 deletions(-) delete mode 100644 qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-fundamentals.md diff --git a/qdrant-landing/content/documentation/headless/content/tutorials/search-engineering.md b/qdrant-landing/content/documentation/headless/content/tutorials/search-engineering.md index 5dd24d102..1ecdd6033 100644 --- a/qdrant-landing/content/documentation/headless/content/tutorials/search-engineering.md +++ b/qdrant-landing/content/documentation/headless/content/tutorials/search-engineering.md @@ -5,7 +5,6 @@ | [Relevance Feedback](/documentation/tutorials-search-engineering/using-relevance-feedback/) | Relevance Feedback Retrieval in Qdrant | Python | 30m | Intermediate | | [Collaborative Filtering](/documentation/tutorials-search-engineering/collaborative-filtering/) | Collaborative filtering using sparse embeddings. | Python | 45m | Intermediate | | [Multivector Document Retrieval](/documentation/tutorials-search-engineering/pdf-retrieval-at-scale/) | PDF RAG using ColPali and embedding pooling. | Python | 30m | Intermediate | -| [Retrieval Quality Fundamentals](/documentation/tutorials-search-engineering/retrieval-quality-fundamentals/) | Understand evaluation levels and choose the right metric. | Python | 20m | Beginner | | [Measuring ANN Precision](/documentation/tutorials-search-engineering/retrieval-quality/) | Measure ANN precision with the Web UI and tune HNSW parameters. | Web UI | 15m | Beginner | | [Building a Golden Query Set](/documentation/tutorials-search-engineering/retrieval-quality-golden-set/) | Generate ground truth data at scale and avoid data leakage. | Python | 40m | Intermediate | | [Evaluating Pipeline Output Quality](/documentation/tutorials-search-engineering/retrieval-quality-pipeline-output/) | Score a RAG pipeline with Ragas and isolate retrieval vs generation failures. | Python | 45m | Intermediate | diff --git a/qdrant-landing/content/documentation/tutorials-lp-overview.md b/qdrant-landing/content/documentation/tutorials-lp-overview.md index 5994908d4..52b50dd23 100644 --- a/qdrant-landing/content/documentation/tutorials-lp-overview.md +++ b/qdrant-landing/content/documentation/tutorials-lp-overview.md @@ -68,7 +68,6 @@ partition: develop | [Semantic Search Basics](/documentation/tutorials-search-engineering/neural-search/) | Deploy a search service for company descriptions. | FastAPI | 30m | Beginner | | [Collaborative Filtering](/documentation/tutorials-search-engineering/collaborative-filtering/) | Collaborative filtering using sparse embeddings. | Python | 45m | Intermediate | | [Multivector Document Retrieval](/documentation/tutorials-search-engineering/pdf-retrieval-at-scale/) | PDF RAG using ColPali and embedding pooling. | Python | 30m | Intermediate | -| [Retrieval Quality Fundamentals](/documentation/tutorials-search-engineering/retrieval-quality-fundamentals/) | Understand evaluation levels and choose the right metric. | Python | 20m | Beginner | | [Measuring ANN Precision](/documentation/tutorials-search-engineering/retrieval-quality/) | Measure ANN precision with the Web UI and tune HNSW parameters. | Web UI | 15m | Beginner | | [Building a Golden Query Set](/documentation/tutorials-search-engineering/retrieval-quality-golden-set/) | Generate ground truth data at scale and avoid data leakage. | Python | 40m | Intermediate | | [Evaluating Pipeline Output Quality](/documentation/tutorials-search-engineering/retrieval-quality-pipeline-output/) | Score a RAG pipeline with Ragas and isolate retrieval vs generation failures. | Python | 45m | Intermediate | diff --git a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-fundamentals.md b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-fundamentals.md deleted file mode 100644 index 02ecdf530..000000000 --- a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-fundamentals.md +++ /dev/null @@ -1,230 +0,0 @@ ---- -title: The Four Layers of Retrieval Evaluation -weight: 4 -aliases: - - /documentation/tutorials/retrieval-quality-fundamentals/ ---- - -# The Four Layers of Retrieval Evaluation - - - -A team swaps embedding models. Offline recall@10 climbs from 0.71 to 0.79. They ship. A week later, the hallucination dashboard hasn't moved, session length hasn't moved, and their PM wants to know whether the migration was worth it. Nobody in the room can give a straight answer. - -This scenario plays out every time a retrieval system touches production. Model swaps, index reconfigurations, chunking changes, reranker upgrades, and dataset refreshes each claim to improve quality. Most of them ship without anyone knowing, before or after, whether they did. The missing piece is a systematic way to measure retrieval quality across the full stack, from algorithmic correctness all the way to business outcomes. - -Retrieval quality operates at four distinct layers. Each one measures something different, costs something different, and fails in a different way. Teams that ship retrieval improvements with confidence tend to measure all four. Teams that can't answer the PM's question are usually optimizing one layer while flying blind on the others. - -## The Four Layers - -Retrieval quality sits on top of embedding quality. Embedding quality is measured separately by benchmarks like [MTEB](https://huggingface.co/spaces/mteb/leaderboard), a public leaderboard for embedding models, and it sets the ceiling on every downstream metric. The four layers that follow evaluate how well the pipeline preserves that ceiling. - -### Layer 1: Approximate Nearest-Neighbor (ANN) Precision - -Does the approximate index return the same results an exact nearest-neighbor search would? This is a purely algorithmic question about how faithfully the index (HNSW, or whichever ANN algorithm is in use) approximates exhaustive search. Sparse vectors use exact matching, so this layer doesn't apply to them. Layer 1 has nothing to do with whether the results are useful to a human. - -### Layer 2: Retrieval Relevance - -Of the results returned, how many are relevant to the query intent? This requires a labeled ground-truth dataset, human judgment, or LLM-as-judge scoring. A pipeline can hit near-perfect ANN precision and still surface irrelevant documents when the embeddings are a poor fit for the task. - -### Layer 3: Pipeline Output Quality - -Does the full pipeline (retrieval plus whatever consumes it: an LLM, a ranker, a recommendation surface) produce the right output? This is typically measured offline with LLM-as-judge or human rating on a labeled test set, and increasingly on sampled production traffic. It's downstream of retrieval and upstream of any business KPI. - -### Layer 4: Business Impact - -Does better retrieval lead to better business outcomes: lower hallucination rates, higher task-completion rates, improved user satisfaction, lower support cost, more revenue? This is what stakeholders care about, and it's the layer most teams fail to connect back to the work they're doing. The second half of this post is dedicated to it. - -## The Evaluation Ladder - -The four layers aren't measured in isolation. Teams that connect retrieval work to business outcomes build an *evaluation ladder* that runs each layer at a different cadence and cost, and uses the result of each layer to decide whether to invest effort at the next. - -| # | Layer | What It Measures | Cadence | Cost | -|---|---|---|---|---| -| 1 | ANN precision | `Precision@k` vs exact kNN on a sampled query set | On index or embedding changes | Low | -| 2 | Retrieval relevance | `Recall@k` or `NDCG@k` vs a labeled golden set | Weekly, or on retrieval-stack changes | Low per run; the golden set is the real cost | -| 3 | Pipeline output quality | LLM-as-judge or human rating on the golden set and on sampled production traffic | Weekly, or on retrieval or generator changes | Moderate (LLM-judge cost × eval size) | -| 4 | Business impact | Online A/B behind a flag, or proxy signals | Per release, once offline layers pass | High (traffic, experimentation infra) | - -Each layer is necessary but not sufficient. A win at layer 2 that doesn't carry through to layer 3 usually means the downstream consumer (the LLM generator in RAG, the ranker in a search UI, the prompt itself) is the bottleneck, not retrieval. This is the most useful diagnostic the ladder provides, and it's the reason teams shouldn't collapse layers 2 and 3 into a single score. - -### Isolate the Component Under Test - -When end-to-end quality moves, hold one side fixed. Evaluate retrieval with the downstream piece frozen (a specific LLM generator, a specific ranker, the current UI), and evaluate that piece with retrieval frozen. Without this discipline, attribution collapses into guesswork and the ladder stops being diagnostic. - -### Pre-Register the Decision Rule - -Before running the A/B, write down what counts as a win and what counts as a no-ship, in terms of both the retrieval metric and the KPI. This is the highest-leverage habit for avoiding "recall improved but the KPI didn't, the KPI is noisy, let's ship anyway" rationalization. We'll unpack the mechanics of a good decision rule in the layer 4 section. - -### Tooling - -For layer 1, the Qdrant Web UI ships with a Search Quality tab that measures ANN vs exact kNN without code (see [Measuring ANN Precision](/documentation/tutorials-search-engineering/retrieval-quality/)). For layer 2, [ranx](https://amenra.github.io/ranx/) is the standard Python library for ranking metrics (recall@k, MRR, NDCG@k, and others). For layer 3, tools like [Ragas](https://docs.ragas.io/), [Arize Phoenix](https://phoenix.arize.com/), and [DeepEval](https://docs.confident-ai.com/) cover LLM-as-judge scoring and offline answer-quality evaluation. Layer 4 tooling is a different category (experimentation platforms like Statsig, Eppo, or GrowthBook; product analytics like Amplitude, Mixpanel, or PostHog; LLM observability for production quality monitoring), covered in the layer 4 section. - -## Quality Metrics - -Different layers call for different metrics. The right choice depends on what the pipeline does with its results and what ground truth is available. - -**Layer 1 (ANN precision).** The question is simple: of the `k` true nearest neighbors an exact search would return, how many did the approximation find? That fraction is **`precision@k`**: - -`precision@k = |ANN results ∩ exact results| / k` - -Because both result sets are size `k`, precision and recall collapse to the same formula, and some literature (notably [ANN-benchmarks](https://ann-benchmarks.com/)) calls this `recall@k` to emphasize that exact kNN is the ground truth. - -**Layer 2 (retrieval relevance).** Several metrics quantify relevance against a labeled ground truth. [Precision@k](https://en.wikipedia.org/wiki/Evaluation_measures_(information_retrieval)#Precision_at_k) counts relevant documents in the top-k. [Mean Reciprocal Rank (MRR)](https://en.wikipedia.org/wiki/Mean_reciprocal_rank) accounts for the position of the first relevant document. [DCG and NDCG](https://en.wikipedia.org/wiki/Discounted_cumulative_gain) weight by graded relevance score. - -### Choosing the Right Metric - -The table is a starting point, not a prescription. Pick the metric that matches your ground truth and your user-visible behavior. - -| Scenario | Recommended Metric | Ground Truth | Why | -|---|---|---|---| -| Tuning HNSW parameters | `Precision@k` | Exact kNN search | Approximation manifests as missed items from the true top-k set, so set-overlap against exact search is the quantity that changes with index parameters | -| RAG pipeline (LLM reads top-k chunks) | `Recall@k` | Labeled relevant chunks | The LLM can recover if a relevant doc is at position 3 vs 1; missing it entirely hurts more | -| Single-answer retrieval (FAQ, Q&A) | `MRR` or `Hits@1` | Labeled correct answer | The first result is what the user acts on; lower ranks matter little | -| Re-ranking or recommendation feeds | `NDCG@k` | Graded relevance labels (for example, 0/1/2) | Order within the result list matters; a highly relevant doc at rank 5 is worse than at rank 1 | - -On choosing `k`: set it to match actual usage. If the application shows 5 results to the user, measure `@5`. If a RAG pipeline passes 10 chunks to the LLM, measure `@10`. Reporting `@100` for a UI that surfaces 5 results makes the metric look artificially good. - -`NDCG` is worth the added complexity only when you have **graded relevance labels** (for example, 0/1/2 scores per query-document pair rather than binary relevant/not-relevant) and when the downstream system benefits from fine-grained ranking. Without multi-grade annotations, the simpler metrics give a cleaner signal with less labeling overhead. - -## Layer 4 in Depth: Connecting Retrieval to Business Outcomes - -### Why Layer 4 Is Different - -The first three layers are engineering questions with technical ground truth. ANN precision has exact kNN as its oracle. Retrieval relevance has a labeled golden set. Pipeline output quality has a judge (LLM or human) scoring outputs against expected answers. You can iterate on these layers in a notebook. - -Layer 4 is different. The "right" answer is a business outcome, the "ground truth" is user behavior in aggregate, and the measurement happens in production under noise that has nothing to do with retrieval: seasonality, UX changes, generator drift, competitor moves, traffic-mix shifts. An offline win can fail to move a KPI for reasons that aren't the retrieval team's fault: - -- **Generator dominance.** If the downstream LLM is already strong enough to compensate for mediocre retrieval, better retrieval doesn't move answer quality. This is common in RAG pipelines built on frontier models. -- **Ceiling effects.** If 90% of queries already have the right answer in the top 3, pushing recall@10 from 0.88 to 0.92 barely touches the KPI. The wins live in the long tail, which moves slowly. -- **Traffic dilution.** If a change only affects 5% of queries (say, long-tail non-English ones), it won't show up in a top-line metric averaged over all traffic. Slice the evaluation or the signal vanishes. -- **User adaptation.** Users who've learned to work around poor search reformulate multiple times. Better retrieval means fewer reformulations, which can look like lower engagement in some metrics. - -And a KPI can move without an offline win: novelty effects in the first week of an A/B, confounds with a simultaneous UI change, seasonality, or statistical noise on a low-traffic surface. Layer 4 measurement is the practice of telling these apart. - -### Pick the Right KPI for the Product Shape - -No single KPI captures "retrieval is working." The right KPI depends on what retrieval is *for*. The following table maps common application shapes to the metrics that correlate with user value, with a note on which are leading (respond quickly to retrieval changes) vs lagging (take weeks or months to move). - -| Application | Candidate KPIs | Leading / Lagging | -|---|---|---| -| RAG / Q&A | Answer-accepted rate, hallucination rate on sampled traffic, follow-up-question rate, source-click rate, regeneration rate | Leading: regeneration, follow-ups. Lagging: retention, NPS | -| Search UI | CTR@1, abandonment rate, reformulation rate, satisfied-session rate, time-to-first-click | Leading: all of these. Lagging: retention, repeat usage | -| Agentic | Task-completion rate, tool-selection accuracy, steps-to-completion, human-in-the-loop intervention rate | Leading: step count, tool accuracy. Lagging: cost per completed task, retention | -| Recommendations | Engagement rate, diversity-adjusted engagement, downstream conversion, long-term retention | Leading: engagement. Lagging: retention, LTV | - -Pick one or two leading KPIs and one lagging KPI. Leading KPIs tell you whether the change is working. Lagging KPIs tell you whether the work matters. - -### Guardrail Metrics - -A KPI win is only real if it doesn't break something else. Retrieval changes commonly trade against: - -- **Latency.** A larger `k`, a heavier reranker, or a multi-vector query can add tens of milliseconds to p95. On a chat surface, 80 ms of added latency can erase a 2-point gain on any quality metric. -- **Cost per query.** Reranker calls, LLM judges in production, and denser index configurations all raise the per-query bill. A recall improvement that doubles inference cost is rarely worth shipping at scale. -- **Index size and memory footprint.** A second vector space or higher-dimensional embeddings can multiply RAM. Qdrant's quantization and tiered storage exist because this trade-off is real. -- **Slice performance.** Top-line recall can rise while long-tail queries, non-English queries, or specific customer segments regress. Evaluate the relevant slices, not the average alone. -- **Safety and refusal rates.** In RAG, better retrieval sometimes surfaces content the system shouldn't answer from. Track refusal and unsafe-output rates alongside quality. - -Write the guardrails into the decision rule before the A/B runs. A change that lifts the KPI by 1% but bumps p95 latency by 60 ms and doubles index cost is a no-ship in most organizations, and arguing about that after the test is how regressions slip in. - -### Proxy Signals When You Can't A/B - -Most teams building retrieval systems don't have a proper experimentation platform. A/B design for RAG and agentic systems is still evolving, and even at companies with Statsig, Eppo, or GrowthBook wired up, getting statistical power on a low-traffic surface can take weeks. Proxy signals bridge the gap. They're cheap to instrument and correlate reliably enough with value to catch big regressions and big wins. - -The minimum viable instrumentation: - -- **Explicit feedback.** Thumbs up / thumbs down on each answer or result. Noisy per query, meaningful in aggregate. -- **Implicit quality signals.** Copy-to-clipboard, share, save, export actions. Much stronger than thumbs because they carry intent. -- **Regeneration rate.** The fraction of users who re-ask, click regenerate, or rephrase within a short window. A drop in regeneration rate after a retrieval change is one of the cleanest leading indicators for RAG. -- **Source-click rate.** In RAG, what fraction of users click through to the retrieved source? If retrieval is surfacing the right source, users verify more often. -- **Dwell and session structure.** Time on answer, number of follow-ups, session length. Blunt but cheap. -- **Abandonment.** Fraction of sessions that end without any positive signal. The strongest negative indicator. - -Build these into production telemetry before you need them. They're far cheaper to add early than to retrofit during an incident. - -### Close the Offline-Online Loop - -The single most useful exercise for a team serious about retrieval evaluation is calibrating the transfer function from offline wins to online movement. Run a handful of paired measurements: when offline recall@10 went up by 5 points, did the KPI move? By how much? Over how long? - -After three or four paired measurements, patterns emerge: - -- **The slope.** How much offline win translates to how much online movement. This is team- and product-specific; there's no industry constant. -- **The threshold.** Below some offline delta (typically 2 to 3 points on recall@10 in RAG), online noise swamps the signal. Stop running A/Bs below this threshold and batch changes instead. -- **The lag.** How long after launch the KPI moves. Two weeks is typical; a month isn't unusual for lagging metrics. - -Once calibrated, offline becomes a credible predictor of online impact, and the PM question ("is this worth shipping?") gets a defensible answer instead of a shrug. Until calibrated, offline wins are unfalsifiable and no amount of layer 2 and 3 polish buys trust with the business. - -### Experiment Design for Retrieval A/Bs - -Retrieval experiments have their own failure modes worth naming: - -- **Unit of randomization.** User is usually right. Session works for anonymous surfaces. Per-query randomization is almost always wrong for RAG: the same user getting different retrieval within a conversation produces incoherent experiences and breaks attribution. -- **Minimum detectable effect.** Retrieval A/Bs are chronically underpowered. If the KPI sits on a 3% baseline with high variance, detecting a 0.5 pp absolute change at 80% power may need millions of sessions. Check this *before* running the test. An underpowered test that shows "no effect" hasn't ruled anything out. -- **Novelty effects.** The first few days of any change show an effect that isn't the steady-state effect, in either direction. Run for at least two weeks, longer for low-traffic surfaces. Bake a minimum runtime into the decision rule. -- **Freeze the other side.** If the A/B is a retrieval change, don't ship a prompt change, a model swap, or a UI tweak during the same window. If you must, the attribution is compromised. Say so. -- **Simpson's paradox by query segment.** A retrieval change can lift the average while regressing on specific query types (short queries, non-English, ambiguous intents). Pre-register the slices that matter and check each one. -- **Interaction with the generator.** In RAG, a retrieval win is only real if the generator can use it. Evaluate on the generator you ship, not the strongest frontier model in a notebook. - -### When You Can't A/B at All - -Many retrieval systems run on traffic that's too low, too heterogeneous, or too sensitive for a conventional A/B. Alternatives that preserve some of the rigor: - -- **Interleaving.** Mix results from two retrieval systems in the same ranked list and track which side users click. Far more statistically efficient than A/B for ranking changes. -- **Side-by-side blind evaluation.** Show two variants of the same answer or result list to raters (internal, external, or the users themselves) and collect preferences. Works well for RAG where subjective answer quality dominates. -- **Shadow traffic.** Run the new retrieval path in parallel with production, don't serve it to users, and compare offline. Doesn't give a KPI answer but surfaces regressions safely. -- **Pre/post with guardrails.** If traffic is stable enough, launch the change for everyone and watch the metrics move. This is weak inference, so only do it with a strong rollback plan and heavy pre-registered guardrails. -- **Moderated user studies.** Small-n, high-signal. Best for catching user-experience regressions that metrics miss. -- **Expert review panels.** Domain experts score results on a rubric. Expensive per sample, valuable when user behavior is a poor proxy for quality (medical, legal, financial retrieval). - -Match the method to the risk. Shadow traffic for "is this safe?" Interleaving for ranking. Expert panels for compliance-sensitive domains. A/B only when you have traffic to spend. - -### Anatomy of a Decision Rule - -A good decision rule is a document, written before the experiment starts, that specifies: - -1. **Primary KPI and expected direction.** Which metric decides the ship. -2. **Minimum effect size.** Below what delta the result is "flat" and not a win, regardless of statistical significance. -3. **Guardrails.** Which metrics must not regress, and by how much. -4. **Slices.** Which query or user segments get checked independently. -5. **Minimum runtime and sample size.** When the test is allowed to stop. -6. **Ship / no-ship / iterate criteria.** What combination of results leads to which decision. -7. **What happens if the KPI moves but the offline metric didn't, or vice versa.** The hardest case to handle under pressure and the most common. - -The reason to write it down is that once results are in, everyone develops opinions about which metric is "really" important. Pre-registration is a commitment device against motivated reasoning. Review it. Agree on it. Sign it. Then run the test. - -### The Organizational Pattern - -The evaluation ladder is also an interface contract between teams. The common pattern in mature organizations: - -- **Retrieval engineers own layers 1 and 2.** Index configuration, embedding choice, chunking, hybrid strategies. Their deliverable is a retrieval system that hits a target on the golden set. -- **Applied ML or evaluation engineers own layer 3.** LLM-as-judge infrastructure, golden-set curation, pipeline-output measurement across the full stack. -- **Product and analytics own layer 4.** KPI definition, experimentation platform, A/B analysis, business attribution. - -The common failure mode is gaps at the handoffs. Retrieval engineers report recall wins that never get scored end-to-end. Evaluation engineers report answer-quality wins that never make it into an A/B. PMs run A/Bs that can't be attributed back to a specific retrieval change. The evaluation ladder is how those handoffs get made explicit, with a shared set of metrics and a shared cadence. - -Teams that skip layers fail in predictable ways. Skipping layer 2 means every layer 3 regression is a mystery. Skipping layer 3 means shipping retrieval wins that don't help the user. Skipping layer 4 means shipping changes that feel good to the engineering team but don't move the business. Skipping layer 1 means chasing relevance problems that are really index-tuning problems in disguise. - -### The Hard Case: Offline Wins, Flat KPI - -This is the scenario at the top of the post, and it's the one worth thinking through most carefully. Offline recall is up. The KPI is flat. What do you do? - -The answer depends on why. Work through the possibilities in order: - -1. **Is the test powered?** Check the minimum detectable effect first. If the KPI can't detect a change of this size at this traffic level, "flat" means "we didn't measure it," not "there was no effect." Rerun with more traffic or batch the change with others. -2. **Is the KPI leading or lagging?** If you're measuring retention on a two-week A/B, the signal may not have arrived yet. Check leading indicators (regeneration rate, follow-up rate, reformulation rate) for movement. -3. **Is the downstream component dominating?** If the generator is strong enough to compensate for mediocre retrieval, retrieval wins disappear. Re-run the layer 3 evaluation with a weaker generator to confirm. This is useful information: it means retrieval isn't the bottleneck, and further investment should shift to the generator or the surface. -4. **Is the win concentrated in a slice that's invisible in the aggregate?** Check long-tail queries, specific languages, specific user cohorts. A 20% lift on 3% of queries is a real win even if the overall KPI doesn't move. -5. **Is the offline metric measuring the wrong thing?** If recall went up but the retrieved items are still the wrong ones for the task, the golden set is miscalibrated. Re-examine the labels. -6. **Is it genuinely a non-improvement?** Sometimes the answer is yes. This is why pre-registration exists. A shrug and a ship is how drift accumulates. - -A team that can walk this list with a straight face, on the record, after every test, is a team that knows what its retrieval system does. - -## Closing Argument - -Retrieval systems are infrastructure that touch every AI feature a team ships. They get swapped, tuned, and replaced constantly. Without a measurement discipline across the four layers, those changes land blind, regressions accumulate, and the gap between "the retrieval team is busy" and "the product is getting better" widens until someone has to justify the work to a skeptical exec and can't. - -The four-layer ladder is the cheapest version of that discipline. Layer 1 catches index regressions. Layer 2 catches relevance regressions. Layer 3 catches output-quality regressions. Layer 4 catches the wins and losses that matter. Run each at its right cadence, connect the results, and the PM's question ("was the migration worth it?") becomes a defensible answer instead of a shrug. - -Qdrant is built around the same principle at the engine level. Retrieval primitives (dense vectors, sparse vectors, metadata filters, multi-vector representations, custom scoring) are exposed as composable decisions so engineers can tune for the quality metric that matters on their surface. Qdrant powers retrieval at Canva, Tripadvisor, HubSpot, Bosch, and others, from billion-scale user-generated content to domain-specific enterprise RAG. The ladder doesn't depend on any particular engine, and it's easier to run when the one you're on gives you enough control to move each layer on purpose. - -To measure and tune the ANN precision of a Qdrant collection in practice, see [Measuring ANN Precision](/documentation/tutorials-search-engineering/retrieval-quality/). To build a labeled dataset for relevance evaluation, see [Building a Golden Query Set](/documentation/tutorials-search-engineering/retrieval-quality-golden-set/). To score pipeline output quality on that golden set, see [Evaluating Pipeline Output Quality](/documentation/tutorials-search-engineering/retrieval-quality-pipeline-output/). From 6c10996b6695d00b12bd2ea155dee29fa99d3f10 Mon Sep 17 00:00:00 2001 From: Dylan Couzon Date: Thu, 23 Apr 2026 23:29:44 -0400 Subject: [PATCH 46/64] rename Building a Golden Query Set to Measuring Retrieval Relevance Aligns the layer-2 tutorial title with the parallel "Measuring X" / "Evaluating X" pattern used by the other two and maps directly to the four-layer framework. Slug stays the same to preserve URLs and the golden-set artifact identity in the path. Also updates the nav descriptions to reflect the tutorial's full scope (build + score, not just build). Co-Authored-By: Claude Opus 4.7 (1M context) --- .../headless/content/tutorials/search-engineering.md | 2 +- qdrant-landing/content/documentation/tutorials-lp-overview.md | 2 +- .../retrieval-quality-golden-set.md | 4 ++-- .../retrieval-quality-pipeline-output.md | 2 +- .../tutorials-search-engineering/retrieval-quality.md | 4 ++-- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/qdrant-landing/content/documentation/headless/content/tutorials/search-engineering.md b/qdrant-landing/content/documentation/headless/content/tutorials/search-engineering.md index 1ecdd6033..da6d5abda 100644 --- a/qdrant-landing/content/documentation/headless/content/tutorials/search-engineering.md +++ b/qdrant-landing/content/documentation/headless/content/tutorials/search-engineering.md @@ -6,7 +6,7 @@ | [Collaborative Filtering](/documentation/tutorials-search-engineering/collaborative-filtering/) | Collaborative filtering using sparse embeddings. | Python | 45m | Intermediate | | [Multivector Document Retrieval](/documentation/tutorials-search-engineering/pdf-retrieval-at-scale/) | PDF RAG using ColPali and embedding pooling. | Python | 30m | Intermediate | | [Measuring ANN Precision](/documentation/tutorials-search-engineering/retrieval-quality/) | Measure ANN precision with the Web UI and tune HNSW parameters. | Web UI | 15m | Beginner | -| [Building a Golden Query Set](/documentation/tutorials-search-engineering/retrieval-quality-golden-set/) | Generate ground truth data at scale and avoid data leakage. | Python | 40m | Intermediate | +| [Measuring Retrieval Relevance](/documentation/tutorials-search-engineering/retrieval-quality-golden-set/) | Build a labeled golden set and score retrieval relevance with ranx. | Python | 40m | Intermediate | | [Evaluating Pipeline Output Quality](/documentation/tutorials-search-engineering/retrieval-quality-pipeline-output/) | Score a RAG pipeline with Ragas and isolate retrieval vs generation failures. | Python | 45m | Intermediate | | [Hybrid Search with Reranking](/documentation/tutorials-search-engineering/reranking-hybrid-search/) | Implement late interaction and sparse reranking. | Python | 40m | Intermediate | | [Semantic Search for Code](/documentation/tutorials-search-engineering/code-search/) | Navigate codebases using vector similarity. | Python | 45m | Intermediate | diff --git a/qdrant-landing/content/documentation/tutorials-lp-overview.md b/qdrant-landing/content/documentation/tutorials-lp-overview.md index 52b50dd23..8a746ee7f 100644 --- a/qdrant-landing/content/documentation/tutorials-lp-overview.md +++ b/qdrant-landing/content/documentation/tutorials-lp-overview.md @@ -69,7 +69,7 @@ partition: develop | [Collaborative Filtering](/documentation/tutorials-search-engineering/collaborative-filtering/) | Collaborative filtering using sparse embeddings. | Python | 45m | Intermediate | | [Multivector Document Retrieval](/documentation/tutorials-search-engineering/pdf-retrieval-at-scale/) | PDF RAG using ColPali and embedding pooling. | Python | 30m | Intermediate | | [Measuring ANN Precision](/documentation/tutorials-search-engineering/retrieval-quality/) | Measure ANN precision with the Web UI and tune HNSW parameters. | Web UI | 15m | Beginner | -| [Building a Golden Query Set](/documentation/tutorials-search-engineering/retrieval-quality-golden-set/) | Generate ground truth data at scale and avoid data leakage. | Python | 40m | Intermediate | +| [Measuring Retrieval Relevance](/documentation/tutorials-search-engineering/retrieval-quality-golden-set/) | Build a labeled golden set and score retrieval relevance with ranx. | Python | 40m | Intermediate | | [Evaluating Pipeline Output Quality](/documentation/tutorials-search-engineering/retrieval-quality-pipeline-output/) | Score a RAG pipeline with Ragas and isolate retrieval vs generation failures. | Python | 45m | Intermediate | | [Reranking for Better Search](/documentation/search-precision/reranking-semantic-search/) | Use multivector representations for better ranking. | Python | 30m | Intermediate | | [Hybrid Search with Reranking](/documentation/tutorials-search-engineering/reranking-hybrid-search/) | Implement late interaction and sparse reranking. | Python | 40m | Intermediate | diff --git a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-golden-set.md b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-golden-set.md index ec2f1895a..d564da2f9 100644 --- a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-golden-set.md +++ b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-golden-set.md @@ -1,11 +1,11 @@ --- -title: Building a Golden Query Set +title: Measuring Retrieval Relevance weight: 6 aliases: - /documentation/tutorials/retrieval-quality-golden-set/ --- -# Building a Golden Query Set +# Measuring Retrieval Relevance | Time: 40 min | Level: Intermediate | | | |--------------|---------------------|--|----| diff --git a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-pipeline-output.md b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-pipeline-output.md index 742db6f02..14d704faa 100644 --- a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-pipeline-output.md +++ b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-pipeline-output.md @@ -15,7 +15,7 @@ To measure pipeline output quality, you run your golden query set through the fu For orientation on the four layers of retrieval evaluation and where this tutorial fits, see [Measuring ANN Precision](/documentation/tutorials-search-engineering/retrieval-quality/#the-four-layers-of-retrieval-evaluation). -**Prerequisites.** A Qdrant collection with your corpus indexed (chunk text in a `text` payload field), a labeled golden set (see [Building a Golden Query Set](/documentation/tutorials-search-engineering/retrieval-quality-golden-set/)), LLM access for generation and judging, and Python with `ragas` installed. The Wiring section shows the exact entry shape this tutorial expects. +**Prerequisites.** A Qdrant collection with your corpus indexed (chunk text in a `text` payload field), a labeled golden set (see [Measuring Retrieval Relevance](/documentation/tutorials-search-engineering/retrieval-quality-golden-set/)), LLM access for generation and judging, and Python with `ragas` installed. The Wiring section shows the exact entry shape this tutorial expects. ## Wiring the RAG Pipeline diff --git a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality.md b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality.md index 785d24ac7..489ba79f1 100644 --- a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality.md +++ b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality.md @@ -19,7 +19,7 @@ To measure ANN precision, you compare Qdrant's approximate top-k against the exa Retrieval quality operates at four layers. Each catches different failure modes at a different cadence and cost. This tutorial covers layer 1. - **Layer 1: ANN precision** (this tutorial). How closely approximate nearest-neighbor search matches exact kNN. Run on every index or embedding change. -- **Layer 2: Retrieval relevance** ([Building a Golden Query Set](/documentation/tutorials-search-engineering/retrieval-quality-golden-set/)). How well the results match query intent against a labeled dataset. Run weekly, or on retrieval-stack changes. +- **Layer 2: Retrieval relevance** ([Measuring Retrieval Relevance](/documentation/tutorials-search-engineering/retrieval-quality-golden-set/)). How well the results match query intent against a labeled dataset. Run weekly, or on retrieval-stack changes. - **Layer 3: Pipeline output quality** ([Evaluating Pipeline Output Quality](/documentation/tutorials-search-engineering/retrieval-quality-pipeline-output/)). Whether the full pipeline (retrieval plus an LLM generator, a ranker, or a UI) produces the right output. Run weekly, or on retrieval or generator changes. - **Layer 4: Business impact**. Whether better retrieval moves the KPIs the business cares about. Measured per release once the offline layers pass. @@ -93,4 +93,4 @@ Wire it into CI and fail the job when precision falls below your target threshol Measuring ANN precision keeps HNSW tuning honest. The Search Quality tab gives you a quick interactive read; the Python helper plugs into CI to catch regressions after embedding model changes or index config updates. -Once ANN precision is on target, the next layer is whether the retrieved results are relevant to users. See [Building a Golden Query Set](/documentation/tutorials-search-engineering/retrieval-quality-golden-set/). \ No newline at end of file +Once ANN precision is on target, the next layer is whether the retrieved results are relevant to users. See [Measuring Retrieval Relevance](/documentation/tutorials-search-engineering/retrieval-quality-golden-set/). \ No newline at end of file From 4d5a3b8f60a96694b757ffbf2d9d663dba92bc2b Mon Sep 17 00:00:00 2001 From: Dylan Couzon Date: Thu, 23 Apr 2026 23:40:09 -0400 Subject: [PATCH 47/64] ann-precision: add Prerequisites block and rename closing to Next Steps Adds an explicit Prerequisites line matching the pattern in Measuring Retrieval Relevance and Evaluating Pipeline Output Quality. Renames "Wrapping Up" to "Next Steps" for naming consistency across the series. Co-Authored-By: Claude Opus 4.7 (1M context) --- .../tutorials-search-engineering/retrieval-quality.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality.md b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality.md index 489ba79f1..337ae537a 100644 --- a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality.md +++ b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality.md @@ -14,6 +14,8 @@ weight: 5 This tutorial focuses on **ANN precision**: how closely approximate nearest-neighbor (ANN) search matches exact kNN search. To measure ANN precision, you compare Qdrant's approximate top-k against the exact kNN top-k using `precision@k`, then tune HNSW parameters to trade memory and build time for higher precision. +**Prerequisites.** A Qdrant collection with your corpus indexed. For the CI section, Python with `qdrant-client` installed. + ## The Four Layers of Retrieval Evaluation Retrieval quality operates at four layers. Each catches different failure modes at a different cadence and cost. This tutorial covers layer 1. @@ -89,7 +91,7 @@ def avg_precision_at_k( Wire it into CI and fail the job when precision falls below your target threshold. This catches regressions from embedding model swaps or index config changes before they reach production. -## Wrapping Up +## Next Steps Measuring ANN precision keeps HNSW tuning honest. The Search Quality tab gives you a quick interactive read; the Python helper plugs into CI to catch regressions after embedding model changes or index config updates. From d615b8fc3010267ee0f8f03a8e18b25156db8791 Mon Sep 17 00:00:00 2001 From: Dylan Couzon Date: Thu, 23 Apr 2026 23:40:40 -0400 Subject: [PATCH 48/64] measuring-retrieval-relevance: accessibility pass on ranking metrics Expands MRR with Mean Reciprocal Rank and a Wikipedia link where the metric becomes operational, matching the inline expansion treatment already given to NDCG. Drops the IR acronym in favor of the plainer "ranking metrics" phrasing. Strips the parenthetical subtitle from the Pitfalls heading and normalizes the intro to use "golden sets". Co-Authored-By: Claude Opus 4.7 (1M context) --- .../retrieval-quality-golden-set.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-golden-set.md b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-golden-set.md index d564da2f9..c96a0192c 100644 --- a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-golden-set.md +++ b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-golden-set.md @@ -58,7 +58,7 @@ Document: ## Using the Golden Set -ranx is a Python library for ranking-metric evaluation. It covers the standard IR metrics (`recall@k`, `MRR`, `NDCG@k`, `Precision@k`, MAP, and others) through one consistent interface, so you don't hand-roll each metric or juggle different libraries as needs grow. +ranx is a Python library for ranking-metric evaluation. It covers the standard ranking metrics (`recall@k`, `MRR`, `NDCG@k`, `Precision@k`, MAP, and others) through one consistent interface, so you don't hand-roll each metric or juggle different libraries as needs grow. The evaluation runs in three steps: load the labeled queries into the shape ranx expects, run each through Qdrant, then compute metrics. @@ -144,15 +144,15 @@ Higher is better on all three. Which metric matters most depends on what your pi | Single-answer retrieval (FAQ or Q&A) | `MRR` or `Hits@1` | The first result is what the user acts on; lower ranks matter little | | Re-ranking or recommendation feeds | `NDCG@k` | Order within the result list matters; a highly relevant doc at rank 5 is worse than at rank 1 | -[NDCG (Normalized Discounted Cumulative Gain)](https://en.wikipedia.org/wiki/Discounted_cumulative_gain) needs graded labels (for example, 0/1/2 scores per query-document pair). For binary labels, stick with `recall@k` and `MRR`. For the full metric list (Precision@k, MAP, ERR, and others), see the ranx docs. +[NDCG (Normalized Discounted Cumulative Gain)](https://en.wikipedia.org/wiki/Discounted_cumulative_gain) needs graded labels (for example, 0/1/2 scores per query-document pair). For binary labels, stick with `recall@k` and [`MRR` (Mean Reciprocal Rank)](https://en.wikipedia.org/wiki/Mean_reciprocal_rank). For the full metric list (Precision@k, MAP, ERR, and others), see the ranx docs. On choosing `k`: set it to match actual usage. If the application shows 5 results to the user, measure `@5`. If a RAG pipeline passes 10 chunks to the LLM, measure `@10`. Reporting `@100` for a UI that surfaces 5 results makes the metric look artificially good. Re-run whenever the retrieval stack changes: new embedding model (which also requires re-embedding queries and re-indexing), new index config, or new reranker. In CI, compute `recall@10` against a fixed golden set and fail the job when the score drops below your target threshold. -## Pitfalls to Watch For (Data Leakage and Friends) +## Pitfalls to Watch For -In golden query sets, **data leakage** means any setup that makes offline metrics look better than production reality. Unlike classic train/test leakage, the issue is often evaluation design. Keep source documents in the index (they are the expected relevant answers). Focus on these risks: +In golden sets, **data leakage** means any setup that makes offline metrics look better than production reality. Unlike classic train/test leakage, the issue is often evaluation design. Keep source documents in the index (they are the expected relevant answers). Focus on these risks: **Synthetic-query unrealism.** LLMs often mirror source wording, creating easier queries than real user input. This inflates offline scores. Mitigate it by instructing the LLM to generate queries as a user who hasn't seen the source document, then compare synthetic and real-query distributions (length and specificity). From 648dcf3fa5aef87c52c3e8234b948be287e84378 Mon Sep 17 00:00:00 2001 From: Dylan Couzon Date: Thu, 23 Apr 2026 23:41:44 -0400 Subject: [PATCH 49/64] pipeline-output: accessibility, precision, and series closer Adds an inline gloss for SingleTurnSample where readers first encounter it, names EvaluationResult precisely as the return type of evaluate(), and normalizes "golden query set" to "golden set" in the intro to match the rest of the tutorial. Ends the tutorial with a Wrapping Up section that closes the series. Co-Authored-By: Claude Opus 4.7 (1M context) --- .../retrieval-quality-pipeline-output.md | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-pipeline-output.md b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-pipeline-output.md index 14d704faa..82a4c8c6e 100644 --- a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-pipeline-output.md +++ b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-pipeline-output.md @@ -11,7 +11,7 @@ aliases: |--------------|---------------------|--|----| This tutorial focuses on **pipeline output quality**: whether the full retrieval pipeline produces the right output once retrieved results reach a consumer, most often an LLM generator in a RAG system. -To measure pipeline output quality, you run your golden query set through the full pipeline, capture each `(question, retrieved_context, answer)` triple, and score the triples against judgment metrics like faithfulness, answer relevancy, and context precision. +To measure pipeline output quality, you run your golden set through the full pipeline, capture each `(question, retrieved_context, answer)` triple, and score the triples against judgment metrics like faithfulness, answer relevancy, and context precision. For orientation on the four layers of retrieval evaluation and where this tutorial fits, see [Measuring ANN Precision](/documentation/tutorials-search-engineering/retrieval-quality/#the-four-layers-of-retrieval-evaluation). @@ -53,7 +53,7 @@ Question: """ ``` -**3. Run retrieval and generation.** For each entry, retrieve the top-k chunks, pass them through the generator, and record a `SingleTurnSample`. The example uses Anthropic, but any LLM provider works (OpenAI, Cohere, a local model). Only the `generate_answer` body changes: +**3. Run retrieval and generation.** For each entry, retrieve the top-k chunks, pass them through the generator, and record a `SingleTurnSample`. `SingleTurnSample` is Ragas's data class for one evaluation record: question, retrieved context, generated answer, and optional reference. The example uses Anthropic, but any LLM provider works (OpenAI, Cohere, a local model). Only the `generate_answer` body changes: ```python import os @@ -128,7 +128,7 @@ scores = evaluate( ) ``` -`evaluate()` returns a result object whose aggregate scores look like this: +`evaluate()` returns an `EvaluationResult` object. Its aggregate scores print like this: ```python {"faithfulness": 0.88, "answer_relevancy": 0.81, "context_precision": 0.74} @@ -198,3 +198,7 @@ Pair offline metric changes with online KPI changes over a few launches. After t ### Proxy Signals When You Can't A/B Most teams don't have a proper experimentation platform, or don't have the traffic to power a test quickly. Cheap-to-instrument signals correlate enough with value to catch big regressions and big wins: thumbs up or down on answers, regeneration rate, source-click rate, copy or share actions, and session abandonment. Build these into production telemetry before you need them. + +## Wrapping Up + +That completes the four-layer retrieval evaluation stack: ANN precision, retrieval relevance, pipeline output quality, and business impact. Each layer catches a different class of regression, and running them together means retrieval changes can ship with defensible evidence at every stage. From d14bbd3fc166d59d6de83d209c295854f8a1b1ac Mon Sep 17 00:00:00 2001 From: Dylan Couzon Date: Fri, 24 Apr 2026 00:27:04 -0400 Subject: [PATCH 50/64] add inline comments to code snippets --- .../retrieval-quality-golden-set.md | 1 + .../retrieval-quality-pipeline-output.md | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-golden-set.md b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-golden-set.md index c96a0192c..3169aeda8 100644 --- a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-golden-set.md +++ b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-golden-set.md @@ -117,6 +117,7 @@ def retrieval_run(golden_set: list, collection: str, k: int = 10) -> Run: query=entry["query_vector"], limit=k, ).points + # p.id type must match the doc_id type in labels (ranx matches by equality). run[entry["query_id"]] = {p.id: p.score for p in results} return Run(run) diff --git a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-pipeline-output.md b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-pipeline-output.md index 82a4c8c6e..952d9bb17 100644 --- a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-pipeline-output.md +++ b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-pipeline-output.md @@ -119,12 +119,13 @@ Pass the eval samples into `evaluate()` with those three metrics: ```python from ragas import EvaluationDataset, evaluate -from ragas.metrics import faithfulness, answer_relevancy, context_precision +from ragas.metrics.collections import faithfulness, answer_relevancy, context_precision dataset = EvaluationDataset(samples=samples) scores = evaluate( dataset, metrics=[faithfulness, answer_relevancy, context_precision], + # For a non-OpenAI judge, pass llm= and embeddings= (see Ragas docs). ) ``` From 3e378a3647d7c4708d1099e18bf1e2b92cd2219d Mon Sep 17 00:00:00 2001 From: Dylan Couzon Date: Fri, 24 Apr 2026 00:38:27 -0400 Subject: [PATCH 51/64] Adding more details to the instructions --- .../retrieval-quality-golden-set.md | 6 +++++- .../retrieval-quality-pipeline-output.md | 4 ++++ .../tutorials-search-engineering/retrieval-quality.md | 2 +- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-golden-set.md b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-golden-set.md index 3169aeda8..6277ecca5 100644 --- a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-golden-set.md +++ b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-golden-set.md @@ -43,7 +43,11 @@ You are helping build an evaluation dataset for a search system. Generate 3 realistic search queries for the document below. Each query should be what a real user would type to find it. Phrase queries naturally, not as paraphrases of the document. -Return only the queries, one per line. No numbering or explanation. + +Return exactly 3 lines, one query per line. No numbering, no bullets, no preamble. Example: +how does X work +best way to configure Y +what is Z used for Document: {document_text} diff --git a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-pipeline-output.md b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-pipeline-output.md index 952d9bb17..4e13eec44 100644 --- a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-pipeline-output.md +++ b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-pipeline-output.md @@ -23,6 +23,8 @@ For orientation on the four layers of retrieval evaluation and where this tutori **1. Prepare the evaluation data.** Each entry needs a `query_id`, a `query_text` (for prompting the generator), a `query_vector` (for retrieval), and `labels`. For `context_precision` only, also include a `ground_truth` reference answer. +If your queries came from synthetic generation, they don't carry ground-truth answers natively. A simple workaround: make one more LLM pass per query, constrained to the source document, asking for a one-to-two-sentence reference answer. Skip this step if you're only scoring `faithfulness` and `answer_relevancy` (both are reference-free). + ```python # Example of an evaluation-ready entry. { @@ -53,6 +55,8 @@ Question: """ ``` +The prompt above is a starting point; tune it for your domain: answer style, refusal behavior, whether outside knowledge is allowed, and output format. + **3. Run retrieval and generation.** For each entry, retrieve the top-k chunks, pass them through the generator, and record a `SingleTurnSample`. `SingleTurnSample` is Ragas's data class for one evaluation record: question, retrieved context, generated answer, and optional reference. The example uses Anthropic, but any LLM provider works (OpenAI, Cohere, a local model). Only the `generate_answer` body changes: ```python diff --git a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality.md b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality.md index 337ae537a..dd2adff77 100644 --- a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality.md +++ b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality.md @@ -55,7 +55,7 @@ Tune until you hit the point that matches your quality and cost targets. The Web UI is the fastest way to check precision interactively. For continuous integration or scripted regression tests, the Qdrant client exposes the same exact-search mode via `search_params=models.SearchParams(exact=True)`. Compare the ANN and exact top-k sets yourself and compute precision@k. -This helper takes a list of query vectors and returns the average precision@k. Use a representative sample of query vectors from your workload as your test set. +This helper takes a list of query vectors and returns the average precision@k. Use a representative sample of query vectors from your workload (typically 20–50, embedded with the same model your collection uses) as your test set. ```python from qdrant_client import QdrantClient, models From 9f7c1f3fe7562f833d719e173082a3433f9a709d Mon Sep 17 00:00:00 2001 From: Dylan Couzon Date: Fri, 24 Apr 2026 00:48:34 -0400 Subject: [PATCH 52/64] stuff --- .../retrieval-quality-golden-set.md | 2 +- .../retrieval-quality-pipeline-output.md | 4 ++-- .../tutorials-search-engineering/retrieval-quality.md | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-golden-set.md b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-golden-set.md index 6277ecca5..b0abe6d27 100644 --- a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-golden-set.md +++ b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-golden-set.md @@ -15,7 +15,7 @@ To measure retrieval relevance, you need a labeled dataset of queries paired wit For orientation on the four layers of retrieval evaluation and where this tutorial fits, see [Measuring ANN Precision](/documentation/tutorials-search-engineering/retrieval-quality/#the-four-layers-of-retrieval-evaluation). -**Prerequisites.** A Qdrant collection with your corpus indexed, an embedding model available to encode queries at evaluation time, and Python with `ranx` installed. +**Prerequisites.** A Qdrant collection populated with your documents as points (vectors + optional payload), an embedding model available to encode queries at evaluation time, and Python with `ranx` installed. ## Generating Queries diff --git a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-pipeline-output.md b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-pipeline-output.md index 4e13eec44..99afccd50 100644 --- a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-pipeline-output.md +++ b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-pipeline-output.md @@ -15,11 +15,11 @@ To measure pipeline output quality, you run your golden set through the full pip For orientation on the four layers of retrieval evaluation and where this tutorial fits, see [Measuring ANN Precision](/documentation/tutorials-search-engineering/retrieval-quality/#the-four-layers-of-retrieval-evaluation). -**Prerequisites.** A Qdrant collection with your corpus indexed (chunk text in a `text` payload field), a labeled golden set (see [Measuring Retrieval Relevance](/documentation/tutorials-search-engineering/retrieval-quality-golden-set/)), LLM access for generation and judging, and Python with `ragas` installed. The Wiring section shows the exact entry shape this tutorial expects. +**Prerequisites.** A Qdrant collection populated with your documents as points (vectors + a `text` payload field for the chunk content), a labeled golden set (see [Measuring Retrieval Relevance](/documentation/tutorials-search-engineering/retrieval-quality-golden-set/)), LLM access for generation and judging, and Python with `ragas` installed. The Wiring section shows the exact entry shape this tutorial expects. ## Wiring the RAG Pipeline -Ragas is a Python library that uses an LLM as a judge to score RAG outputs (rating each answer against criteria like faithfulness and relevancy instead of comparing to a labeled ground truth). It expects samples shaped as `(question, retrieved_context, answer)` triples, so you build a fresh evaluation set from your labeled data. Three steps: prepare the evaluation data, define a grounding prompt, and run the retrieve-generate-record loop. +Ragas is a Python library that uses an LLM as a judge to score RAG outputs (rating each answer against criteria like faithfulness and relevancy). It expects samples shaped as `(question, retrieved_context, answer)` triples, so you build a fresh evaluation set from your labeled data. Three steps: prepare the evaluation data, define a grounding prompt, and run the retrieve-generate-record loop. **1. Prepare the evaluation data.** Each entry needs a `query_id`, a `query_text` (for prompting the generator), a `query_vector` (for retrieval), and `labels`. For `context_precision` only, also include a `ground_truth` reference answer. diff --git a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality.md b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality.md index dd2adff77..ea0850f38 100644 --- a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality.md +++ b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality.md @@ -14,7 +14,7 @@ weight: 5 This tutorial focuses on **ANN precision**: how closely approximate nearest-neighbor (ANN) search matches exact kNN search. To measure ANN precision, you compare Qdrant's approximate top-k against the exact kNN top-k using `precision@k`, then tune HNSW parameters to trade memory and build time for higher precision. -**Prerequisites.** A Qdrant collection with your corpus indexed. For the CI section, Python with `qdrant-client` installed. +**Prerequisites.** A Qdrant collection populated with your documents as points (vectors + optional payload). ## The Four Layers of Retrieval Evaluation From cea3fd6092b3dcaa1096c377609dce4fac730cc5 Mon Sep 17 00:00:00 2001 From: Dylan Couzon Date: Fri, 24 Apr 2026 12:02:41 -0400 Subject: [PATCH 53/64] Semantics, improve clarity --- .../retrieval-quality-golden-set.md | 10 ++++- .../retrieval-quality-pipeline-output.md | 41 +++++++++++-------- .../retrieval-quality.md | 12 +++--- 3 files changed, 36 insertions(+), 27 deletions(-) diff --git a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-golden-set.md b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-golden-set.md index b0abe6d27..5d7c5c26b 100644 --- a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-golden-set.md +++ b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-golden-set.md @@ -13,7 +13,7 @@ aliases: This tutorial focuses on **retrieval relevance**: how well retrieved results match real user intent. To measure retrieval relevance, you need a labeled dataset of queries paired with their expected relevant documents (commonly called a *golden query set* or *ground truth*). This tutorial covers both building that dataset and running it through Qdrant to compute relevance metrics. -For orientation on the four layers of retrieval evaluation and where this tutorial fits, see [Measuring ANN Precision](/documentation/tutorials-search-engineering/retrieval-quality/#the-four-layers-of-retrieval-evaluation). +This tutorial is part of a four-layer retrieval evaluation framework; see [Measuring ANN Precision](/documentation/tutorials-search-engineering/retrieval-quality/#the-four-layers-of-retrieval-evaluation) for the full overview. **Prerequisites.** A Qdrant collection populated with your documents as points (vectors + optional payload), an embedding model available to encode queries at evaluation time, and Python with `ranx` installed. @@ -141,7 +141,11 @@ metrics = evaluate(qrels, run, ["recall@10", "mrr", "ndcg@10"]) {"recall@10": 0.82, "mrr": 0.71, "ndcg@10": 0.76} ``` -Higher is better on all three. Which metric matters most depends on what your pipeline does with results: +Higher is better on all three. + +### Choosing the Right Metric + +Which metric matters most depends on what your pipeline does with results: | Scenario | Recommended Metric | Why | |---|---|---| @@ -153,6 +157,8 @@ Higher is better on all three. Which metric matters most depends on what your pi On choosing `k`: set it to match actual usage. If the application shows 5 results to the user, measure `@5`. If a RAG pipeline passes 10 chunks to the LLM, measure `@10`. Reporting `@100` for a UI that surfaces 5 results makes the metric look artificially good. +### Re-running in CI + Re-run whenever the retrieval stack changes: new embedding model (which also requires re-embedding queries and re-indexing), new index config, or new reranker. In CI, compute `recall@10` against a fixed golden set and fail the job when the score drops below your target threshold. ## Pitfalls to Watch For diff --git a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-pipeline-output.md b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-pipeline-output.md index 99afccd50..38acef81e 100644 --- a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-pipeline-output.md +++ b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-pipeline-output.md @@ -13,9 +13,9 @@ aliases: This tutorial focuses on **pipeline output quality**: whether the full retrieval pipeline produces the right output once retrieved results reach a consumer, most often an LLM generator in a RAG system. To measure pipeline output quality, you run your golden set through the full pipeline, capture each `(question, retrieved_context, answer)` triple, and score the triples against judgment metrics like faithfulness, answer relevancy, and context precision. -For orientation on the four layers of retrieval evaluation and where this tutorial fits, see [Measuring ANN Precision](/documentation/tutorials-search-engineering/retrieval-quality/#the-four-layers-of-retrieval-evaluation). +This tutorial is part of a four-layer retrieval evaluation framework; see [Measuring ANN Precision](/documentation/tutorials-search-engineering/retrieval-quality/#the-four-layers-of-retrieval-evaluation) for the full overview. -**Prerequisites.** A Qdrant collection populated with your documents as points (vectors + a `text` payload field for the chunk content), a labeled golden set (see [Measuring Retrieval Relevance](/documentation/tutorials-search-engineering/retrieval-quality-golden-set/)), LLM access for generation and judging, and Python with `ragas` installed. The Wiring section shows the exact entry shape this tutorial expects. +**Prerequisites.** A Qdrant collection populated with your documents as points (vectors + a `text` payload field for the chunk content), a labeled golden set (see [Measuring Retrieval Relevance](/documentation/tutorials-search-engineering/retrieval-quality-golden-set/)), LLM access for generation and judging, and Python with `ragas` installed. ## Wiring the RAG Pipeline @@ -57,7 +57,8 @@ Question: The prompt above is a starting point; tune it for your domain: answer style, refusal behavior, whether outside knowledge is allowed, and output format. -**3. Run retrieval and generation.** For each entry, retrieve the top-k chunks, pass them through the generator, and record a `SingleTurnSample`. `SingleTurnSample` is Ragas's data class for one evaluation record: question, retrieved context, generated answer, and optional reference. The example uses Anthropic, but any LLM provider works (OpenAI, Cohere, a local model). Only the `generate_answer` body changes: +**3. Run retrieval and generation.** For each entry, retrieve the top-k chunks, pass them through the generator, and record a `SingleTurnSample` (Ragas's data class for one evaluation record: question, retrieved context, generated answer, and optional reference). + ```python import os @@ -67,6 +68,8 @@ from qdrant_client import QdrantClient from ragas import SingleTurnSample client = QdrantClient("http://localhost:6333") # or QdrantClient(url="https://.cloud.qdrant.io", api_key="...") for Qdrant Cloud + +# The example uses Anthropic, but any LLM provider works. anthropic_client = anthropic.Anthropic(api_key=os.environ.get("ANTHROPIC_API_KEY")) @@ -109,7 +112,7 @@ def build_eval_set(golden_set: list, collection: str, k: int = 10) -> list: return samples ``` -The result is a list of `SingleTurnSample` objects, one per query. Each sample carries the question, retrieved contexts, generated answer, and optional reference. The list feeds directly into Ragas's `evaluate()` in the next section. +If an entry's `ground_truth` is empty, Ragas silently skips that sample for metrics that need a reference (like `context_precision`). Populate it only when you'll actually score those metrics. ## Scoring with Ragas @@ -146,11 +149,15 @@ per_query = scores.to_pandas() # row-per-query scores worst = per_query.nsmallest(10, "faithfulness") ``` +### Running in CI + If you ship retrieval changes regularly, this evaluation earns its place in CI. Running it on every change against a fixed golden set catches generator regressions from prompt edits, model swaps, or chunking changes before they reach production. The usual pattern: set a target threshold per metric and fail the job when any score drops below. +### Alternatives + **Without a golden set.** `faithfulness` and `answer_relevancy` are reference-free; swap `context_precision` for `LLMContextPrecisionWithoutReference`. You can then score synthetic queries offline or sampled production traffic live, at the cost of no fixed baseline for regression gating. -Ragas isn't the only tool in this space: DeepEval has a pytest-native API that fits the CI story more directly, and teams that want full rubric control often build a small set of custom LLM-as-judge prompts instead. +Ragas isn't the only tool in this space: DeepEval has a pytest-native API that fits the CI story more directly. ## Isolating Retrieval vs Generation @@ -167,6 +174,10 @@ Pair `recall@10` from the retrieval evaluation with `faithfulness` from the pipe This split is the reason to keep retrieval and pipeline-output evaluation separate. Collapsing them into one end-to-end score tells you the pipeline moved, but not which half moved, so the next iteration becomes guesswork. +## Non-RAG Use Cases + +Ragas's metrics assume the consumer is an LLM generator. If retrieval feeds something else (a ranker, a recommendation surface, an agent, a search UI), swap the metrics to match: CTR or dwell time for a UI, graded rubrics for a ranker, task-completion rate for an agent. The method stays the same: freeze the consumer, run the golden set through the full pipeline, score the end-to-end output. Only the metric changes. + ## Pitfalls to Watch For **Judge bias.** LLM judges reward verbose, confident, or well-formatted answers even when the underlying claim is weaker. Calibrate by running a sample of outputs through human raters and comparing; if judge and human scores disagree often, adjust the rubric or swap the judge model. @@ -175,11 +186,9 @@ This split is the reason to keep retrieval and pipeline-output evaluation separa **Cost scaling.** LLM-as-judge cost grows with queries times metrics times judge calls per metric, and Ragas makes multiple judge calls per sample. A 500-query golden set with three metrics runs into the thousands of judge-model calls per run. Sample aggressively during iteration and reserve the full sweep for release candidates. -**Non-RAG consumers.** Ragas metrics assume a generator output. If retrieval feeds a ranker, a recommendation surface, or a UI, swap Ragas for metrics that match the consumer: CTR and dwell time for a UI, graded rubrics for a ranker, and task-completion scores for an agent. The method (freeze the consumer, score the end-to-end output against the golden set) stays the same; only the metric changes. - ## Connecting to Business Impact -Once pipeline output quality is on target, the remaining question is whether those offline wins move the KPIs the business responds to. It's the hardest measurement to get right, but a few disciplines make it manageable without a full experimentation platform. +Once pipeline output quality is on target, the remaining question is whether those offline wins move the KPIs the business responds to. The standard answer is an A/B test: ship the change to a subset of users, compare their KPIs against a control group receiving the old behavior, and isolate the change's effect from unrelated drift. It's the hardest measurement to get right, but a few disciplines make it manageable without a full experimentation platform. ### Pick KPIs That Match the Product Shape @@ -192,18 +201,14 @@ No single KPI captures "retrieval is working." The right one depends on what ret | Agentic | Step count to completion, tool-selection accuracy | Cost per completed task | | Recommendations | Engagement rate, diversity-adjusted engagement | Retention, long-term value | -### Pre-Register the Decision Rule +### Measurement Best Practices -Before running an A/B, write down what counts as a win, what counts as a no-ship, and which guardrails (latency, cost, slice performance, safety) can't regress. This is the highest-leverage habit for avoiding "the KPI is noisy, let's ship anyway" rationalization after results land. +Three practices make A/B results more credible: -### Calibrate the Offline-Online Transfer Function - -Pair offline metric changes with online KPI changes over a few launches. After three or four paired measurements, patterns emerge: the slope (how much offline translates to online), the threshold (below what offline delta online noise dominates), and the lag (how long after launch the KPI moves). Until calibrated, offline wins are unfalsifiable claims. - -### Proxy Signals When You Can't A/B - -Most teams don't have a proper experimentation platform, or don't have the traffic to power a test quickly. Cheap-to-instrument signals correlate enough with value to catch big regressions and big wins: thumbs up or down on answers, regeneration rate, source-click rate, copy or share actions, and session abandonment. Build these into production telemetry before you need them. +- **Pre-register the decision rule.** Before the test, write down win criteria, no-ship criteria, and which guardrails (latency, cost, slice performance, safety) must not regress. +- **Calibrate offline against online.** Track how offline metric changes map to KPI changes over several launches. Three or four paired measurements usually reveal the slope (how much offline translates), the threshold (below which online noise dominates), and the lag (how long the KPI takes to move). +- **Instrument proxy signals.** When a formal A/B isn't feasible, proxies like thumbs up/down, regeneration rate, source-click rate, copy/share actions, and session abandonment can catch large regressions and wins. Add them to production telemetry before they're needed. ## Wrapping Up -That completes the four-layer retrieval evaluation stack: ANN precision, retrieval relevance, pipeline output quality, and business impact. Each layer catches a different class of regression, and running them together means retrieval changes can ship with defensible evidence at every stage. +That completes the four-layer retrieval evaluation stack: ANN precision, retrieval relevance, pipeline output quality, and business impact. Each layer catches a different class of regression. diff --git a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality.md b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality.md index ea0850f38..51bef9cf0 100644 --- a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality.md +++ b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality.md @@ -18,14 +18,14 @@ To measure ANN precision, you compare Qdrant's approximate top-k against the exa ## The Four Layers of Retrieval Evaluation -Retrieval quality operates at four layers. Each catches different failure modes at a different cadence and cost. This tutorial covers layer 1. +This tutorial is part of a four-layer retrieval evaluation framework. - **Layer 1: ANN precision** (this tutorial). How closely approximate nearest-neighbor search matches exact kNN. Run on every index or embedding change. - **Layer 2: Retrieval relevance** ([Measuring Retrieval Relevance](/documentation/tutorials-search-engineering/retrieval-quality-golden-set/)). How well the results match query intent against a labeled dataset. Run weekly, or on retrieval-stack changes. - **Layer 3: Pipeline output quality** ([Evaluating Pipeline Output Quality](/documentation/tutorials-search-engineering/retrieval-quality-pipeline-output/)). Whether the full pipeline (retrieval plus an LLM generator, a ranker, or a UI) produces the right output. Run weekly, or on retrieval or generator changes. - **Layer 4: Business impact**. Whether better retrieval moves the KPIs the business cares about. Measured per release once the offline layers pass. -Retrieval quality sits on top of embedding quality. Embedding quality is measured separately by benchmarks like [MTEB](https://huggingface.co/spaces/mteb/leaderboard) and sets the ceiling on every downstream metric. +Retrieval quality sits on top of embedding quality, measured separately by benchmarks like [MTEB](https://huggingface.co/spaces/mteb/leaderboard), which sets the ceiling on every downstream metric. ## Measure ANN Precision with the Web UI @@ -41,7 +41,7 @@ HNSW is a hierarchical graph where each node has a set of links to other nodes. For the full list of HNSW parameters, including on-disk storage and precision/memory trade-offs, see [Optimize Performance](/documentation/ops-optimization/optimize/). -Toggle **advanced mode** in the Search Quality tab to tune these parameters inline. Raise `m` to 32 and `ef_construct` to 200, then run the evaluation again. +Toggle **advanced mode** in the Search Quality tab to tune these parameters inline. To see the effect, try raising `m` and `ef_construct` (for example, to 32 and 200), then run the evaluation again. ![Search Quality advanced mode with HNSW parameters](/documentation/tutorials/retrieval-quality/search-quality-advanced.png) @@ -49,7 +49,7 @@ Precision should increase at the cost of higher build time and memory. ![Search Quality results after HNSW tuning](/documentation/tutorials/retrieval-quality/search-quality-after-tuning.png) -Tune until you hit the point that matches your quality and cost targets. +Tune until the balance between precision and cost matches your targets. ## Automate in CI with Python @@ -93,6 +93,4 @@ Wire it into CI and fail the job when precision falls below your target threshol ## Next Steps -Measuring ANN precision keeps HNSW tuning honest. The Search Quality tab gives you a quick interactive read; the Python helper plugs into CI to catch regressions after embedding model changes or index config updates. - -Once ANN precision is on target, the next layer is whether the retrieved results are relevant to users. See [Measuring Retrieval Relevance](/documentation/tutorials-search-engineering/retrieval-quality-golden-set/). \ No newline at end of file +Once ANN precision is on target, continue with [Measuring Retrieval Relevance](/documentation/tutorials-search-engineering/retrieval-quality-golden-set/) to check how well those results match user intent. \ No newline at end of file From cef9a3e6a71b0c569a2958431c90d4d95d37da01 Mon Sep 17 00:00:00 2001 From: Dylan Couzon Date: Fri, 24 Apr 2026 12:09:44 -0400 Subject: [PATCH 54/64] syntax nitpick --- .../tutorials-search-engineering/retrieval-quality.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality.md b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality.md index 51bef9cf0..42d0740ae 100644 --- a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality.md +++ b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality.md @@ -29,7 +29,7 @@ Retrieval quality sits on top of embedding quality, measured separately by bench ## Measure ANN Precision with the Web UI -Qdrant's Web UI has a Search Quality tab that measures the gap between approximate and exact search without requiring evaluation code. Open the dashboard at `http://localhost:6333/dashboard` (or your cluster's dashboard on Qdrant Cloud), navigate to your collection, open the Search Quality tab, and click **Check Index Quality** to run the comparison. +Qdrant's Web UI includes a Search Quality tab that measures the gap between approximate and exact search without writing evaluation code. Open the dashboard at `http://localhost:6333/dashboard` (or your cluster's dashboard on Qdrant Cloud), navigate to your collection, open the Search Quality tab, and click **Check Index Quality** to run the comparison. ![Search Quality tab with default evaluation results](/documentation/tutorials/retrieval-quality/search-quality-tab.png) @@ -37,7 +37,7 @@ The tab reports average **precision@k** (1.0 = perfect overlap; 0.95+ is typical ## Tuning the HNSW Parameters -HNSW is a hierarchical graph where each node has a set of links to other nodes. The `m` parameter controls the number of edges per node: higher `m` means higher precision at the cost of more memory. The `ef_construct` parameter controls how many neighbors are considered during index building: higher `ef_construct` means higher precision at the cost of longer indexing time. Defaults are `m=16` and `ef_construct=100`. +HNSW is a hierarchical graph where each node has a set of links to other nodes. The `m` parameter controls the number of edges per node: higher `m` means higher precision at the cost of more memory. The `ef_construct` parameter controls how many neighbors are considered during index building: higher `ef_construct` means higher precision at the cost of longer indexing time. The defaults are `m=16` and `ef_construct=100`. For the full list of HNSW parameters, including on-disk storage and precision/memory trade-offs, see [Optimize Performance](/documentation/ops-optimization/optimize/). From 9f096c4d7e4957e0433a6443e4cc2f51c0d43dc2 Mon Sep 17 00:00:00 2001 From: Dylan Couzon Date: Mon, 27 Apr 2026 11:30:43 -0400 Subject: [PATCH 55/64] Simplify definitions --- .../tutorials-search-engineering/retrieval-quality.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality.md b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality.md index 42d0740ae..35dbf8ecd 100644 --- a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality.md +++ b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality.md @@ -20,10 +20,10 @@ To measure ANN precision, you compare Qdrant's approximate top-k against the exa This tutorial is part of a four-layer retrieval evaluation framework. -- **Layer 1: ANN precision** (this tutorial). How closely approximate nearest-neighbor search matches exact kNN. Run on every index or embedding change. -- **Layer 2: Retrieval relevance** ([Measuring Retrieval Relevance](/documentation/tutorials-search-engineering/retrieval-quality-golden-set/)). How well the results match query intent against a labeled dataset. Run weekly, or on retrieval-stack changes. -- **Layer 3: Pipeline output quality** ([Evaluating Pipeline Output Quality](/documentation/tutorials-search-engineering/retrieval-quality-pipeline-output/)). Whether the full pipeline (retrieval plus an LLM generator, a ranker, or a UI) produces the right output. Run weekly, or on retrieval or generator changes. -- **Layer 4: Business impact**. Whether better retrieval moves the KPIs the business cares about. Measured per release once the offline layers pass. +- **Layer 1: ANN precision** (this tutorial). How closely approximate nearest-neighbor search matches exact kNN. +- **Layer 2: Retrieval relevance** ([Measuring Retrieval Relevance](/documentation/tutorials-search-engineering/retrieval-quality-golden-set/)). How well the results match query intent against a labeled dataset. +- **Layer 3: Pipeline output quality** ([Evaluating Pipeline Output Quality](/documentation/tutorials-search-engineering/retrieval-quality-pipeline-output/)). Whether the full pipeline (retrieval plus an LLM generator, a ranker, or a UI) produces the right output. +- **Layer 4: Business impact**. Whether better retrieval moves the KPIs the business cares about. Retrieval quality sits on top of embedding quality, measured separately by benchmarks like [MTEB](https://huggingface.co/spaces/mteb/leaderboard), which sets the ceiling on every downstream metric. From ac9f77d9f309b9928dddac282287246f8e85bc37 Mon Sep 17 00:00:00 2001 From: Dylan Couzon Date: Tue, 28 Apr 2026 12:02:53 -0400 Subject: [PATCH 56/64] Trim business-impact framing from retrieval-quality tutorials Keep a brief Layer 4 mention in the ANN guide and remove the dedicated section from the pipeline-output guide. Co-Authored-By: Claude Opus 4.7 (1M context) --- .../retrieval-quality-pipeline-output.md | 25 +------------------ .../retrieval-quality.md | 2 +- 2 files changed, 2 insertions(+), 25 deletions(-) diff --git a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-pipeline-output.md b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-pipeline-output.md index 38acef81e..924e2b4da 100644 --- a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-pipeline-output.md +++ b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-pipeline-output.md @@ -186,29 +186,6 @@ Ragas's metrics assume the consumer is an LLM generator. If retrieval feeds some **Cost scaling.** LLM-as-judge cost grows with queries times metrics times judge calls per metric, and Ragas makes multiple judge calls per sample. A 500-query golden set with three metrics runs into the thousands of judge-model calls per run. Sample aggressively during iteration and reserve the full sweep for release candidates. -## Connecting to Business Impact - -Once pipeline output quality is on target, the remaining question is whether those offline wins move the KPIs the business responds to. The standard answer is an A/B test: ship the change to a subset of users, compare their KPIs against a control group receiving the old behavior, and isolate the change's effect from unrelated drift. It's the hardest measurement to get right, but a few disciplines make it manageable without a full experimentation platform. - -### Pick KPIs That Match the Product Shape - -No single KPI captures "retrieval is working." The right one depends on what retrieval is for. Pair one or two leading KPIs (which respond quickly) with a lagging KPI (which takes weeks or months to move). - -| Application | Leading KPIs | Lagging KPIs | -|---|---|---| -| RAG or Q&A | Regeneration rate, follow-up rate, source-click rate | Retention, NPS | -| Search UI | CTR@1, abandonment rate, reformulation rate | Retention, repeat usage | -| Agentic | Step count to completion, tool-selection accuracy | Cost per completed task | -| Recommendations | Engagement rate, diversity-adjusted engagement | Retention, long-term value | - -### Measurement Best Practices - -Three practices make A/B results more credible: - -- **Pre-register the decision rule.** Before the test, write down win criteria, no-ship criteria, and which guardrails (latency, cost, slice performance, safety) must not regress. -- **Calibrate offline against online.** Track how offline metric changes map to KPI changes over several launches. Three or four paired measurements usually reveal the slope (how much offline translates), the threshold (below which online noise dominates), and the lag (how long the KPI takes to move). -- **Instrument proxy signals.** When a formal A/B isn't feasible, proxies like thumbs up/down, regeneration rate, source-click rate, copy/share actions, and session abandonment can catch large regressions and wins. Add them to production telemetry before they're needed. - ## Wrapping Up -That completes the four-layer retrieval evaluation stack: ANN precision, retrieval relevance, pipeline output quality, and business impact. Each layer catches a different class of regression. +That completes the three retrieval-evaluation layers covered in this series: ANN precision, retrieval relevance, and pipeline output quality. Each catches a different class of regression. diff --git a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality.md b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality.md index 35dbf8ecd..51ea47353 100644 --- a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality.md +++ b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality.md @@ -23,7 +23,7 @@ This tutorial is part of a four-layer retrieval evaluation framework. - **Layer 1: ANN precision** (this tutorial). How closely approximate nearest-neighbor search matches exact kNN. - **Layer 2: Retrieval relevance** ([Measuring Retrieval Relevance](/documentation/tutorials-search-engineering/retrieval-quality-golden-set/)). How well the results match query intent against a labeled dataset. - **Layer 3: Pipeline output quality** ([Evaluating Pipeline Output Quality](/documentation/tutorials-search-engineering/retrieval-quality-pipeline-output/)). Whether the full pipeline (retrieval plus an LLM generator, a ranker, or a UI) produces the right output. -- **Layer 4: Business impact**. Whether better retrieval moves the KPIs the business cares about. +- **Layer 4: Business impact**. Whether better retrieval moves the KPIs the business cares about. This layer is application-specific and out of scope for these tutorials. Retrieval quality sits on top of embedding quality, measured separately by benchmarks like [MTEB](https://huggingface.co/spaces/mteb/leaderboard), which sets the ceiling on every downstream metric. From b7b2865e1453995ab09794bd520e0d2e026325a9 Mon Sep 17 00:00:00 2001 From: Dylan Couzon Date: Wed, 29 Apr 2026 14:49:05 -0400 Subject: [PATCH 57/64] Fix ANN precision tutorial: tune hnsw_ef, not build-time params The Search Quality tab uses the Query Points API, so it can only tune search-time SearchParams. Replace the m/ef_construct walkthrough with hnsw_ef and link to the Essentials course for the build-time trade-offs. Co-Authored-By: Claude Opus 4.7 (1M context) --- .../retrieval-quality.md | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality.md b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality.md index 51ea47353..fb794819a 100644 --- a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality.md +++ b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality.md @@ -11,8 +11,7 @@ weight: 5 | Time: 15 min | Level: Beginner | | | |--------------|---------------------|--|----| -This tutorial focuses on **ANN precision**: how closely approximate nearest-neighbor (ANN) search matches exact kNN search. -To measure ANN precision, you compare Qdrant's approximate top-k against the exact kNN top-k using `precision@k`, then tune HNSW parameters to trade memory and build time for higher precision. +This tutorial focuses on **ANN precision**: how closely approximate nearest-neighbor (ANN) search matches exact kNN search, measured with `precision@k`. **Prerequisites.** A Qdrant collection populated with your documents as points (vectors + optional payload). @@ -33,23 +32,19 @@ Qdrant's Web UI includes a Search Quality tab that measures the gap between appr ![Search Quality tab with default evaluation results](/documentation/tutorials/retrieval-quality/search-quality-tab.png) -The tab reports average **precision@k** (1.0 = perfect overlap; 0.95+ is typical for well-tuned HNSW). HNSW has tunable parameters that trade memory and index build time for higher precision. +The tab reports average **precision@k** (1.0 = perfect overlap; 0.95+ is typical for well-tuned HNSW). -## Tuning the HNSW Parameters +## Tuning Search Precision -HNSW is a hierarchical graph where each node has a set of links to other nodes. The `m` parameter controls the number of edges per node: higher `m` means higher precision at the cost of more memory. The `ef_construct` parameter controls how many neighbors are considered during index building: higher `ef_construct` means higher precision at the cost of longer indexing time. The defaults are `m=16` and `ef_construct=100`. - -For the full list of HNSW parameters, including on-disk storage and precision/memory trade-offs, see [Optimize Performance](/documentation/ops-optimization/optimize/). - -Toggle **advanced mode** in the Search Quality tab to tune these parameters inline. To see the effect, try raising `m` and `ef_construct` (for example, to 32 and 200), then run the evaluation again. +Toggle **advanced mode** in the Search Quality tab to tune search-time parameters inline. The main one is `hnsw_ef`: the number of candidates evaluated during a search. Raising it explores more of the graph, improving precision at the cost of higher query latency. To see the effect, raise `hnsw_ef` (for example, to 256) and run the evaluation again. ![Search Quality advanced mode with HNSW parameters](/documentation/tutorials/retrieval-quality/search-quality-advanced.png) -Precision should increase at the cost of higher build time and memory. +Precision should increase at the cost of higher query latency. ![Search Quality results after HNSW tuning](/documentation/tutorials/retrieval-quality/search-quality-after-tuning.png) -Tune until the balance between precision and cost matches your targets. +If `hnsw_ef` alone does not get you to your precision target, the build-time parameters `m` and `ef_construct` set the ceiling on how precise approximate search can be. Changing them requires rebuilding the HNSW index. For the trade-offs and how to choose values, see [HNSW Indexing Fundamentals](/course/essentials/day-2/what-is-hnsw/) in the Qdrant Essentials course. ## Automate in CI with Python From 9f4b4c05ead0024951d838a43ed625fbf2e8b96e Mon Sep 17 00:00:00 2001 From: Dylan Couzon Date: Wed, 29 Apr 2026 15:00:06 -0400 Subject: [PATCH 58/64] Rename ANN precision tutorial to ANN recall Recall@k is the standard metric for ANN benchmarks. Rename the tutorial title, headings, helper function, and prose; update the recent inline edits and merge sentence; and update cross-links from the relevance and pipeline-output tutorials and the tutorials index. Generic Precision@k mentions in the ranx metric list are unrelated and left alone. Co-Authored-By: Claude Opus 4.7 (1M context) --- .../content/tutorials/search-engineering.md | 2 +- .../documentation/tutorials-lp-overview.md | 2 +- .../retrieval-quality-golden-set.md | 2 +- .../retrieval-quality-pipeline-output.md | 4 +-- .../retrieval-quality.md | 36 +++++++++---------- 5 files changed, 23 insertions(+), 23 deletions(-) diff --git a/qdrant-landing/content/documentation/headless/content/tutorials/search-engineering.md b/qdrant-landing/content/documentation/headless/content/tutorials/search-engineering.md index da6d5abda..44a4ad68c 100644 --- a/qdrant-landing/content/documentation/headless/content/tutorials/search-engineering.md +++ b/qdrant-landing/content/documentation/headless/content/tutorials/search-engineering.md @@ -5,7 +5,7 @@ | [Relevance Feedback](/documentation/tutorials-search-engineering/using-relevance-feedback/) | Relevance Feedback Retrieval in Qdrant | Python | 30m | Intermediate | | [Collaborative Filtering](/documentation/tutorials-search-engineering/collaborative-filtering/) | Collaborative filtering using sparse embeddings. | Python | 45m | Intermediate | | [Multivector Document Retrieval](/documentation/tutorials-search-engineering/pdf-retrieval-at-scale/) | PDF RAG using ColPali and embedding pooling. | Python | 30m | Intermediate | -| [Measuring ANN Precision](/documentation/tutorials-search-engineering/retrieval-quality/) | Measure ANN precision with the Web UI and tune HNSW parameters. | Web UI | 15m | Beginner | +| [Measuring ANN Recall](/documentation/tutorials-search-engineering/retrieval-quality/) | Measure ANN recall with the Web UI and tune HNSW parameters. | Web UI | 15m | Beginner | | [Measuring Retrieval Relevance](/documentation/tutorials-search-engineering/retrieval-quality-golden-set/) | Build a labeled golden set and score retrieval relevance with ranx. | Python | 40m | Intermediate | | [Evaluating Pipeline Output Quality](/documentation/tutorials-search-engineering/retrieval-quality-pipeline-output/) | Score a RAG pipeline with Ragas and isolate retrieval vs generation failures. | Python | 45m | Intermediate | | [Hybrid Search with Reranking](/documentation/tutorials-search-engineering/reranking-hybrid-search/) | Implement late interaction and sparse reranking. | Python | 40m | Intermediate | diff --git a/qdrant-landing/content/documentation/tutorials-lp-overview.md b/qdrant-landing/content/documentation/tutorials-lp-overview.md index 8a746ee7f..86dc4ddc6 100644 --- a/qdrant-landing/content/documentation/tutorials-lp-overview.md +++ b/qdrant-landing/content/documentation/tutorials-lp-overview.md @@ -68,7 +68,7 @@ partition: develop | [Semantic Search Basics](/documentation/tutorials-search-engineering/neural-search/) | Deploy a search service for company descriptions. | FastAPI | 30m | Beginner | | [Collaborative Filtering](/documentation/tutorials-search-engineering/collaborative-filtering/) | Collaborative filtering using sparse embeddings. | Python | 45m | Intermediate | | [Multivector Document Retrieval](/documentation/tutorials-search-engineering/pdf-retrieval-at-scale/) | PDF RAG using ColPali and embedding pooling. | Python | 30m | Intermediate | -| [Measuring ANN Precision](/documentation/tutorials-search-engineering/retrieval-quality/) | Measure ANN precision with the Web UI and tune HNSW parameters. | Web UI | 15m | Beginner | +| [Measuring ANN Recall](/documentation/tutorials-search-engineering/retrieval-quality/) | Measure ANN recall with the Web UI and tune HNSW parameters. | Web UI | 15m | Beginner | | [Measuring Retrieval Relevance](/documentation/tutorials-search-engineering/retrieval-quality-golden-set/) | Build a labeled golden set and score retrieval relevance with ranx. | Python | 40m | Intermediate | | [Evaluating Pipeline Output Quality](/documentation/tutorials-search-engineering/retrieval-quality-pipeline-output/) | Score a RAG pipeline with Ragas and isolate retrieval vs generation failures. | Python | 45m | Intermediate | | [Reranking for Better Search](/documentation/search-precision/reranking-semantic-search/) | Use multivector representations for better ranking. | Python | 30m | Intermediate | diff --git a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-golden-set.md b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-golden-set.md index 5d7c5c26b..99be593b7 100644 --- a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-golden-set.md +++ b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-golden-set.md @@ -13,7 +13,7 @@ aliases: This tutorial focuses on **retrieval relevance**: how well retrieved results match real user intent. To measure retrieval relevance, you need a labeled dataset of queries paired with their expected relevant documents (commonly called a *golden query set* or *ground truth*). This tutorial covers both building that dataset and running it through Qdrant to compute relevance metrics. -This tutorial is part of a four-layer retrieval evaluation framework; see [Measuring ANN Precision](/documentation/tutorials-search-engineering/retrieval-quality/#the-four-layers-of-retrieval-evaluation) for the full overview. +This tutorial is part of a four-layer retrieval evaluation framework; see [Measuring ANN Recall](/documentation/tutorials-search-engineering/retrieval-quality/#the-four-layers-of-retrieval-evaluation) for the full overview. **Prerequisites.** A Qdrant collection populated with your documents as points (vectors + optional payload), an embedding model available to encode queries at evaluation time, and Python with `ranx` installed. diff --git a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-pipeline-output.md b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-pipeline-output.md index 924e2b4da..41bc61f0a 100644 --- a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-pipeline-output.md +++ b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-pipeline-output.md @@ -13,7 +13,7 @@ aliases: This tutorial focuses on **pipeline output quality**: whether the full retrieval pipeline produces the right output once retrieved results reach a consumer, most often an LLM generator in a RAG system. To measure pipeline output quality, you run your golden set through the full pipeline, capture each `(question, retrieved_context, answer)` triple, and score the triples against judgment metrics like faithfulness, answer relevancy, and context precision. -This tutorial is part of a four-layer retrieval evaluation framework; see [Measuring ANN Precision](/documentation/tutorials-search-engineering/retrieval-quality/#the-four-layers-of-retrieval-evaluation) for the full overview. +This tutorial is part of a four-layer retrieval evaluation framework; see [Measuring ANN Recall](/documentation/tutorials-search-engineering/retrieval-quality/#the-four-layers-of-retrieval-evaluation) for the full overview. **Prerequisites.** A Qdrant collection populated with your documents as points (vectors + a `text` payload field for the chunk content), a labeled golden set (see [Measuring Retrieval Relevance](/documentation/tutorials-search-engineering/retrieval-quality-golden-set/)), LLM access for generation and judging, and Python with `ragas` installed. @@ -188,4 +188,4 @@ Ragas's metrics assume the consumer is an LLM generator. If retrieval feeds some ## Wrapping Up -That completes the three retrieval-evaluation layers covered in this series: ANN precision, retrieval relevance, and pipeline output quality. Each catches a different class of regression. +That completes the three retrieval-evaluation layers covered in this series: ANN recall, retrieval relevance, and pipeline output quality. Each catches a different class of regression. diff --git a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality.md b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality.md index fb794819a..bd4c6be23 100644 --- a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality.md +++ b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality.md @@ -1,17 +1,17 @@ --- -title: Measuring ANN Precision +title: Measuring ANN Recall aliases: - /documentation/tutorials/retrieval-quality/ - /documentation/beginner-tutorials/retrieval-quality/ weight: 5 --- -# Measuring ANN Precision +# Measuring ANN Recall | Time: 15 min | Level: Beginner | | | |--------------|---------------------|--|----| -This tutorial focuses on **ANN precision**: how closely approximate nearest-neighbor (ANN) search matches exact kNN search, measured with `precision@k`. +This tutorial focuses on **ANN recall**: how closely approximate nearest-neighbor (ANN) search matches exact kNN search, measured with `recall@k`. **Prerequisites.** A Qdrant collection populated with your documents as points (vectors + optional payload). @@ -19,50 +19,50 @@ This tutorial focuses on **ANN precision**: how closely approximate nearest-neig This tutorial is part of a four-layer retrieval evaluation framework. -- **Layer 1: ANN precision** (this tutorial). How closely approximate nearest-neighbor search matches exact kNN. +- **Layer 1: ANN recall** (this tutorial). How closely approximate nearest-neighbor search matches exact kNN. - **Layer 2: Retrieval relevance** ([Measuring Retrieval Relevance](/documentation/tutorials-search-engineering/retrieval-quality-golden-set/)). How well the results match query intent against a labeled dataset. - **Layer 3: Pipeline output quality** ([Evaluating Pipeline Output Quality](/documentation/tutorials-search-engineering/retrieval-quality-pipeline-output/)). Whether the full pipeline (retrieval plus an LLM generator, a ranker, or a UI) produces the right output. - **Layer 4: Business impact**. Whether better retrieval moves the KPIs the business cares about. This layer is application-specific and out of scope for these tutorials. Retrieval quality sits on top of embedding quality, measured separately by benchmarks like [MTEB](https://huggingface.co/spaces/mteb/leaderboard), which sets the ceiling on every downstream metric. -## Measure ANN Precision with the Web UI +## Measure ANN Recall with the Web UI Qdrant's Web UI includes a Search Quality tab that measures the gap between approximate and exact search without writing evaluation code. Open the dashboard at `http://localhost:6333/dashboard` (or your cluster's dashboard on Qdrant Cloud), navigate to your collection, open the Search Quality tab, and click **Check Index Quality** to run the comparison. ![Search Quality tab with default evaluation results](/documentation/tutorials/retrieval-quality/search-quality-tab.png) -The tab reports average **precision@k** (1.0 = perfect overlap; 0.95+ is typical for well-tuned HNSW). +The tab reports average **recall@k** (1.0 = perfect overlap; 0.95+ is typical for well-tuned HNSW). -## Tuning Search Precision +## Tuning Search Recall -Toggle **advanced mode** in the Search Quality tab to tune search-time parameters inline. The main one is `hnsw_ef`: the number of candidates evaluated during a search. Raising it explores more of the graph, improving precision at the cost of higher query latency. To see the effect, raise `hnsw_ef` (for example, to 256) and run the evaluation again. +Toggle **advanced mode** in the Search Quality tab to tune search-time parameters inline. The main one is `hnsw_ef`: the number of candidates evaluated during a search. Raising it explores more of the graph, improving recall at the cost of higher query latency. To see the effect, raise `hnsw_ef` (for example, to 256) and run the evaluation again. ![Search Quality advanced mode with HNSW parameters](/documentation/tutorials/retrieval-quality/search-quality-advanced.png) -Precision should increase at the cost of higher query latency. +Recall should increase at the cost of higher query latency. ![Search Quality results after HNSW tuning](/documentation/tutorials/retrieval-quality/search-quality-after-tuning.png) -If `hnsw_ef` alone does not get you to your precision target, the build-time parameters `m` and `ef_construct` set the ceiling on how precise approximate search can be. Changing them requires rebuilding the HNSW index. For the trade-offs and how to choose values, see [HNSW Indexing Fundamentals](/course/essentials/day-2/what-is-hnsw/) in the Qdrant Essentials course. +If `hnsw_ef` alone does not get you to your recall target, the build-time parameters `m` and `ef_construct` set the ceiling on the recall approximate search can achieve. Changing them requires rebuilding the HNSW index. For the trade-offs and how to choose values, see [HNSW Indexing Fundamentals](/course/essentials/day-2/what-is-hnsw/) in the Qdrant Essentials course. ## Automate in CI with Python -The Web UI is the fastest way to check precision interactively. For continuous integration or scripted regression tests, the Qdrant client exposes the same exact-search mode via `search_params=models.SearchParams(exact=True)`. Compare the ANN and exact top-k sets yourself and compute precision@k. +The Web UI is the fastest way to check recall interactively. For continuous integration or scripted regression tests, the Qdrant client exposes the same exact-search mode via `search_params=models.SearchParams(exact=True)`. Compare the ANN and exact top-k sets yourself and compute recall@k. -This helper takes a list of query vectors and returns the average precision@k. Use a representative sample of query vectors from your workload (typically 20–50, embedded with the same model your collection uses) as your test set. +This helper takes a list of query vectors and returns the average recall@k. Use a representative sample of query vectors from your workload (typically 20–50, embedded with the same model your collection uses) as your test set. ```python from qdrant_client import QdrantClient, models -def avg_precision_at_k( +def avg_recall_at_k( client: QdrantClient, collection_name: str, test_vectors: list, k: int, ) -> float: - precisions = [] + recalls = [] for vector in test_vectors: ann_ids = { p.id for p in client.query_points( @@ -79,13 +79,13 @@ def avg_precision_at_k( search_params=models.SearchParams(exact=True), ).points } - precisions.append(len(ann_ids & knn_ids) / k) + recalls.append(len(ann_ids & knn_ids) / k) - return sum(precisions) / len(precisions) + return sum(recalls) / len(recalls) ``` -Wire it into CI and fail the job when precision falls below your target threshold. This catches regressions from embedding model swaps or index config changes before they reach production. +Wire it into CI and fail the job when recall falls below your target threshold. This catches regressions from embedding model swaps or index config changes before they reach production. ## Next Steps -Once ANN precision is on target, continue with [Measuring Retrieval Relevance](/documentation/tutorials-search-engineering/retrieval-quality-golden-set/) to check how well those results match user intent. \ No newline at end of file +Once ANN recall is on target, continue with [Measuring Retrieval Relevance](/documentation/tutorials-search-engineering/retrieval-quality-golden-set/) to check how well those results match user intent. \ No newline at end of file From 04426d8fec1848d2ad605b6fcd0fab3983bce226 Mon Sep 17 00:00:00 2001 From: Dylan Couzon Date: Wed, 29 Apr 2026 15:03:30 -0400 Subject: [PATCH 59/64] Rename Search Quality tab to ANN Recall in tutorial Web UI is renaming the tab, card title, and column header to "ANN Recall" alongside the precision-to-recall switch. Update the prose and screenshot alt text to match. Button label (Check Index Quality) stays as is. Co-Authored-By: Claude Opus 4.7 (1M context) --- .../tutorials-search-engineering/retrieval-quality.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality.md b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality.md index bd4c6be23..5ac9faeda 100644 --- a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality.md +++ b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality.md @@ -28,21 +28,21 @@ Retrieval quality sits on top of embedding quality, measured separately by bench ## Measure ANN Recall with the Web UI -Qdrant's Web UI includes a Search Quality tab that measures the gap between approximate and exact search without writing evaluation code. Open the dashboard at `http://localhost:6333/dashboard` (or your cluster's dashboard on Qdrant Cloud), navigate to your collection, open the Search Quality tab, and click **Check Index Quality** to run the comparison. +Qdrant's Web UI includes an ANN Recall tab that measures the gap between approximate and exact search without writing evaluation code. Open the dashboard at `http://localhost:6333/dashboard` (or your cluster's dashboard on Qdrant Cloud), navigate to your collection, open the ANN Recall tab, and click **Check Index Quality** to run the comparison. -![Search Quality tab with default evaluation results](/documentation/tutorials/retrieval-quality/search-quality-tab.png) +![ANN Recall tab with default evaluation results](/documentation/tutorials/retrieval-quality/search-quality-tab.png) The tab reports average **recall@k** (1.0 = perfect overlap; 0.95+ is typical for well-tuned HNSW). ## Tuning Search Recall -Toggle **advanced mode** in the Search Quality tab to tune search-time parameters inline. The main one is `hnsw_ef`: the number of candidates evaluated during a search. Raising it explores more of the graph, improving recall at the cost of higher query latency. To see the effect, raise `hnsw_ef` (for example, to 256) and run the evaluation again. +Toggle **advanced mode** in the ANN Recall tab to tune search-time parameters inline. The main one is `hnsw_ef`: the number of candidates evaluated during a search. Raising it explores more of the graph, improving recall at the cost of higher query latency. To see the effect, raise `hnsw_ef` (for example, to 256) and run the evaluation again. -![Search Quality advanced mode with HNSW parameters](/documentation/tutorials/retrieval-quality/search-quality-advanced.png) +![ANN Recall advanced mode with HNSW parameters](/documentation/tutorials/retrieval-quality/search-quality-advanced.png) Recall should increase at the cost of higher query latency. -![Search Quality results after HNSW tuning](/documentation/tutorials/retrieval-quality/search-quality-after-tuning.png) +![ANN Recall results after HNSW tuning](/documentation/tutorials/retrieval-quality/search-quality-after-tuning.png) If `hnsw_ef` alone does not get you to your recall target, the build-time parameters `m` and `ef_construct` set the ceiling on the recall approximate search can achieve. Changing them requires rebuilding the HNSW index. For the trade-offs and how to choose values, see [HNSW Indexing Fundamentals](/course/essentials/day-2/what-is-hnsw/) in the Qdrant Essentials course. From 8ca87dc442657121335fb698ca2c08bb5ca06145 Mon Sep 17 00:00:00 2001 From: Dylan Couzon Date: Thu, 30 Apr 2026 10:52:59 -0400 Subject: [PATCH 60/64] Update ANN Recall Tutorial assets Co-Authored-By: Claude Opus 4.7 (1M context) --- .../retrieval-quality.md | 4 +--- .../search-quality-advanced.png | Bin 75831 -> 200476 bytes .../search-quality-after-tuning.png | Bin 101832 -> 0 bytes .../retrieval-quality/search-quality-tab.png | Bin 156828 -> 246302 bytes 4 files changed, 1 insertion(+), 3 deletions(-) delete mode 100644 qdrant-landing/static/documentation/tutorials/retrieval-quality/search-quality-after-tuning.png diff --git a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality.md b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality.md index 5ac9faeda..4ef7f706b 100644 --- a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality.md +++ b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality.md @@ -38,11 +38,9 @@ The tab reports average **recall@k** (1.0 = perfect overlap; 0.95+ is typical fo Toggle **advanced mode** in the ANN Recall tab to tune search-time parameters inline. The main one is `hnsw_ef`: the number of candidates evaluated during a search. Raising it explores more of the graph, improving recall at the cost of higher query latency. To see the effect, raise `hnsw_ef` (for example, to 256) and run the evaluation again. -![ANN Recall advanced mode with HNSW parameters](/documentation/tutorials/retrieval-quality/search-quality-advanced.png) - Recall should increase at the cost of higher query latency. -![ANN Recall results after HNSW tuning](/documentation/tutorials/retrieval-quality/search-quality-after-tuning.png) +![ANN Recall advanced mode with HNSW parameters](/documentation/tutorials/retrieval-quality/search-quality-advanced.png) If `hnsw_ef` alone does not get you to your recall target, the build-time parameters `m` and `ef_construct` set the ceiling on the recall approximate search can achieve. Changing them requires rebuilding the HNSW index. For the trade-offs and how to choose values, see [HNSW Indexing Fundamentals](/course/essentials/day-2/what-is-hnsw/) in the Qdrant Essentials course. diff --git a/qdrant-landing/static/documentation/tutorials/retrieval-quality/search-quality-advanced.png b/qdrant-landing/static/documentation/tutorials/retrieval-quality/search-quality-advanced.png index 0f57c944dcb06f134ef7d38b855cc0e4eb629178..8e5003db3c995df3e0f5dcc55492760dfbf538e8 100644 GIT binary patch literal 200476 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

    TQSfV2j*{u!WYqYo|_Pl8i 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�M`ei{%LiAhJWWNT`%%-* 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 z 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 JRY;fw{vYf?m)8IQ literal 75831 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

    KSO_xDl%`Q3{f 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 diff --git a/qdrant-landing/static/documentation/tutorials/retrieval-quality/search-quality-tab.png b/qdrant-landing/static/documentation/tutorials/retrieval-quality/search-quality-tab.png index 30e4645708b5260d137b243403656e648a3c6012..47558372b5b0f23b1792b64f177c84fadedacb84 100644 GIT binary patch literal 246302 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

      v;27g4a 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%0A3u#J@JS021v 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

      gI=N1-dl#X{c1$W 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

      EYs6JK3u{#GwR^jLD&;6jh=?&iXXbWgXX)}Z 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

      gMEqeXb~jTNW(|xar|6A+VHoOlX-jQR6fZK zfln3Lo`kJXR9!E)fM4tBq?(Wnc75JmAE|awmb0+i*%pJMNR^Nr)l>jZU;ykO4dobP z)sHH#0Qa*^8A;e;!}D&bDz5(;r@zsDgpKHwd$mWQ$kL`7xU;7nFT(#+!IrR%(%$4DN9A1h1=F41I*@ zpar?zR!5cWh~NF50c~u>kN6G0clp#%<;?q@%K+3y&-#JmjrX^?SH52trSJ}q8^`P? zFU2mr0w`y7{_h{-5;Dd%*=|Cb$??H1;RcBP53=1OKJvj4va~cv`a3y|XMlvu(T3f= z!of9QvfXn->At^S4PJPS4YEM84yc!`ZhAGFdKK*pC)o}=5r4;TuDg!-QpLeE`VrUy zVVv{aFYK%WJ$}?GvBKj;8f^{R6XRz^-BHTp%5Ys05*QFw&>A&;)a-#WpznJ@$q@%g zZgXg(ULZVg`R=TvwG?h4zPB9zH*Qdv$F|@7+WiE5gXUt#wSdhKm)#3_<>7B2X03Qn zr{)PS&V1)c)T&9FeJ>q)L zSDx}jUX9`kj+~wlmoD=5Y=t8d`i5ql$oJ~npZYv&g!h1d!k6k9V6DyDhS>M)#)o<~ zn?0p$U2v}B*@$>tU3B%+9mrly^Br7aIu#qzp&hWrO!keyPo(E&I&*|Szl9Uc#s%g3 zX&mqMsVGty2>x*w$hp~wIv^FJc4&^Y;QI+^UT?eJUrQCyMhZAPQO*F17uuzWPE%J5sk@F%l;dP`Ci3bcW^=}Q#(4If5ze3jgw?SU!pzC5LV-^?r%b3p}=Hr zimhs!;*hS~wU_vPiUY>ezg%23F#JKLgOhB;L&E<_W`Nfaj$PxS`2L=EmGyOR>jIZ# zcQO*SPXC$l&91EzQ-&~JxeZBQ&6*`C1`AnlK&WQx`J0@PO~~bPKQA(qzIo;zAsoX2 zXO$tqp9&DR?2zQU{B|cr>}is=f3YoYZ^{O>ASCu2;Ks!vfS5F|4L!}ZqMc`6HQ-tp z-9bGd;T)S7*mK8u5n-~H+T?+6_;Aa%Fo$r!n?Mr=JrMV|r^R8C$C-d#EVQ3B^c)UJ zyB8od_z`RH1s9TAnLEq_dH@3fz^!?hJz%WxDdzC~AR)iJR!rO{iNRRiR3nHB?*zIG z{$1-jlo(9f^Qu3l3d5|VB2T%UydDPcLmA(kmEQ^`5XUgWa3bztT@Ww78oghS0kkj> zR6iF@AAA2-9}x+oh|BDIoQT@yGTyKd?)nl-fs3VjO<&5X@?s+Hl|q`_yW=eLjFSmd z@)ev%DBURTQN&+wY-evomV)v1i0Sux|MU4>6L~1*G_!BUZN&Y_9KV~5Ej)x)qf}+8 z9Ko$){~|rBg+I}lBe*9RxxLk>FU-ouW}(pBkX^B6^#z6G`T`b;kkD0#3tP6)UZ=@y z`%y)LFCL~v;Axm;!)BJV&H^e5i6TMS;739zaR}IwbpEkDx^&@QE{~F46xnrrUW|Qu#l=fA`}flu>D|>JyqE&){{~P;4{VJN-z1F#01Ub zpWub4YCTW03)0f)9|~9~l3M8pdi)LRTtWw;DVX9`+s4Y%F6l*~I4oYKej8rLzy@NR zk?&GPa`@ktV}rj;xo?Q$e11a4MwL(Do$>ePCfMpvAnrZI+37AHe>GuT>TZg~Wqr_( z8MY-wT}?uh_WUq$$8VAr5qdz` z;itktG}7Nq2GqfeX*RV&HSJ3kKMw8!-h4m%)gJ`y>|$M^BZ-9xiitwv=7RBicj$3m zNPU6#i9#ePT=St)l>mw_G{S9a5sIOnUwF7qI5E?=x@O?6{8XhJ*m;PkkM@ z)su(`X`fuy7{rg6;O%kvOxCo6wqv;utklgCr02~$``U+bEc;(~hZCPEZ(b<*6VTow z_>q_w_x&DSgjIrT?z=(0wZ9_XUy4emU*@d4Ed%pQgY~Fbp9f9XhluwZoqK z6C*Tg$a8?aJ#d;BaXT<@T}q_O)OFMEJ<_S1BI?IbY)f~$vXvf~n8JeiDM(yAd>}|g z;FcPYPC1!1Ur}T-zHOrnfuSxUp-mhxRc5lL+i=)uY0f3fZ@_#5Nrt%Ya8KznW5l>K zc{qEV*ma&_j5*sK$9+d}3LD#68!vk5eLT#;vN`WzJff6S6T~0zr?<-9h`0ezl_&VX zBD0Xw>}uR@Y5LJB+=B}(=S)^k<^pq4j!zq*cGK+oJT9%``$8XV;pgC8udJQ+ zT&_kv0{-U+mFRZF>m8lzUw1>n;;E4kNCw!F{oV_x;SxUfM93Er=UMr{?xb{y=iBq3 zV<}ykh?{-%@fQ-0kk+jK%Fghfg(tC1Fjph2&+flv!t{8etMPLq$@mK%*GyQv_fV1| zlQ+~rh&eX1Z%32d+ZKK{9z6*eb7W8p5fVX)1v<=cO=gpM{*1&KD}k)c(Ol0Mu%(W)=Ozg&TKqY_xgiM zvuWtX%?nbA+g5NCh-lX!vmE>wkmgXq$W;~P-upQ+OCUX~1 z=!Hndf>wQ~Mucm5R5)OASoin?+sX?_;ugCnq)SzPOglhJz>f2yH+PDK5Nr@=6GQ^* zFzT=AgID2XQbjQ4s2sj*%37U|P`D=+gYnhIe@-v9G8MVHa8|T}H*3e6&sPSSjc{6& zE3^_E>X3LVSFVl<<6SrzlS~x*bUwSYrx*hTwt_+iUgl0<3SHU_5C~h^XU0V*{;Bv zm~P+a9gi4`z+&tvTCsb^>jHZ?98vJ~X%=>QCis&$pD4mswpkK@4ZTx&6vtsU+Wf>H zXohP2Pbf|s4ca8ETaiJ#N4f{%#<@DB@s3fjNC@07yEzeW=nVbcz!ITSJCX6#`COiy zr1ng9>k7Z;GfrP5MgsV7?fQcZ%`5zwAKqHwnY^6NSF0|LB18E%x|dSl$(0|n%qMeh zPCn+`ZH23ssnN{6-s|@ed=?Lc*VpD_^me-_0CEva`BU&_t1GuYXjJLge)o*s^w`lJ zl%VbGgJ?SAWtc-;k%tgTWJf6t6%F2(to=1g7B|m4-X7j7z>lqIy z%j3O9ct+%E+lf|2Wwe)FxEF#@Q9{HU_9*O-sT8slrhKM9SsrVpyxv-}Xxp%@%GAqAbCM(>oJ_)6&W?w^ zW;-9qEiiwykx;A2yEg&yOy+bLdyqK}dV}k2(mBzY5o~q3DzS_w#(OUnX7Ms2O`zWP zC!bq4`4(o|dM?%p*3v*ZAuebnK@~hMhf)nZrkDBj%+T6Gu4qgWNs<$Ys>(%J7~qIU zs8pTm?VU2md~L25XCQ*8(OzsaWn$4B8vIb=OzL8JJToCLnWW|}*+(BmGHY1zNh%pC z4mTjY>${OKrjne`pWQMcc0H$vCD_wb!(qh+2^8v82IafrtYQwG6CL3PSh zw%%nnjMzv7@iA_XDIMOfXxzyL_8ws(*l|3h9$C+jH8>Or6lW`q^KfKe=p-VONa;%S z?GmXOR7aYEJT$43qy7D*SArIOu#Q)2v)9q1V*D&~g-V&Bd|s}oo;n{V<%!(rkmYg$ zV>iX?OVJ`zlIb=UF7bgEngfZXN8fLErPjU$`hVoaEwBwj)~T>i+a1d3cy7otS`|)E zDezG4(8gB&J9KC7voiJ4pCIt)$)-()$|9+vYZFiDuwpkj!(PIifw03F;lS9gs3G87q3kI8X zpbQ9k^y+|n2CETvZ~Ik=?(8^#A3ccJC$!Y4%fu8x&}7Op0Zl2=J9g6n=Xw=vKln8c zAo8M11~c9I#96zqxu%|0)+{ClXVxOc`7FClkwVT9;^^WqCG-R52I)B^n6JY%^_4nLowyDzX)WgvhWWZp0E97yyO4jUU zD|)(SL_Hfj(-}K^nrw;<^lKxS@f7%elP3hKU0{GV8TnWq5leG$>YM_e0)F)!oEkw% zEJJ_%RUP#QI@It6(0&3 z)!_2l1*JmAYHoiJyjB46CQ1$P zr~7$jR7y4ny_Lp`T?`r9b7L_brq?icm$0GCXZi>wA0Z><`WkSuS!tV;xhh-hIMi=m zJ?;+|ML-SVP`srpCMfIZc&_pXR?)r=!P08H-~ng%9|^;f@y}LTiswv{OV)g^#-TFs8OmgC8S*Fc20HU;HzRlu;uvi(k9N`NU-jBWEMBO=z z-mA9f3VY=B%F(NLDMKjNv zT+cC3LQMG8EFs^ae%y;FiC)K7{RPiHa*`Uv*M7Qopewq}iytiC2`0|34LY4#lFi{~ zj5I|s{}T`>+9(GiM{*1@4i{MZB~QnICOx4CxwO54Eb`^YV2sknH>aGjw-8#b=Asfq zpmU&kFUT>z)^!mOcGBJ4{k8P+gBJV#>=0wL>FmNM+hV=YGOIt`epXk#+=TX;1)7UK z^U{EXHQN)4$9$}px_@=`(+&USBo*w}PM{dB{~Bh0+=25n`UVVB>`t9VE3CV9n9D$x zsj;}9CjhhWv&;91#jD&U^6#?d6FIJ{-!fG>chH_2Kl_(Ax}E;isH{uDx%FKRSlUcq zMmY*yVA;_J9Ba2>V>Ve659e_K>qdHJ20i=hr`!ow34^XG`_J0-Uo_y&d`zQ_3TFVb z_DN$*J^#}vCu4PsepHM8drM{c3QP72DL1l{u3+YbQ#S*&opcWCYcfjznJPy%(246- zKj{8#N%%d+SV14;6pWF^vO`w)=bcaMd(HWer12>vf(NB+UaIvt)L#={4*I?&R^3Qt z+}Z&WZKS_Ud*sf#lW@~CX2#JmKyv_=I&ZK}UqHA5PwYV9|? zDCs9jVw;<^eWF8d^oo#a|GUS7DUNCQ+vtw-Sn!a7AT!yG&s#kcRLZ?Ol@aFD*BnWF z9(U;_{l9IiMjl^em&s<+u?{R}1S+;DIT(y%1j=(>J>g6lPmxqICE+uA+JgR(T7S<{)5MSaFA?Kwdn>p^kJ0!w@bKW0nCJ_cAnL(i|Z! zwB^~8emEg>Fh*n`);(J25!&sAwOB=L*}zd^rxHu1r47XYVgV$E z(fSV97+i?7eO-qkcVU_h6n6&Z zFfbXXk%b{n6OwuS)Q-%>r&eR`(il?Z<&&u{uA}gC>YE=Sf{rf~ddBvE^0zc`X0Tsh zP@_~Xdh(JUq@0uzfIsaXWjfHXp05DuV2A65siF|TRvbBuc1_I$XY;w;IctQvYlr_!q%Y_$*)!BBt-nw88HX5~EsL`=-~V1rVkQHnjtft}hI0CO*VdT5tOQz3+eD{r~=Z z1jb*9m&R#5@_+YDg=`BID8c@-Dg{2F^8P@vZ>VK9+Vx(MyuSMtPe6a<;L%o*9@@?g ziSNlmBbixPWISwA;9Uer3|Hjjl|6kPj0Ye7PN_buO0HR=nETBbY2n=zNDau9`A+_= z)nRMqvU9$a}@$#1E$)2DdBJMDNmqABb1q4r4 zudT^e^JAq}FU<+G0OQ&5$*O71EfXjkcF1JYCb#aT=z^srizKn9vk4Xe3Z~cq%hmP2 z_lN8S{`*z5>jVJxuSubh#bw0P1fl|8XX?1T$qxsDI1PO|5{QMt08-P@G;K77W^k2w zy4|| zlw+yyVd=9a;j}4fq@V19Ahb%c5AmVb)|3D5hkK~o?D@*|>lYxViTF+Znx|@NoCCQv zR&Wkc6ZD5J8Sgy#4E`UnpF5Jv>8kvmA9pp+({OEo`q^B4`O|S!eVKV25QNG1sSENvpv-J1!T`Qy5DoS?*1WcbiLtm z-Jcz_S_Qg#ozEh43_hbiTcHPY$Lg|k-%P_@4F+Qg|8&(0UNvi`zX%=0IPE6J-Ipg0 zB9{YmUoRS?wfT)Nt7T^J!zTgDji!mqP3CROP3~O^`wt`q_%eAI@ zpH`GEklpQ4E}9MJDzq6SJQ0aFq!vQmc3!+e$*CRJQD4%{6^TGeprc1LtCEH$fsR(s zWu+Yn&}<7^?#~~x`<`<>dWM}YfeRp!P}#DeP+1TCs9|KxeFeh*2kX_k=lHWMzu8=+ z>P%u-XQ$D+Tz{j{0L|p@j|xf?ZfDaZWnK2#7n~SC`rn|ZT-Jk3O@=OxnCDE1f?A1! zPm$aCVo|KWlN2EQ{bS#v*GH`W6oYCtl5}72BmY0%s%v~UE3MC=pQBO%LzQ&yYRRu* zUQ$Kq+lw8F@&YqPETs?AOcpx|PQTfv-Om>l)-Uo>M%&zNm4`G8;V4Aqp9px}fV|LG zIl9QPM!d(xe=Sf;5$&WS0RTBboSdmC-RN|4h37fqW(lxu9dmq>W6-=qJYbk?S^2f) zNeo71x8ep78L5m3SgWF0qa~5^Va}&pI=n7>W>L!3xpq|l2Vrj+R7bnEX$OZ8+}#pb zSg_z4+%>p+aCa6O+%32V4;tLvU4y&3J52NJz2DjM)qFKYrBb!3_(gZGyRYj!j`OXS zIZ2$L0y71QGZQQt_1uxhD7cI66)JzJJPQYRd#V_O>{%G;RV~L_sM}W(U2R5k!=3Rs zy53A&#jjjdg>ye;-Vb=qjc5*`}YIQ z_}#iT=434@3HySB@yZe|=cgZom-f~QUen)zCRye3RvmF*yG!zL-*nn4MW4nm^?cTa zQVeibigk{~HkriuIllnyK3BxzLtMRK5ZhZ`a0aLWo*qmnnJKMXE|$ck&AALYd^Hd0 z2aC9a|sPCgIV(-0$X)k3qp9_Y^lu z^g!iXFQ**%k7!QY?K3dt0fRzn%6ZqRKelPyHra1T*u%}@X^!zdKwfFwKV2zteglZ~ zZ>^r?CBR!+A@J;G*I3ZQp;0Z)a=$(ze?Q-S0DKuJxj>&|uC#&+G_GIp%a1;5H!5am z;!OjTQ@~f_t^P{$(Po(9c)ApB7xRMF`x{MG?-%m&r~8R|1+df6UxXUd)7I~|G|F@Z zE1rL1-V8qY)ZjPwzxi2~S20kDcu@M&if3Ozc1m}}dR~Qy!&QFfw~q1*w#^-j>1ZL7 zA(i{&ea3W|vW#}~T~rE_L*(vH%?y13vxVwxd`7+C1t1w@zL=koa=&7fP%gmabh6}@ zo=JdrK&>X5FP%{ctfkrFF0 z?!fpf_!}O(BHwzroB#v`H@T$0^8_{JNeoU}-L-dC+*=7vBy zU>HcrS^o#J!Vx)1 zcUjq2AogHx_1q{Q22x6)_9lLfj{C8)0rnr1IKFih%SLgE&)W#tKO zAn2h4+ESWO98I8h%PHCVaBK^1Y*ZpHpSpP%DYjN) zKx@o`0~524#Ir)3f8}=B*Bt09jj5 z9v!UDS^~V+({T^@p`$2lRtl~La!DK_9wj-hKsjHKyFjPFW-K;?dOlSvi|L56QbB70 z89#nVf%!1jL}Cv0!)Db>_63{O^Zl;9xyTjeI?L%%6fmCH?vN@2Vwa$}regG-Fj39# z4<55_$M?G#SlbsG0S2kTNFPjn_xi<1;H;vojZgy_!i_-H9@lQFIIQ3MZIxAc1WUe^ z;mV-NJiO6V+re$_Gle=L1fBS7*7@7Cp^rRnI_R6a)HB&i?DYQda$ZN3mKtar9hl4PF%CXoqLE~> zbqsLm23PDamoyP);<+}$s=AxE zBg0X5cPH69B|sTv>~$wYagXNd-uda@^UdPW@a!5Ro(pB+a?QH0r3w5}KcNDltox`Y zgEVrJcqqWl$vaW;3M|=X(YVl@OA!2+Eex zq07pSN6}JX!=_bK^H9f)QWP9N%ZJT;xSrFQ*k7J)bFIu-V6nXVd;ZW+a!*nLeHvzP z6b-8MLqnyeO=M66C3(KJ22Ccyr?VT4j_^99Q-s=F;4_0H@phYcZ;0j+UD*QC^NSjzVfYEoLdb&~*_cBrw zh;*RC>MV_x#{-^af0~tn;c_|7#xlqhY1f>N_#m0cRtkyXK3BG^Gt*^z;|Drt6z2>< z(vP9?&5D`?rWVfN`o5w5IuRqRvF4}AFs>5smwT}xmMQl7;KWN+UGGxAYmE4of!I&V z7(HtnAK7`JdiU0YrV3{^5@63qg+2B9sWrCVUqt~ARJv3zX8@|1VL``2Re}^WUP-&1 z1|YQJ*>dfoNFv_CY(@FV2XrT5o{G%g8Cb5s>ULzT{>-^J%m7|n$i-S~)bH^Wp=Z|N z)GzQ$rYBI3R}oP>VVb3d94)ukqD>WJM)eqYSbgRF)9j+mA91}P;3lHmHu zcnM$KQS^SzSZ;O7E#tSJ$4Om?;K@446+_0dxwbno{^aLKTQIpH)F=FL}zmS zpM-?hQDf}y)~ug-&2U`j9{p?HU#Gj@9_6>)YSQQAAmK2iY~nrI&7S4yIf$)RXL|*u zlpC}!&^dTxG{EaHJ?VKmLCu&Bisg^z`?f-^8195qYkY=;5MOmany{oSihNq*9!}=f z?lOWvU zRv8cF^py=KlQ1P-*$r&CmE{6Xo~lT-O3Un@{QaaC`qDRIXIM%6JH=P*50GaetyLiO z!}oQYac%AoIu@6*QZuj1D=9YBAsanmd;JQ%-Z>)aTPoI<(jRxej#eEvZ2J%ZQQT^R z&+}j2-to`N}{~y+>W67jW3$DzYqFIyeDUAg+Crr}zv_Z>iF-v$1e$3Ikd0?5&iXWn0H3hU> z=BKUC=Hq(4&e5k#{{f%mab-;;bx?ahcwNGU_so!oi%thHuG>-*LJ6KMF??@!@ANtZ z_6v)yg%_U2sPEPHazH`pKf-^V7Kq#R)c1n_>~Xu?G_y49rair&TpHiHA-0Vma}DAHk=*n|D`wyLgMnZrh)sY&k4=EnJZG|6}qOVEyMy6(I)R{5d8!I9j`y$>H#sSZ+ z0>-6^=svXxVB7X)K9IZjWU(EjMf@?1oSknwiIT%FijRb zWXh+*?H7s1r^nMaurBq&sqI4VvB3vDo^^&ITsedPe#j8ej-|2)84sn1T%Szo&Xi5b zcisGw%bYE_^Ssx=={Y2{Y6p0w)PCPQ`~r{geh(qsKY+0*M;LxY$?1Sq#s5`?;z{W#oW-m+HXgGCC@}Tgv@ypfujzYCw8z z9n_Dx@FgbU^oHd3#b6Srcz7((aXJmFRj{7=eE=v)E~aN5oh?+?E%%tFmmCWaYEiO0 z3Bu3(n;Xb?`*$}EvdYnf)?TCZ-UBVrGi=iaYi!&ka2ILqsXOehMugjinWQT^dBd*AN_C^d(Gkc2jv zd~;8T&jOA8@cn8t*t>}+)AjQ-K1_pVzM}+^m9xrPf0EeK%Oi>V3dENbprkfoakR15 znRsh>C_@vue%&Wv$F}QJYVVskLB}@Bp|94wO>fM4sa`_vosjbTu@9Xyc)x|vbhzl? zcZSnR7^%rRdqS~h<4y$RF|3D#iy}?&lN?A$fF^H~P|SfDb%js?R}9ZjaZhAIV&-YP zm;-T#hc7Res;|>1`LP4Xs|!k}E*)8XP8ZcG$Uf@#8Y_bDjTL`|$ozV^-p>}==~#~l zAs?GYkUpJ*<|hyV=}7-K?NlXkxYN%LC3Z8`_M#|<`1>8P1RY2+p)5-_Em+Z7q*3~y zM-crJA=!Aqdn|d7Dx=BKqKg2-i3F5%$4~l2C$PQI*yrr@!xo;85*Ro?V#6DGU+xSw z&_X-Cp95twa#mt{P*KTXGYQ{-CwUMg3#1C|4=TEqU=T_>2D0!%mqLXrlJGl87;Gv! zt}}d2rvrfKV4Busp0DwU(rEKC%sSe*dT^QaI+rx;bH>Dp$$yo2d;u&nGv#g1`RD29 z<0aoJn`u;Xqy@?iyqWiw?k^X(?~N7Cq*K|tlw>v$epJGwDGI4q@#M5=k{(GiW++5Y zSx2Nf>=<8sB@56;EeEYYeZqJzz4eEmypbY~uKkep`_ZX$zeT_39u-r(-k!j^?*;2E zV#Ae7rv<9bQBuErZ?G053?@O2mCMPbP^r!zS<}mzMBNgsAsiaEYt07p8r9h-z7&}n ztGNLNOn6if-DrBVu);`SgB3JI8!(XPVt9})`8iTUp3(e)UbA)5!cc;zSH>F(yN84f zPVFgo7%CqQl5a3%(<*~y6-S81zAN$UXNi3FZx!a8-@ZO73oqTUZ)Sv+H6DN|$Pvny z^^o&u*=z`eK=a2GP2{R6p>1{Jz>KR!lYN;pT#&yYwU`~&Kx6-YW?TBSOB7OTi*6_` zmn=lY_Y^~;nq9m*JCWNrU0+Et9aja{x!xsK9m4`}K^c!}K1yw7oA}FejDC0Mfj(Lc ztvLz(OAej8j6pdh%}{P@PJ8IrFQ0;wnEMVF&*N9xf}7xls| zxNylBpQNMZ6KIt*NGoWl7aUV-iCT(zRd!^Li2TUxTFxv1+RA`*7_>5>pb+&DcGC1V z1FSJ`LCiMcxZ|Qljc-icEMg_iVpeu z2OgMPFE`4FbtH2dYE8G;W1XH`B~+7zf7%}UdDBk9HDr7#P;dla`{KZdqq=K73yP00 z?AMw{gzlszQDe5PK3^H7ffafvA!sONv3y zzV{bhebt%&!J5LJ%KK_F>>D1?q?#g?H<1-2WKIXpqIPEr;)c9OL3GQUBgwy?KrWKCj#-9DC<{{%K!eGcf23St5+_Ga9f59#gv5m>!v9nE0=E$ zdw3Z7tTLD6N%>z)Q=A9DH2sK$Bwkw%`nn#)|59+?K!6x%7ex%trG}gT5`oa>@Q2+r z17tBAn4snTwK@K$c)z91c?GR*Wr{4mb@J#FRQjKePu_t(n(v0L`bf&#du&mnvH%ZI zh@iVgyYu&p;OUq%Ga=CLol)(q2zV_a>Syu%aG>jSo-%~b`fr5{wZ)JM)gS|R+!;uMC`m<)aCicdEj}_xM_TBx%eGx#e0xU z8bNykrg(5{6*YNaCnX0PRkJ=b5>&Hgfcgy$(Q@@s1H?)tbQ2*-03=L9S24y0aI+F>1|oW1L)hnF97^u zR#m?q3A|qo8ZX#gnncV1AC)AKidy5DyyJ{k$jYw`^~3)Q5zLkfvLm+|&WXwi4%{;o zmNt&9+AS#GHDs@eWsOdLwYv0p?P&1?DgZ_`De4A4=kw&ryz*b38 z6g2gVDRE;f>F_=c@>9If7`2UrZP-=bD&!z`)}E(vkWHRoDXr&J-%edB>-+mx@?+SI z<*dw4jj?WsmzhncjZ(S}6m?F5ecr$_nX{_8;3w2qPQ7eSzpB2KYG4}~%s{xe+?1+8 zN|s0$nY?uYSBbhy7)40MYBniP>E+?*+H%==>gLu#Cvq>ehZ|<&-TlLUHoVBaqFl8N zV8h1QOBb2pg2j3+t1caY*m*Tv01F9QalPsa9O0-PB(>k<&Ph{lr{8%k@EUr}PCPbb zjKL-(W<(y`$q)n*BbRYaUC#y-P2Z2R`&}g5ZvXA}N<= z9^yk!sz3LZ^~~|olLb-*SQ?cIf`5V?yp%4CZ6Lj$q3=GK@{^Wk2a(89Nbc&+ETbb^ zzsO6jYYzmb1d78Q2agB(9&UG3S%M5YB2}R~{3BhElw${FjL0_*%`rr^w^`za1>9F~u$i|a5Fc!{}LJ!9}aSyBF zTL&EpAUe76WIZ)nAm6P2Gs4W@MRCoV+k*H*3%1i;C>1E6i~AA}=1NNKj#e!faNsr+~qvuc!`aGBE(ZbUm zo-VC*oP7{Io(_}J@iH}3vMD)pRC+1?WHMhiXR-t~F_`gA!D)ih{JZ^k!XKj*cv8VO ze4IPSg?f558yiHp6h1|eQABhuvn2hPWpJ_d9AIFNd>AS}7UZz%^0HkYxj-malbz_ZQDEWauIz)#_mVM?thq_% z5QoHnwpOD27}~RPm_5V~e{CF>3Yg7`-7c{oq;iD3S5w&}43i+%^>|c0F`DQxKFQ#n zbCswy1g?&BwxWGHmqN$(1~@w6^8PQ(=l-6&qCzvPpm9%jnXXjd0mEO^P6yNOo$QXm zF7=e#6}HB=cfc9$pi%7~9w}Kile2`Wx*;fsuhwy+n>s-XbHY`qsv;zexeZk$l)x2X zjYMbYaCDQu_S7n4wb81nU^U5N=gz-9NT4@KuWXe*lz$J7B+A<1Rg}|YAWa?oFmDQh zBp2f)hh3%%Kg*U{$%Sy|E6*G(A{HdOd_@u_68{~9z~Qx?8_dS|1qfT6xl(ftZF(+L z<2{UR!F;Ctp@=$|dCFSaO{Um^YFrxA^WAt}ezx5x$wMaP%XsLw1x@Jzfe@ec`Fty? zC^Qu5KAX1Z**Gf>=4qaIGDG){cf4j^y?gxzb91>5)=b?HpEjgK%}zYhSNo6S4Yuq$ zt)M0QoXAE0B9hiRDmMQm0EYRoHBywQg7-Bp+yq_5W9MnQLi$-3K16=)%Fj=iv_)$$ zgYMpH(4L>CWl_v6{HtLT|a4g7cKWgWhvhYWvcMcZ`MeT8^*QuNd0`X2wrKC zjJHJvBA#hQ$KBnfFO90&?Fmf4eHn<&qvg5iV`0EqfzH98%I(G6&5!b(e9$p1N1mnB zli2lQO0;a&5i@l5SGFP_@XQREKK1*tGk^um66r4z+-6M>La>&Le<3+LFdebr9?z zV^eLy7UuZ!Y}Du)qD?P2j~I{q+%M0;+|Scx5VKnxI)RKA9J?UlN?n^Y zXFmHoe>-!Yagq+2WMrol8ju%<2^W0Cgt@~)QN)y6`-rhXL|||}vXe(QY%-Qy@P{0e z(1v9zpRA5~`j^i@(NnZsNaBL^Xk=Y%Jh)kV#)rMl+z0NR zv0L{FBmGq&2tWPW)PBp(>&(G(BQ-b18$n9PWu6begBwiC0=P2JjE&vre_(4+5;V>L z6`2Id^LiihOzJUZ7xmKgdDh3~a+#LwHys{qw>p6Lto&VRy`Vq)q+mEM299e`xsMmT z=o=a2dM%0|vjE7~VLd+XwNM1{Pu@+b5*TcnN6J}mf0Y;2Zj}J$oVW7v?57q7Bl!{E zXhX1tA+&#qf8|9^+C2k_>eo9T!#YTeWxn5vdg1N5mkq4T-qNjT$Sn~3DvN6hyy)RU zjVv{JM6F~HCMU+hfyq%Jv|-ZYpVbW{UAG|3X5?ETEN$$2C zNTXrHJZU6nGrs3Lw29bA?HxH4uwT5l1X%M?9$?BX00OKxUjrn~{vAyNE_%WS9$z+P z#<+N!Zj4A<10iXh)#&l#8=}TNk;aA-9uxGEr>i22YB6Njq#l^XY19=h(fP@88-@g3 z${9=O4(LJ75WyJB_*LscBMN3ldK?BFN}aAckA#q%&b13P?A1nP#AC3&vn^}}WI!y! zwzH=9fve($HRaz(>Gzy)yD>dbWQncupO?Gba}fpG4Fy5XX{&xb@GSwO8N9o5P-(WK zK#4%{BMeP@;#qBX6MA@Oc2}-*ptXEkZSUus<)<)H_3#a*pxrbECQh42S*aS~csv}V z*fi}mSRYo1oGilv>x?ZxS?6{J%bUz$R@@1dfaEm$Te~1*=>B*0NQ!y3Yio8PTes{g z0y^dRijo!u^y1Nq48PqWjM)Xn5>}TS(5_sKbK=$k(er1zeI&^-I}+5Th~R8&f>08W z0c>jK_l|NN)Y*uc1M%bFIL_O}jBsEaYs{6W$<)uJ)7iR~oWanVkN>O)&u^M8N4dM# z(6;wSd$pQz2yS_4-#;S}uQo0S=)B39g`)RvfZOUzdm5TBqWqzc6 zpJ{BNVsH>N>H*%ju161n$vA5wuh@asw+~;qUBDpGN=+xO99f{q=J-Bx?E$^ihZ(j0 zBX+^3P@EZg^N#%bi^$p1|WPi7r<@slYwQW}nfu%~2Dk<6a zRq2jR4JE-`w+AM@qWDN=oA~uUyFeZ)9=}5`CJ{cLP{kphD$?8PUhxzThM9a&{ytt< z{`s>4Y(El9e$W&f`cM;7hJdeNlgxZaB(SWj*xh{40lE2DevK@9GyU}7?uCXbUH}Vc zt_{D3iPdB(r~M_JXOI2Z6mIWqE?{lpE{!Se`3Rhc_G&vsJ+X|I@1Y+=DWMUGVjOLHS?Mw>V)xw%b52i;9Ny$j$~^NX1uQCD&~Btx9s z2QSbLUM3>W=d6p?m*NAUzNG+uXCE{%Pq4Ns^?DF7Qleb?J6K$+(XxRmeKBs7XmNk! z>wFe(rCuq}&?Ymq7-bxO`)OzX>JvO3N#gYB@>g>p_BInQv1zoFPCqW+^radrTAkZ? zxC0R<7@_wwTMgxcetC8B!3@pNQ%4iva3*6BU{j89m2MmgO|q!zq){r!aRUIr8Am1it;bO_^gzw?GE0f= zkIVlCi=+j!0K@MA|MTXB_ZwUEHt}y$!&E6#RBCqbD+HwJ`v`d1{Ue&y7d#uaFVZ`O zyVKO0GjBa)mmq9;(7OJ*6o@YCkLl?CX3a|!0u=`MuB}*a`u5k$Sy+!c#}6@1Vmd5Z zQLtu)2&dd01%`=G4Bgb08!upT!KZrv0tc;O9Nh;6OCgY0#@nJ}u^lR+lfi+jedjNk zSh|JZH)SNb2!qoM^h29hRcm9~Vo=H|q&HnLN@x+yla7IW-QMNFdDCSfVm0J+ZxGiX zfpE_jj{Z#+fdU!qXz2{r4IWb6#-CuLJX)$PntuZ)`g8N(0B|W6(lz<2mIJN7ymL4) z=QlB>Gdf~MVY{P6?{=eYr|ybB<~;_-2%e(h!mei@Rfg*HnjO1XE{11SQ`}< zk%%pH@hGJAV6Q;h9A6W#6{j!qk2@LqYM01DMKB%FF-&tJnm!D#`94pteO2)0>GGKP zoDQu+O+4%`f)?b$@na*`eWWqNh}XmMX9S&;hu0=JkQ@e35EtTq9Bh6y!e|6`f?<7j zGGL;fwUcEJWnkvt63%ZEPm_K43q$+GW;NsZA)FU`FuvsX7?4iM6OF{RXZUTby9)p;;?@=63ZHVJ3}OY!0|PWTq1X)IM>D>|ZIL2(oTY zX0*GU^uL&F>Z~=pvT1SAS2b$g)0jtBzglU|9`;eQEZu*t-wwpj{5LhVl|X;D5U9wD zYrMwT=1X8W;j_PCyIzgD=J{r&I`x}E)ci?G3jEx zb@T<)dBEQnq2CNXgk2_K57kfbiu@`lfGHibfVgt((m9lL9_YqO+=JU>K2#qJ`K*B^ zDZ7(%f`&GKraJm2`CA{~Hq=ew!~hc|Wnjcu;u? zp{c_peSL=cK?XcCKyZwB|oXp$ULc_-=Ulh0{a67h9J??Eu5 zzq-|dGks)sFIAldW}Q>PNPWyAW!rzOT5Ew&bsy!DUk1h3cM$$rcdez^uC0GT84xv5 z6|60n_~iM1BJJ|KCtiB_datdvgJh4d3Sy;$gZup3erdeY+j1&d;_V zFnW!XfnE?C!j;Ts9yvobnHD>-P#~Iylzx2({sEZER){o0UOmfr-ZyXD3A*}M49Joz zRHI&)V%IPgk(`Fy0up96d4r4HD021uwkJb(E1;giJ&uqqI@cSzlP${Z#W$mif)PkA zZlK*Zm@3r^m>oO05bAYAb&>-?g7-%n80Tvz`+G$`%Mw5;r+4!MEQL`<8m~nP7e!Mq zkX#zkx*#-r-JdE@P3+b@`Q2}b&H4f_M1+QP8-j+&V};!*D>&Z)xjVmWA5lzK5lv(f#VYpr=1s*fo~MXn84KM8}e} zJ5V1q2nB{~#YtLqjW8UC?~T*juIiZb@0@dhta)eRW{I$AG8iAuz3aGa5KEF_{#A*9q1RZwbla6r7{vXw5^YtgrR+#5=k@E7sm0@Uf@~Oy) zHn=Up!yWKAnL7;Ytzs2dz)8GSpUAYv^JlaGe1| z&xX=C85ghvY3u{2B)GM8(XaGbru!d!sFHp%^gA|{fIcpHGmZ^IUHm606C!3VfE)@2 z*(}F<&<{E)mD^6eQ(`jsOFDD9?2A6TbNq?eT89n1WcN-S4)X$4r=^uZp;vo=ZI>Vd z3KXVRv7U#k`VC0eBZ=74x6J#s5a7nr`GEB`{CGD{GnCMdPg`5Cxsg$47;Ob~t$sX- z>p}eeg3&WiInS=&6^LSx*Z|gWSTpa38Zv()ZTcPbZp-MaG6$Cr?r|=@mv8hZqIyNP zH)Ub6#fY}Ax3t+;{$_$TOS?aFsFv%-f+J@|2`zb;_uRyRBQJ`o8YetITwGXCLtdID zY@fm+>`X#mnOb+1@2e)Ur(xb5%kiAo_vXPOVnu&d#y{vR@{%KLp8>?W3cp=6IDmna;+YbU{>GYZ^+G0(;!3?^4lDtPed+!;J=4ZBj zu7g_}pK9~ek-L+iVyXpt>e2a7L>DL)s5~C0{^5H5=?_?O@QKKo3<o z`{cflm0PI6XjcClP6Bpd&1>%-%L#d0)n0qT-p@*Fiihpnf`D8qrSeONav@ifARk{<@kTmNK5jBfUSt&z+oZrO-cCw z{t5Pe`-Qt(8OwQ&>lEXiuI^NrPONj!lJ+{gj0S+s7FF&>WA$zE#M#-2EV z&cdwX7)rZGbLt~g8UcOJy+A5aMgMnwve|z_Mhq*Jey2(W&PWNY7C&88>q@k!;+p&dwDR2K}GdD8a+@@`t$p6aaNgKqixzmHxV@;Sl^*9#?X zPfG}|lMbAj$_X?-QC>S-FN6!vSw9!!6isFW|(S;VfSJ*;l!|C=*nfW!4p=Ku4#VSYDT^^tbcMWfDr=u)*_-nT?MphRP3 zCZmr@ceUEC#z6YX+rt!sLHYdVe3v1~r!*@EQZY2xm-H_w5;+n2{z(2)F zYVAqw(D)xP@3GmkP9L9kn1|+D2ux3x5r-~3?zC>Y(~>z?0Wst#%NUOknXi-tDYLFv zB6FW~7_>O)4nnoXs>B6fqTCI*l7FoQz-<&{yJKhw-N80G?%k6(4@6^3;Tyh>C(v}>)@sXSb45^5}d4#ae24h8G` zZ{I8mwfzQ9dF~`@Ro%rk*xSAmW6ZsPxktQi#QwPDg%E*SCaCW=E{W{-+KKVL0Gq77 zIja||Zu%7VnR@5Je54ZN$Jy&D@S?j1jfD4voo=n8FLeQV03s!*)IbC=wd!jtyNy=v zcD+!sYI$r{{R+u6FnGQO3Zym=$J{muI6Z^sI88a?!S(i6L*R_NRz5FzHgoVHkl`&r z24EV^NTT~r5N^8N;wE57wk7^47@(W*Mlume^&|5Qr{4xPve}$CQmc{L4IXa|lqZ}l zuf!EN@FhoEx|MaX%$7Q) zn^ERl0}|t~zzM@B<2s2HUH1Dvu^GUWRCByY|9E?hK5Yit@`Smq18TPBTO9rzJz6$R z0~i&1@O&nRT`14Z-&~;h)Vgigjgiqe@cK~l{=yg%4u11PJj7|WHCiuL2ui36$4b|>ZPs~53k?!Lu9$33 z_oHZ*9__UT0v`8GZnrQ-!ki%5QZ|^N;daG?{AZi(iX3p!F`o)oPsEQy+w)!ja=V3N z>4Ybex+C+uR`s|&FnJi?3))DJbn!T>OMN`1s5kTP99y0N_q;kXl8m9en9uyC40zva zF9M06%)WHB8N1QTZu$44uJ>~UP!SP&hew3~O}^Gfg#-E$^;RG#fQjn*WsyQLzxp*w zdiCflf}#x8Acbh;&$ic>#kAJjR*#PbG=s3n_%xbz)^S(+QzetRfu4+xS%eBMq?zE> zu^+U*NEYBwh<@sTABJwJ+U8JdRPzja?CoW$EPlx@i?&L*-8|=oj5>v4vP&#F6Bz@_ z%!?-nx9dDz?cQ+W&kU_v{nD&r(7hT&AcGqMi;ivk}GCYE5Fv+ zUg4L@ju$8IMqrt(pM=%xZ7a20o}CnP)X*^G6kl%xX~L&?lWa?FJWeDigkW#yiaN#e z)Wc>k`cA#YOMco&peQ?@th9(ZA1`3s(0kr4Bj7!Bz?UB)6TM9S;osieuW}nw8RKKq zV|v|5y*BPCp3&)BKCztOVskq9piG`0J16-wI;D8aQ~1!fXcFtAdexTwveTRdvhvxw z5Z=9ivqnz+)9UMUrj~ctwRN0?eEnx_5Byu=w=>30X}$C~1pahW%^^CQn%&D2=hrlD zmlIieuOkum5*X=HjTz&a6uE65J_dvYV8DgIHD8e*WN^7@#$r5{(PDovz3-}UbFe(- zsm6Eiio8Et6Spy#IcJ&bXUW2&O?P(52V&lk4tcn9jbh*(cbOD|jhg2GvYcUD>2A%WtM zk8hc;Z+Nt49ANt6u3t2l&4Y|Uc!a0o@4BVx?(q{{2dPUa~L!EAM|?0G^DN zzgGE76!V5$%dH{LJsO2{+Ns<=y&nQd%r%<{X)n?hE7*kyD3$x96Z9AK#`FqE7i%3RM`1SrdDf7U6iF_ z`8LHdYaHR{;;%R&#euYATcgHH*#dUqDDT9h zbimtjFn>m_E`ES=3p}T1XH)kH;ua?o-B> zdqcbel5e&VO1h=h7-hjP>=`-y!q~A_)uo3G8KY*H6D0{OC-a%Zsjne@{N~3RHsZiE zA`fWyI>*d@DXZyYgb#oyk;A5sDO>hP?s|r8W-y-S`eUE>UMF-Fq z&o-D=!Zs;5D=lrkzC2Fh2k>Ds zsbupg!+ETjKjfR;&X&(Ts`v`N3@5WpUX`lss4sf2`FtzW`nuwpTfEC89G1tBk=fr^^syijpn|c;_^4EE`oE-k0g1OWbDe(oV3s)qUdv`tKa>jj8#Ms-73O}Peax1A&ZsR+{CGc{; za=gI6a40X_WZ{np~ow?~i&)X266|qM%Ke2vW-=ckex{Tud zL2amVRLg4`wTTmI)6JTtn+7@V_BneI_s)mp8weX{SR4Bxy6Kdz+~3hxkN|^-Em4X1 z^FUr)i0QdW!$()LL;BqZdydP1E2c-iA{ytlLDFV0x#|6FkC89#Ao<^=OIsw^Y0*9A`yV=vAVK#`cZ$`vOPqv3ezp;{rD{J=A-$uM zsNb2qXpsR8@^XCl^$6Y#ul@v7hTEl~o!e44_&6VJ$2P`b5KM~NX$U19>y3Sz(Cdk4 z&LsK9tlD4smk@p{)gcCe*_IvR{Bw&jGAIVS-e0S z`|t1AYC^euwcVcHN&k87XF&S5HwcgS1^V=>R+HDUWSn>PP-|<^ay4B4Bb*Ryal$OT z*|oFgrB*tJog%Qw&SLSzmVm064r;e2K55SS{(9P}SKj8?;MTTq$S4GJ-%GO6fskN( z=v?7A`rt{jbUDIJQ%@##04~8WG5y3Bd6TP{d#GP`T=) zjeVT#(Ho2(*p$(HH)rOmbJpsc`dghPKWW~M&3nBX?j}XA4VTatk>F8QOefvXGmCKj z{owmSWGnoIPqaz*Ec>}kRi<;;N*RSX6=i)*J*t8UN_C&prQO2jmvt+xRNS5SeQaEO-!)zgfO%G#&{5Q;v9mFf7MmUYYA zzV_5uA3l}J+5+Nf8Q@r15ZZAWJu)jZZQ)|*b^%-&EHaP&Z1CrLXQP=uv`bIf<)OPs zV~|T!549pOcV)Ip>`OPBE7mhwj08wa@>HQX3dAHlEkla~E3} z6B7mYD{ys&iSMu`Dm81HS99-0j545&&ajZTO=4WUUAyMz3bFPc1V zdx~~n$_9Yd|I^bYLodzH>b>n`HykOnHRbPi)m$f$cO@2gfLrj(nG>$~(>6aa(iBY& zL?+|2*9%z$1X!D<^zuA09LR?welR*QC%lh8!jWfxCdsDXwBFs;Dwf7EMG%rm==nx+ z<_l-=ddOlIrlRTk5@2)(Fu(t}N0-aO?>r2j>(~G+QXyej`!YvT#fV+kycncrvvBG; z5MVI35_QL11sSw!wTS1;cGYk(h@?RI3^nae!@Re@us=Ae`DV^!3&HkB5;gq-`f7@! zb#G7$~X=*8n|6sK>iMvwt$$CF*^@Qf$FY{pdn#Vq9;y+->lA$PKW*wJq7H+M^1aqNZwr+sizbnv*zclWMYS~noJ1LbJWlU%#dv))FC-6O z%?CD&C##e-@0GL_hEq62#&x)0tP{sGzJ~nGQc&7_KsZSxRtQv)H$Ai5IMq=m{d?1w zQPRXwjP~ZomvJ=0JKY)n2A>>eQn`AGy#%0W!OHWx$+f@2z<2At$ z(DiGIP3BA!zf=t;pY#myUcE>#K)D;035{Ns!SVxA>~`m62$wSu+4rD@@a}SJTgmc= zaLrsh-O;p0#xA;LhK$VImCHtw1R4lZfi`Hw0c;rX3gEA&|eM({v zY^EnVg4Ma2_BKcpWtvP;t_a2~2wS#P)4{$0-p@#w^Jgz!U2gpPz1SHIKz&oH%SMDd zzpSqTb}x)88zaYZwFE_O+DX>&SL9sGYpvS<|^+dh=AeV*p8&XpBH zWVb?Hz??Q4{tYbe+P0KFnYFd@=8289LTSMaEn ze#HZ+9GVP!qUUbgOc_RMwKFW1)N=L9x;*8>T6;w}dM0_l+5uJKp$wV#dv?EBe(*^& zxva)9T=BYRj@1RHp1xnL2j4DFBh@`~R5#gTu>hq%oW;+eD+)$NKQA$)XTDBu8 z=bh`n6NVXH!IvC$5~M}&ALWXJ@%|TGXB`yBzis>A4#7Pn5Zv88gy4e@4k18rclQK> zB)GfV5ZoCwxa;5qcL;8;bI$MF``)X2tGcH6tGk(L+26fCYc2M_IrHyQCA>AIPC%LR4aAt$CMb-vq8JvIa}366_(Kn|F^stHf7M zd0#|IGvH9m(Uh&|{X09~^o?B@xUX17-`|fJJ)Jc1N4eRJktwu^Pfwmgbk(HAeGrr>v_7T2Tu{@!2Cy2&f4$5I4*ygKrqYI0CR3GoTW>6O!CeX0mJ zF*GoIDzmKLAw~Ox`EBR^maPu`&pB<`k8p8U}?!!KSF(ytAga=2E5_D%{ z^we8-JUI2$9zd>0dA-tsqytq*@pcArS4wB}b2Q~W(_tWd{}%4*yJfr8oEjFxpTj-A z=RMayjh_^uxqcYpI)@1>-8dErvnQk! zj41-KVV{ndkm%UbI$LisqIjE@!!MhBS0HSG;*!DvG5!n}Yk&^wTJ>iBk}!=PGe39v zln^|Wz;4vXK+2i?B2X{+GNzJ)O(*?WM5+!YnG)!a$o2)jO0*`C=m{V|_OhBSW`Yo4 z$%1z9&i%0Hu`K38W^FAfMs05#*tBwMJ4;WGv_`%u{OA<|tJZojT0kK66ZP4Y&pP`W*;6pMQfjF0pD!J1?T&OvGZ7aT{DK{e|!FDQy$`*%hj@*g*D!e7cYCN`YlDk z!;kYt9IvzfYNxID8oS@BDTJ&48{N(N$t3HsXjBT)EH-g zB8{UyNnrBsSQVQP3W5G`GL!dQq7s_w-3T15r3&&G3=b`@7V||( zt}`@l%aG|{JZ){ZZ16onSRHJdp`{K*WFv%Q%4H|CER=?S8_NKnOr}?FV`;Ef3Mun2 z^mx+o{4*ijDmIQ_@MUz(*-BNt{i9~y%Rj`}M48ekIO7vnSnuUF*uTMe&L+e?Kt>mi zQG0#Lk|@WmexFPSb(IV#$*7Vo#`>Cy0}9f_(c=9Xkf_v#BEM5bf2}DTkF3FY9={p0 zna|GDMZP>GHpq?6xkv%{h`7SEFPXk#S*l`^1Bc8YwE(#Cdyec=K!{BGyo5C!?zl55 zy1|G7;1R6$4R%ElozFgbT=$@dc_e1X7Z}AO6O1*>(_NMNp-g9$f$(?{v8s7}o>gW5*EwmvCO4>i{tG7!}LxuPPb{5j6FhEtEV#k1e!EP)Xmki5QO|9#!~ z2#&x4^d!k)%xkywZp;e>a_FM#h&&W0N<4ahIe%95)^u9{<4?!a9qc{sti9BMTlPES zC{%vJ0oONufN{;hqvcd-E^Ume{$h%HU?r9dg)K(BbRhCvj{bX5yUE7Dhim`mlm*Vw zYle-`p+L-iE2|2o;&rzdK|*N{i@)g%F`W(<@cChwc6#Xh-%7&&EIYw$8&V-2&(hU9 zDq7|GN2*fync>u=!9(@Y^A}J19nKt{MY_zJevczd)sFfRtAOQJ_aD|%8|lMrO7paQ z#e_);XV|Oc&NolNoJe(y6f^P2bXZ$D^<`H<Kw+jSd0SBl6OZU|2a3 zN3uMr;^1Bvri1oGtq!v(+%`K4iw?aCg@xf&-2u<3OQmmjvrI=Vq=lY z^DZG4(Nv4l35uV9Y_S3^!=14x))`i$DfHZ)HFM{H+C~e~h)Wxj2Xhq~7~23B_w}L6 ze>ddzg3`A8#!sXh9>o>WED#FEV48lOs_ZZQm|A$r#tDzX$|B{VTomnJ<`*7ADZJef z*PubDE=xx7-Ex0rLk*26{Qj&c>-SEUpH?Ky^c4nie%5=|k=I4OEIapv2T4AgFt+XmfXM%JlYky1vt!rE&d@{SP=ed`)^J`p4yC##7$^}OWP*W%L5PhKnAdv0vH4 zINLS(N?PC-vL^VQ)QTlcQnxh7EMFIrE4q{)u?JYG^J|UfY8?*U{U5AybU6n>h@y&tQEG#{Dpr`1U%N0(> zS6((Xa50bvL>D15n~1_1RB*UMsa)Uc2U2fe!R+}@Y|37`_62eU!H^nFgV;4OCZ zmcT?;NfBbr8E9^28^1@hgzHwEDZ9qI{*J#-= zA`|^Q31lXd&gbDR!iA>E$p=L2zU>|QB^Q85E%PEVMbO2|Vr!7FHMfUA>_IezyXq|b zTO9Zl0fVMZb#voO+nfxs8^;WB{=neD(Z4K9WW~m;8+lx>x*An~q-Rgb|8|=``hT@c{pH8g7zPe

      |O!B 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 From 33bd663d809fa278aa3f2b5f22e4da9665a4cd45 Mon Sep 17 00:00:00 2001 From: Dylan Couzon Date: Thu, 30 Apr 2026 12:30:08 -0400 Subject: [PATCH 61/64] Move retrieval relevance and pipeline-output tutorials to Improve Search Splits the three retrieval-evaluation tutorials across two sections. ANN Recall (Web UI, language-agnostic) stays under Search Engineering. The two Python ecosystem tutorials (ranx, ragas) move to a new top-level Improve Search section under the Ecosystem partition. Co-Authored-By: Claude Opus 4.7 (1M context) --- .../content/tutorials/search-engineering.md | 2 -- .../documentation/improve-search/_index.md | 14 ++++++++++++++ .../retrieval-quality-golden-set.md | 5 +++-- .../retrieval-quality-pipeline-output.md | 9 +++++---- .../documentation/tutorials-lp-overview.md | 2 -- .../retrieval-quality.md | 16 ++++++++-------- 6 files changed, 30 insertions(+), 18 deletions(-) create mode 100644 qdrant-landing/content/documentation/improve-search/_index.md rename qdrant-landing/content/documentation/{tutorials-search-engineering => improve-search}/retrieval-quality-golden-set.md (95%) rename qdrant-landing/content/documentation/{tutorials-search-engineering => improve-search}/retrieval-quality-pipeline-output.md (90%) diff --git a/qdrant-landing/content/documentation/headless/content/tutorials/search-engineering.md b/qdrant-landing/content/documentation/headless/content/tutorials/search-engineering.md index 44a4ad68c..40afe228d 100644 --- a/qdrant-landing/content/documentation/headless/content/tutorials/search-engineering.md +++ b/qdrant-landing/content/documentation/headless/content/tutorials/search-engineering.md @@ -6,8 +6,6 @@ | [Collaborative Filtering](/documentation/tutorials-search-engineering/collaborative-filtering/) | Collaborative filtering using sparse embeddings. | Python | 45m | Intermediate | | [Multivector Document Retrieval](/documentation/tutorials-search-engineering/pdf-retrieval-at-scale/) | PDF RAG using ColPali and embedding pooling. | Python | 30m | Intermediate | | [Measuring ANN Recall](/documentation/tutorials-search-engineering/retrieval-quality/) | Measure ANN recall with the Web UI and tune HNSW parameters. | Web UI | 15m | Beginner | -| [Measuring Retrieval Relevance](/documentation/tutorials-search-engineering/retrieval-quality-golden-set/) | Build a labeled golden set and score retrieval relevance with ranx. | Python | 40m | Intermediate | -| [Evaluating Pipeline Output Quality](/documentation/tutorials-search-engineering/retrieval-quality-pipeline-output/) | Score a RAG pipeline with Ragas and isolate retrieval vs generation failures. | Python | 45m | Intermediate | | [Hybrid Search with Reranking](/documentation/tutorials-search-engineering/reranking-hybrid-search/) | Implement late interaction and sparse reranking. | Python | 40m | Intermediate | | [Semantic Search for Code](/documentation/tutorials-search-engineering/code-search/) | Navigate codebases using vector similarity. | Python | 45m | Intermediate | | [Multivectors and Late Interaction](/documentation/tutorials-search-engineering/using-multivector-representations/) | Effective use of multivector representations. | Python | 30m | Intermediate | diff --git a/qdrant-landing/content/documentation/improve-search/_index.md b/qdrant-landing/content/documentation/improve-search/_index.md new file mode 100644 index 000000000..bf7c6ecf1 --- /dev/null +++ b/qdrant-landing/content/documentation/improve-search/_index.md @@ -0,0 +1,14 @@ +--- +title: Improve Search +weight: 1450 +partition: ecosystem +--- + +# Improve Search + +*Embedding choice, chunking strategies, and retrieval evaluation using Python ecosystem tools.* + +| Tutorial | Objective | Stack | Time | Level | +| :--- | :--- | :--- | :--- | :--- | +| [Measuring Retrieval Relevance](/documentation/improve-search/retrieval-quality-golden-set/) | Build a labeled golden set and score retrieval relevance with ranx. | Python | 40m | Intermediate | +| [Evaluating Pipeline Output Quality](/documentation/improve-search/retrieval-quality-pipeline-output/) | Score a RAG pipeline with Ragas and isolate retrieval vs generation failures. | Python | 45m | Intermediate | diff --git a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-golden-set.md b/qdrant-landing/content/documentation/improve-search/retrieval-quality-golden-set.md similarity index 95% rename from qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-golden-set.md rename to qdrant-landing/content/documentation/improve-search/retrieval-quality-golden-set.md index 99be593b7..b504a249d 100644 --- a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-golden-set.md +++ b/qdrant-landing/content/documentation/improve-search/retrieval-quality-golden-set.md @@ -3,6 +3,7 @@ title: Measuring Retrieval Relevance weight: 6 aliases: - /documentation/tutorials/retrieval-quality-golden-set/ +partition: ecosystem --- # Measuring Retrieval Relevance @@ -13,7 +14,7 @@ aliases: This tutorial focuses on **retrieval relevance**: how well retrieved results match real user intent. To measure retrieval relevance, you need a labeled dataset of queries paired with their expected relevant documents (commonly called a *golden query set* or *ground truth*). This tutorial covers both building that dataset and running it through Qdrant to compute relevance metrics. -This tutorial is part of a four-layer retrieval evaluation framework; see [Measuring ANN Recall](/documentation/tutorials-search-engineering/retrieval-quality/#the-four-layers-of-retrieval-evaluation) for the full overview. +Two related tutorials cover the other retrieval-evaluation concerns: [Measuring ANN Recall](/documentation/tutorials-search-engineering/retrieval-quality/) (does the approximate index match exact kNN?) and [Evaluating Pipeline Output Quality](/documentation/improve-search/retrieval-quality-pipeline-output/) (does the end-to-end pipeline produce the right output?). **Prerequisites.** A Qdrant collection populated with your documents as points (vectors + optional payload), an embedding model available to encode queries at evaluation time, and Python with `ranx` installed. @@ -177,4 +178,4 @@ In golden sets, **data leakage** means any setup that makes offline metrics look ## Next Steps -Once retrieval relevance is on target, the next layer is pipeline output quality: whether the full pipeline produces the right output when retrieval feeds into a consumer (LLM generator, ranker, or UI). See [Evaluating Pipeline Output Quality](/documentation/tutorials-search-engineering/retrieval-quality-pipeline-output/). +Once retrieval relevance is on target, the next layer is pipeline output quality: whether the full pipeline produces the right output when retrieval feeds into a consumer (LLM generator, ranker, or UI). See [Evaluating Pipeline Output Quality](/documentation/improve-search/retrieval-quality-pipeline-output/). diff --git a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-pipeline-output.md b/qdrant-landing/content/documentation/improve-search/retrieval-quality-pipeline-output.md similarity index 90% rename from qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-pipeline-output.md rename to qdrant-landing/content/documentation/improve-search/retrieval-quality-pipeline-output.md index 41bc61f0a..29582fb36 100644 --- a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality-pipeline-output.md +++ b/qdrant-landing/content/documentation/improve-search/retrieval-quality-pipeline-output.md @@ -3,6 +3,7 @@ title: Evaluating Pipeline Output Quality weight: 7 aliases: - /documentation/tutorials/retrieval-quality-pipeline-output/ +partition: ecosystem --- # Evaluating Pipeline Output Quality @@ -13,9 +14,9 @@ aliases: This tutorial focuses on **pipeline output quality**: whether the full retrieval pipeline produces the right output once retrieved results reach a consumer, most often an LLM generator in a RAG system. To measure pipeline output quality, you run your golden set through the full pipeline, capture each `(question, retrieved_context, answer)` triple, and score the triples against judgment metrics like faithfulness, answer relevancy, and context precision. -This tutorial is part of a four-layer retrieval evaluation framework; see [Measuring ANN Recall](/documentation/tutorials-search-engineering/retrieval-quality/#the-four-layers-of-retrieval-evaluation) for the full overview. +Two related tutorials cover the other retrieval-evaluation concerns: [Measuring ANN Recall](/documentation/tutorials-search-engineering/retrieval-quality/) (does the approximate index match exact kNN?) and [Measuring Retrieval Relevance](/documentation/improve-search/retrieval-quality-golden-set/) (do the top-k results match query intent?). -**Prerequisites.** A Qdrant collection populated with your documents as points (vectors + a `text` payload field for the chunk content), a labeled golden set (see [Measuring Retrieval Relevance](/documentation/tutorials-search-engineering/retrieval-quality-golden-set/)), LLM access for generation and judging, and Python with `ragas` installed. +**Prerequisites.** A Qdrant collection populated with your documents as points (vectors + a `text` payload field for the chunk content), a labeled golden set (see [Measuring Retrieval Relevance](/documentation/improve-search/retrieval-quality-golden-set/)), LLM access for generation and judging, and Python with `ragas` installed. ## Wiring the RAG Pipeline @@ -161,7 +162,7 @@ Ragas isn't the only tool in this space: Python | 45m | Intermediate | | [Multivector Document Retrieval](/documentation/tutorials-search-engineering/pdf-retrieval-at-scale/) | PDF RAG using ColPali and embedding pooling. | Python | 30m | Intermediate | | [Measuring ANN Recall](/documentation/tutorials-search-engineering/retrieval-quality/) | Measure ANN recall with the Web UI and tune HNSW parameters. | Web UI | 15m | Beginner | -| [Measuring Retrieval Relevance](/documentation/tutorials-search-engineering/retrieval-quality-golden-set/) | Build a labeled golden set and score retrieval relevance with ranx. | Python | 40m | Intermediate | -| [Evaluating Pipeline Output Quality](/documentation/tutorials-search-engineering/retrieval-quality-pipeline-output/) | Score a RAG pipeline with Ragas and isolate retrieval vs generation failures. | Python | 45m | Intermediate | | [Reranking for Better Search](/documentation/search-precision/reranking-semantic-search/) | Use multivector representations for better ranking. | Python | 30m | Intermediate | | [Hybrid Search with Reranking](/documentation/tutorials-search-engineering/reranking-hybrid-search/) | Implement late interaction and sparse reranking. | Python | 40m | Intermediate | | [Semantic Search for Code](/documentation/tutorials-search-engineering/code-search/) | Navigate codebases using vector similarity. | Python | 45m | Intermediate | diff --git a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality.md b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality.md index 4ef7f706b..29601d7f0 100644 --- a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality.md +++ b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality.md @@ -15,16 +15,16 @@ This tutorial focuses on **ANN recall**: how closely approximate nearest-neighbo **Prerequisites.** A Qdrant collection populated with your documents as points (vectors + optional payload). -## The Four Layers of Retrieval Evaluation +## The Retrieval Evaluation Stack -This tutorial is part of a four-layer retrieval evaluation framework. +ANN recall measures how closely approximate search matches exact kNN. It's the first of four evaluation layers; each higher layer measures a different property of the retrieval system, with different tools. -- **Layer 1: ANN recall** (this tutorial). How closely approximate nearest-neighbor search matches exact kNN. -- **Layer 2: Retrieval relevance** ([Measuring Retrieval Relevance](/documentation/tutorials-search-engineering/retrieval-quality-golden-set/)). How well the results match query intent against a labeled dataset. -- **Layer 3: Pipeline output quality** ([Evaluating Pipeline Output Quality](/documentation/tutorials-search-engineering/retrieval-quality-pipeline-output/)). Whether the full pipeline (retrieval plus an LLM generator, a ranker, or a UI) produces the right output. -- **Layer 4: Business impact**. Whether better retrieval moves the KPIs the business cares about. This layer is application-specific and out of scope for these tutorials. +- **ANN recall** (this tutorial). Is the approximate index close to exact kNN? +- **Retrieval relevance** ([Measuring Retrieval Relevance](/documentation/improve-search/retrieval-quality-golden-set/)). Do the top-k results match query intent? +- **Pipeline output quality** ([Evaluating Pipeline Output Quality](/documentation/improve-search/retrieval-quality-pipeline-output/)). Does the end-to-end pipeline (retrieval + generator, ranker, or UI) produce the right output? +- **Business impact**. Do the KPIs the business cares about move? Application-specific, out of scope for these tutorials. -Retrieval quality sits on top of embedding quality, measured separately by benchmarks like [MTEB](https://huggingface.co/spaces/mteb/leaderboard), which sets the ceiling on every downstream metric. +A high score on a higher layer requires acceptable scores on the layers below. Embedding quality (separately measured by benchmarks like [MTEB](https://huggingface.co/spaces/mteb/leaderboard)) sets the ceiling on every downstream metric. ## Measure ANN Recall with the Web UI @@ -86,4 +86,4 @@ Wire it into CI and fail the job when recall falls below your target threshold. ## Next Steps -Once ANN recall is on target, continue with [Measuring Retrieval Relevance](/documentation/tutorials-search-engineering/retrieval-quality-golden-set/) to check how well those results match user intent. \ No newline at end of file +Once ANN recall is on target, continue with [Measuring Retrieval Relevance](/documentation/improve-search/retrieval-quality-golden-set/) to check how well those results match user intent. \ No newline at end of file From 9fbcd1adad76798b286e38492b6a9b89a03daf82 Mon Sep 17 00:00:00 2001 From: Dylan Couzon Date: Thu, 30 Apr 2026 16:32:46 -0400 Subject: [PATCH 62/64] Rename retrieval-quality slugs to match tutorial scope Tutorial slugs now match their content: - retrieval-quality/ -> ann-recall/ (alias preserves the old published path) - retrieval-quality-golden-set/ -> retrieval-relevance/ - retrieval-quality-pipeline-output/ -> pipeline-output-quality/ Co-Authored-By: Claude Opus 4.7 (1M context) --- .../headless/content/tutorials/search-engineering.md | 2 +- .../content/documentation/improve-search/_index.md | 4 ++-- ...ality-pipeline-output.md => pipeline-output-quality.md} | 6 +++--- ...rieval-quality-golden-set.md => retrieval-relevance.md} | 4 ++-- .../content/documentation/tutorials-lp-overview.md | 2 +- .../{retrieval-quality.md => ann-recall.md} | 7 ++++--- .../tutorials-search-engineering/static-embeddings.md | 2 +- 7 files changed, 14 insertions(+), 13 deletions(-) rename qdrant-landing/content/documentation/improve-search/{retrieval-quality-pipeline-output.md => pipeline-output-quality.md} (94%) rename qdrant-landing/content/documentation/improve-search/{retrieval-quality-golden-set.md => retrieval-relevance.md} (97%) rename qdrant-landing/content/documentation/tutorials-search-engineering/{retrieval-quality.md => ann-recall.md} (91%) diff --git a/qdrant-landing/content/documentation/headless/content/tutorials/search-engineering.md b/qdrant-landing/content/documentation/headless/content/tutorials/search-engineering.md index 40afe228d..ee8d15d3a 100644 --- a/qdrant-landing/content/documentation/headless/content/tutorials/search-engineering.md +++ b/qdrant-landing/content/documentation/headless/content/tutorials/search-engineering.md @@ -5,7 +5,7 @@ | [Relevance Feedback](/documentation/tutorials-search-engineering/using-relevance-feedback/) | Relevance Feedback Retrieval in Qdrant | Python | 30m | Intermediate | | [Collaborative Filtering](/documentation/tutorials-search-engineering/collaborative-filtering/) | Collaborative filtering using sparse embeddings. | Python | 45m | Intermediate | | [Multivector Document Retrieval](/documentation/tutorials-search-engineering/pdf-retrieval-at-scale/) | PDF RAG using ColPali and embedding pooling. | Python | 30m | Intermediate | -| [Measuring ANN Recall](/documentation/tutorials-search-engineering/retrieval-quality/) | Measure ANN recall with the Web UI and tune HNSW parameters. | Web UI | 15m | Beginner | +| [Measuring ANN Recall](/documentation/tutorials-search-engineering/ann-recall/) | Measure ANN recall with the Web UI and tune HNSW parameters. | Web UI | 15m | Beginner | | [Hybrid Search with Reranking](/documentation/tutorials-search-engineering/reranking-hybrid-search/) | Implement late interaction and sparse reranking. | Python | 40m | Intermediate | | [Semantic Search for Code](/documentation/tutorials-search-engineering/code-search/) | Navigate codebases using vector similarity. | Python | 45m | Intermediate | | [Multivectors and Late Interaction](/documentation/tutorials-search-engineering/using-multivector-representations/) | Effective use of multivector representations. | Python | 30m | Intermediate | diff --git a/qdrant-landing/content/documentation/improve-search/_index.md b/qdrant-landing/content/documentation/improve-search/_index.md index bf7c6ecf1..76bd911dd 100644 --- a/qdrant-landing/content/documentation/improve-search/_index.md +++ b/qdrant-landing/content/documentation/improve-search/_index.md @@ -10,5 +10,5 @@ partition: ecosystem | Tutorial | Objective | Stack | Time | Level | | :--- | :--- | :--- | :--- | :--- | -| [Measuring Retrieval Relevance](/documentation/improve-search/retrieval-quality-golden-set/) | Build a labeled golden set and score retrieval relevance with ranx. | Python | 40m | Intermediate | -| [Evaluating Pipeline Output Quality](/documentation/improve-search/retrieval-quality-pipeline-output/) | Score a RAG pipeline with Ragas and isolate retrieval vs generation failures. | Python | 45m | Intermediate | +| [Measuring Retrieval Relevance](/documentation/improve-search/retrieval-relevance/) | Build a labeled golden set and score retrieval relevance with ranx. | Python | 40m | Intermediate | +| [Evaluating Pipeline Output Quality](/documentation/improve-search/pipeline-output-quality/) | Score a RAG pipeline with Ragas and isolate retrieval vs generation failures. | Python | 45m | Intermediate | diff --git a/qdrant-landing/content/documentation/improve-search/retrieval-quality-pipeline-output.md b/qdrant-landing/content/documentation/improve-search/pipeline-output-quality.md similarity index 94% rename from qdrant-landing/content/documentation/improve-search/retrieval-quality-pipeline-output.md rename to qdrant-landing/content/documentation/improve-search/pipeline-output-quality.md index 29582fb36..3aac26446 100644 --- a/qdrant-landing/content/documentation/improve-search/retrieval-quality-pipeline-output.md +++ b/qdrant-landing/content/documentation/improve-search/pipeline-output-quality.md @@ -14,9 +14,9 @@ partition: ecosystem This tutorial focuses on **pipeline output quality**: whether the full retrieval pipeline produces the right output once retrieved results reach a consumer, most often an LLM generator in a RAG system. To measure pipeline output quality, you run your golden set through the full pipeline, capture each `(question, retrieved_context, answer)` triple, and score the triples against judgment metrics like faithfulness, answer relevancy, and context precision. -Two related tutorials cover the other retrieval-evaluation concerns: [Measuring ANN Recall](/documentation/tutorials-search-engineering/retrieval-quality/) (does the approximate index match exact kNN?) and [Measuring Retrieval Relevance](/documentation/improve-search/retrieval-quality-golden-set/) (do the top-k results match query intent?). +Two related tutorials cover the other retrieval-evaluation concerns: [Measuring ANN Recall](/documentation/tutorials-search-engineering/ann-recall/) (does the approximate index match exact kNN?) and [Measuring Retrieval Relevance](/documentation/improve-search/retrieval-relevance/) (do the top-k results match query intent?). -**Prerequisites.** A Qdrant collection populated with your documents as points (vectors + a `text` payload field for the chunk content), a labeled golden set (see [Measuring Retrieval Relevance](/documentation/improve-search/retrieval-quality-golden-set/)), LLM access for generation and judging, and Python with `ragas` installed. +**Prerequisites.** A Qdrant collection populated with your documents as points (vectors + a `text` payload field for the chunk content), a labeled golden set (see [Measuring Retrieval Relevance](/documentation/improve-search/retrieval-relevance/)), LLM access for generation and judging, and Python with `ragas` installed. ## Wiring the RAG Pipeline @@ -162,7 +162,7 @@ Ragas isn't the only tool in this space: FastAPI | 30m | Beginner | | [Collaborative Filtering](/documentation/tutorials-search-engineering/collaborative-filtering/) | Collaborative filtering using sparse embeddings. | Python | 45m | Intermediate | | [Multivector Document Retrieval](/documentation/tutorials-search-engineering/pdf-retrieval-at-scale/) | PDF RAG using ColPali and embedding pooling. | Python | 30m | Intermediate | -| [Measuring ANN Recall](/documentation/tutorials-search-engineering/retrieval-quality/) | Measure ANN recall with the Web UI and tune HNSW parameters. | Web UI | 15m | Beginner | +| [Measuring ANN Recall](/documentation/tutorials-search-engineering/ann-recall/) | Measure ANN recall with the Web UI and tune HNSW parameters. | Web UI | 15m | Beginner | | [Reranking for Better Search](/documentation/search-precision/reranking-semantic-search/) | Use multivector representations for better ranking. | Python | 30m | Intermediate | | [Hybrid Search with Reranking](/documentation/tutorials-search-engineering/reranking-hybrid-search/) | Implement late interaction and sparse reranking. | Python | 40m | Intermediate | | [Semantic Search for Code](/documentation/tutorials-search-engineering/code-search/) | Navigate codebases using vector similarity. | Python | 45m | Intermediate | diff --git a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality.md b/qdrant-landing/content/documentation/tutorials-search-engineering/ann-recall.md similarity index 91% rename from qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality.md rename to qdrant-landing/content/documentation/tutorials-search-engineering/ann-recall.md index 29601d7f0..031193488 100644 --- a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality.md +++ b/qdrant-landing/content/documentation/tutorials-search-engineering/ann-recall.md @@ -3,6 +3,7 @@ title: Measuring ANN Recall aliases: - /documentation/tutorials/retrieval-quality/ - /documentation/beginner-tutorials/retrieval-quality/ + - /documentation/tutorials-search-engineering/retrieval-quality/ weight: 5 --- @@ -20,8 +21,8 @@ This tutorial focuses on **ANN recall**: how closely approximate nearest-neighbo ANN recall measures how closely approximate search matches exact kNN. It's the first of four evaluation layers; each higher layer measures a different property of the retrieval system, with different tools. - **ANN recall** (this tutorial). Is the approximate index close to exact kNN? -- **Retrieval relevance** ([Measuring Retrieval Relevance](/documentation/improve-search/retrieval-quality-golden-set/)). Do the top-k results match query intent? -- **Pipeline output quality** ([Evaluating Pipeline Output Quality](/documentation/improve-search/retrieval-quality-pipeline-output/)). Does the end-to-end pipeline (retrieval + generator, ranker, or UI) produce the right output? +- **Retrieval relevance** ([Measuring Retrieval Relevance](/documentation/improve-search/retrieval-relevance/)). Do the top-k results match query intent? +- **Pipeline output quality** ([Evaluating Pipeline Output Quality](/documentation/improve-search/pipeline-output-quality/)). Does the end-to-end pipeline (retrieval + generator, ranker, or UI) produce the right output? - **Business impact**. Do the KPIs the business cares about move? Application-specific, out of scope for these tutorials. A high score on a higher layer requires acceptable scores on the layers below. Embedding quality (separately measured by benchmarks like [MTEB](https://huggingface.co/spaces/mteb/leaderboard)) sets the ceiling on every downstream metric. @@ -86,4 +87,4 @@ Wire it into CI and fail the job when recall falls below your target threshold. ## Next Steps -Once ANN recall is on target, continue with [Measuring Retrieval Relevance](/documentation/improve-search/retrieval-quality-golden-set/) to check how well those results match user intent. \ No newline at end of file +Once ANN recall is on target, continue with [Measuring Retrieval Relevance](/documentation/improve-search/retrieval-relevance/) to check how well those results match user intent. \ No newline at end of file diff --git a/qdrant-landing/content/documentation/tutorials-search-engineering/static-embeddings.md b/qdrant-landing/content/documentation/tutorials-search-engineering/static-embeddings.md index a984f96ac..264c97a43 100644 --- a/qdrant-landing/content/documentation/tutorials-search-engineering/static-embeddings.md +++ b/qdrant-landing/content/documentation/tutorials-search-engineering/static-embeddings.md @@ -135,7 +135,7 @@ ranking quality of search results, with higher scores indicating better performa Binary Quantization definitely speeds up the retrieval, and make it cheaper, but also seems not to affect the quality of the retrieval much in some cases. **However, that's something you should carefully verify on your own data**. If you are a Qdrant user, then you can just enable quantization on an existing collection and [measure the impact on the retrieval -quality](/documentation/tutorials-search-engineering/retrieval-quality/). +quality](/documentation/tutorials-search-engineering/ann-recall/). All the tests we did were performed using [`beir-qdrant`](https://github.com/kacperlukawski/beir-qdrant), and might be reproduced by running [the script available on the project From 3b4346e3ae54296e0d7413773b8c3008fb2f633a Mon Sep 17 00:00:00 2001 From: Dylan Couzon Date: Sat, 2 May 2026 14:37:04 -0400 Subject: [PATCH 63/64] change embedding at query time --- .../improve-search/pipeline-output-quality.md | 7 ++++--- .../improve-search/retrieval-relevance.md | 10 ++++------ 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/qdrant-landing/content/documentation/improve-search/pipeline-output-quality.md b/qdrant-landing/content/documentation/improve-search/pipeline-output-quality.md index 3aac26446..fc83f8aa1 100644 --- a/qdrant-landing/content/documentation/improve-search/pipeline-output-quality.md +++ b/qdrant-landing/content/documentation/improve-search/pipeline-output-quality.md @@ -22,7 +22,7 @@ Two related tutorials cover the other retrieval-evaluation concerns: [Measuring Ragas is a Python library that uses an LLM as a judge to score RAG outputs (rating each answer against criteria like faithfulness and relevancy). It expects samples shaped as `(question, retrieved_context, answer)` triples, so you build a fresh evaluation set from your labeled data. Three steps: prepare the evaluation data, define a grounding prompt, and run the retrieve-generate-record loop. -**1. Prepare the evaluation data.** Each entry needs a `query_id`, a `query_text` (for prompting the generator), a `query_vector` (for retrieval), and `labels`. For `context_precision` only, also include a `ground_truth` reference answer. +**1. Prepare the evaluation data.** Each entry needs a `query_id`, a `query_text` (used for both prompting the generator and embedding for retrieval), and `labels`. For `context_precision` only, also include a `ground_truth` reference answer. If your queries came from synthetic generation, they don't carry ground-truth answers natively. A simple workaround: make one more LLM pass per query, constrained to the source document, asking for a one-to-two-sentence reference answer. Skip this step if you're only scoring `faithfulness` and `answer_relevancy` (both are reference-free). @@ -31,7 +31,6 @@ If your queries came from synthetic generation, they don't carry ground-truth an { "query_id": "q1", "query_text": "how does X work", - "query_vector": [0.12, -0.48, 0.33, ...], "labels": {"doc_42": 1}, "ground_truth": "...", # optional; required for context_precision only } @@ -68,6 +67,8 @@ import anthropic from qdrant_client import QdrantClient from ragas import SingleTurnSample +from your_embedding_model import embed # must match the model your Qdrant collection uses + client = QdrantClient("http://localhost:6333") # or QdrantClient(url="https://.cloud.qdrant.io", api_key="...") for Qdrant Cloud # The example uses Anthropic, but any LLM provider works. @@ -95,7 +96,7 @@ def build_eval_set(golden_set: list, collection: str, k: int = 10) -> list: # Retrieve top-k chunks from Qdrant. results = client.query_points( collection_name=collection, - query=entry["query_vector"], + query=embed(entry["query_text"]), limit=k, ).points contexts = [p.payload["text"] for p in results] # adjust the payload key to match your schema diff --git a/qdrant-landing/content/documentation/improve-search/retrieval-relevance.md b/qdrant-landing/content/documentation/improve-search/retrieval-relevance.md index 57301c5ac..4f54468ac 100644 --- a/qdrant-landing/content/documentation/improve-search/retrieval-relevance.md +++ b/qdrant-landing/content/documentation/improve-search/retrieval-relevance.md @@ -67,13 +67,12 @@ Document: The evaluation runs in three steps: load the labeled queries into the shape ranx expects, run each through Qdrant, then compute metrics. -**1. Load and assemble.** For each labeled query, build an entry with `query_id`, `query_text`, `query_vector` (embedded with the same model your Qdrant collection uses), and `labels`: +**1. Load and assemble.** For each labeled query, build an entry with `query_id`, `query_text`, and `labels`: ```python { "query_id": "q1", "query_text": "how does X work", - "query_vector": [0.12, -0.48, 0.33, ...], # embedding of query_text "labels": {"doc_42": 1}, # source doc for synthetic queries, relevant docs otherwise } ``` @@ -81,8 +80,6 @@ The evaluation runs in three steps: load the labeled queries into the shape ranx Build the full `golden_set` by normalizing whatever your generation pipeline produced, then looping through it: ```python -from your_embedding_model import embed - # Normalize whatever your generation pipeline produced into this shape: # - Synthetic: one item per generated query, labels = {source_doc_id: 1} # - Logs: one item per query-click pair, labels = {clicked_doc_id: 1} @@ -98,7 +95,6 @@ for i, item in enumerate(labeled_data): golden_set.append({ "query_id": f"q{i}", "query_text": item["query_text"], - "query_vector": embed(item["query_text"]), "labels": item["labels"], }) ``` @@ -112,6 +108,8 @@ for i, item in enumerate(labeled_data): from qdrant_client import QdrantClient from ranx import Qrels, Run, evaluate +from your_embedding_model import embed # must match the model your Qdrant collection uses + client = QdrantClient("http://localhost:6333") # or QdrantClient(url="https://.cloud.qdrant.io", api_key="...") for Qdrant Cloud def retrieval_run(golden_set: list, collection: str, k: int = 10) -> Run: @@ -119,7 +117,7 @@ def retrieval_run(golden_set: list, collection: str, k: int = 10) -> Run: for entry in golden_set: results = client.query_points( collection_name=collection, - query=entry["query_vector"], + query=embed(entry["query_text"]), limit=k, ).points # p.id type must match the doc_id type in labels (ranx matches by equality). From 942f358f20ca697eaeca36cd31523e0a00c56b1e Mon Sep 17 00:00:00 2001 From: Dylan Couzon Date: Sat, 2 May 2026 16:32:51 -0400 Subject: [PATCH 64/64] Soften Ragas Framing --- .../improve-search/pipeline-output-quality.md | 33 +++++++++++++------ 1 file changed, 23 insertions(+), 10 deletions(-) diff --git a/qdrant-landing/content/documentation/improve-search/pipeline-output-quality.md b/qdrant-landing/content/documentation/improve-search/pipeline-output-quality.md index fc83f8aa1..3e4f42280 100644 --- a/qdrant-landing/content/documentation/improve-search/pipeline-output-quality.md +++ b/qdrant-landing/content/documentation/improve-search/pipeline-output-quality.md @@ -20,11 +20,13 @@ Two related tutorials cover the other retrieval-evaluation concerns: [Measuring ## Wiring the RAG Pipeline +Several frameworks score RAG outputs with an LLM judge, including Ragas, DeepEval, and others. We use Ragas here because it's the lightest setup for the three metrics this tutorial covers. If your team has standardized on a different framework or prefers to call the judge LLM directly, the same workflow applies. + Ragas is a Python library that uses an LLM as a judge to score RAG outputs (rating each answer against criteria like faithfulness and relevancy). It expects samples shaped as `(question, retrieved_context, answer)` triples, so you build a fresh evaluation set from your labeled data. Three steps: prepare the evaluation data, define a grounding prompt, and run the retrieve-generate-record loop. **1. Prepare the evaluation data.** Each entry needs a `query_id`, a `query_text` (used for both prompting the generator and embedding for retrieval), and `labels`. For `context_precision` only, also include a `ground_truth` reference answer. -If your queries came from synthetic generation, they don't carry ground-truth answers natively. A simple workaround: make one more LLM pass per query, constrained to the source document, asking for a one-to-two-sentence reference answer. Skip this step if you're only scoring `faithfulness` and `answer_relevancy` (both are reference-free). +Synthetic queries don't ship with ground-truth answers. If you're only scoring `faithfulness` and `answer_relevancy`, skip this step since both are reference-free. Otherwise, generate references by running each query through an LLM scoped to its source document. Have the model return `NO_ANSWER` when the source can't answer, and drop those rows before scoring, or `context_precision` ends up judging retrieval against a reference the source doc doesn't support. ```python # Example of an evaluation-ready entry. @@ -127,15 +129,28 @@ Three Ragas metrics cover the common failure modes for pipeline output quality: Pass the eval samples into `evaluate()` with those three metrics: ```python +from anthropic import Anthropic +from openai import OpenAI from ragas import EvaluationDataset, evaluate -from ragas.metrics.collections import faithfulness, answer_relevancy, context_precision +from ragas.embeddings.base import embedding_factory +from ragas.llms import llm_factory +from ragas.metrics.collections import AnswerRelevancy, ContextPrecision, Faithfulness + +# Judge LLM, Use a different LLM family as the generator to avoid self-evaluation bias +judge_client = OpenAI() # reads OPENAI_API_KEY from the environment +judge_llm = llm_factory("gpt-5.4", client=judge_client) + +# This is the judge's question-similarity check; it does not need to match the retrieval embedder. +judge_embeddings = embedding_factory("openai", model="text-embedding-3-large", client=judge_client) + +metrics = [ + Faithfulness(llm=judge_llm), + AnswerRelevancy(llm=judge_llm, embeddings=judge_embeddings), + ContextPrecision(llm=judge_llm), +] dataset = EvaluationDataset(samples=samples) -scores = evaluate( - dataset, - metrics=[faithfulness, answer_relevancy, context_precision], - # For a non-OpenAI judge, pass llm= and embeddings= (see Ragas docs). -) +scores = evaluate(dataset, metrics=metrics) ``` `evaluate()` returns an `EvaluationResult` object. Its aggregate scores print like this: @@ -159,8 +174,6 @@ If you ship retrieval changes regularly, this evaluation earns its place in CI. **Without a golden set.** `faithfulness` and `answer_relevancy` are reference-free; swap `context_precision` for `LLMContextPrecisionWithoutReference`. You can then score synthetic queries offline or sampled production traffic live, at the cost of no fixed baseline for regression gating. -Ragas isn't the only tool in this space: DeepEval has a pytest-native API that fits the CI story more directly. - ## Isolating Retrieval vs Generation If you're also running [retrieval evaluation](/documentation/improve-search/retrieval-relevance/) against the same golden set, pairing the two scores on every run gives a diagnostic 2x2 for attributing score changes. When a metric drops after a change (new embedding model, new prompt, or new chunking strategy), the pair tells you which half of the pipeline to investigate. @@ -186,7 +199,7 @@ Ragas's metrics assume the consumer is an LLM generator. If retrieval feeds some **Self-judging contamination.** Using the same model to generate and to judge inflates scores because the judge recognizes and rewards its own output style. Pick a different model family for the judge than for the generator, and record both versions in every run so score shifts can't be blamed on a silent upgrade. -**Cost scaling.** LLM-as-judge cost grows with queries times metrics times judge calls per metric, and Ragas makes multiple judge calls per sample. A 500-query golden set with three metrics runs into the thousands of judge-model calls per run. Sample aggressively during iteration and reserve the full sweep for release candidates. +**Cost scaling.** LLM-as-judge cost grows with queries times metrics times judge calls per metric, and Ragas makes multiple judge calls per sample. A 500-query golden set with three metrics runs into the thousands of judge-model calls per run. Sample 50 to 100 queries with a cheap judge (`claude-haiku-4-5` or `gpt-4o-mini`) during iteration; reserve the full sweep with the strong judge for release candidates. ## Wrapping Up

    |O!B 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 literal 0 HcmV?d00001 From 921b645e70efaa9a19b352910cd9fd3f69907c77 Mon Sep 17 00:00:00 2001 From: Dylan Couzon Date: Wed, 22 Apr 2026 16:34:16 -0400 Subject: [PATCH 24/64] retrieval-quality: pivot to Web UI, add CI skeleton, trim setup - Drop the dataset-setup walkthrough (HF loading, collection create, upload, wait-for-green). Readers at this phase already have a collection. - Replace the Python evaluation block with a "Measure ANN Recall with the Web UI" section built around the Search Quality tab. Default run is one-click (sample size 10); HNSW tuning uses the tab's advanced mode instead of update_collection. Three screenshot placeholders at /documentation/tutorials/retrieval-quality/*.png. - Reflect that the tab reports precision@k; note the recall@k equivalence already spelled out in the ANN Recall section. - Keep Python but move it to an "Automate in CI" section with a reusable skeleton function. - Collapse the standalone "Embeddings Quality" section into a one-sentence MTEB pointer inside ANN Recall. - Rewrite Wrapping Up to match the new scope. - Link the HNSW tuning section to Optimize Performance for the full parameter reference. --- .../retrieval-quality.md | 216 +++++------------- 1 file changed, 51 insertions(+), 165 deletions(-) diff --git a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality.md b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality.md index 2038e297c..b484ef475 100644 --- a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality.md +++ b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality.md @@ -15,18 +15,9 @@ This tutorial measures **layer 1** of the +![Search Quality tab with default evaluation results](/documentation/tutorials/retrieval-quality/search-quality-tab.png) -```python -from datasets import load_dataset +The tab reports average **precision@k**. The score is typically high but not always perfect. When you need higher recall and can accept higher latency or more memory, HNSW is tunable. -dataset = load_dataset( - "Qdrant/arxiv-titles-instructorxl-embeddings", split="train", streaming=True -) -``` +## Tweaking the HNSW Parameters -We need some data to be indexed and another set for the testing purposes. Let's get the first 60000 items for the training and the next 1000 -for the testing. +HNSW is a hierarchical graph where each node has a set of links to other nodes. The `m` parameter controls the number of edges per node: higher `m` means higher recall at the cost of more memory. The `ef_construct` parameter controls how many neighbours are considered during index building: higher `ef_construct` means higher recall at the cost of longer indexing time. Defaults are `m=16` and `ef_construct=100`. -```python -dataset_iterator = iter(dataset) -train_dataset = [next(dataset_iterator) for _ in range(60000)] -test_dataset = [next(dataset_iterator) for _ in range(1000)] -``` +For the full list of HNSW parameters, including on-disk storage and precision/memory trade-offs, see [Optimize Performance](/documentation/operations/optimize/). -Now, let's create a collection and index the training data. This collection will be created with the default configuration. Please be aware that -it might be different from your collection settings, and it's always important to test exactly the same configuration you are going to use later -in production. +Toggle **advanced mode** in the Search Quality tab to tune these parameters inline. Raise `m` to 32 and `ef_construct` to 200, then run the evaluation again. -