diff --git a/README.md b/README.md index edf7ae5c7..452c6bbd4 100644 --- a/README.md +++ b/README.md @@ -288,7 +288,7 @@ If `true`, the page will not be shown in the sidebar. It can be used in regular The Learn portal (`/learn/`) groups four resources: Guides, Tutorials & Examples, Courses, and Technical Articles, with a link to videos on YouTube. The sidebar for `partition: learn` pages is built by `themes/qdrant-2024/layouts/partials/documentation/learn-menu.html` from the content below. -Search on `partition: learn` pages covers Articles, Courses, guide sections, and pages marked `learning_kind: tutorials`. The `learn-search-sections` meta tag supplies those paths because tutorials retain their Develop or Ecosystem partitions. Develop and Deploy continue to share the `develop,deploy,cloud,qdrant` documentation search scope. +Search on `partition: learn` pages covers Articles, Courses, guide sections, and pages marked `learning_kind: examples`. The `learn-search-sections` meta tag supplies those paths because tutorials retain their Develop or Ecosystem partitions. Develop and Deploy continue to share the `develop,deploy,cloud,qdrant` documentation search scope. The Guides and Tutorials & Examples hubs show the three most recently published dated pages in their collections. Set `date` (or `publishDate`) in a page's front matter to include it; undated pages remain in the full listings. Content moves do not reset publication dates. The initial three tutorial dates come from their original addition commits. @@ -300,10 +300,10 @@ Choose the directory that matches the guide: | Topic | Directory under `content/documentation/` | | --- | --- | -| Search Evaluation | `search-quality/` | +| Search Evaluation | `search-evaluation/` | | Search Patterns | `search-patterns/` | | Search Tuning | `search-tuning/` | -| Production & Performance | `production-patterns/` | +| Production & Operations | `production-operations/` | 1. Fill in the title, `short_description` (card summary), `description` (search/social summary), and Markdown body. Keep the guide directly inside its topic directory. 2. Set `date` to the publication date, remove or update any copied `publishDate`, and choose a unique positive `weight` within the topic. Lower weights appear first; gaps such as 10, 20, 30 make later insertions easier. @@ -324,7 +324,7 @@ When moving an existing page into a guide topic, preserve its original date, add #### Tutorials & Examples -`/learn/examples/` automatically lists published pages marked `learning_kind: tutorials`, ordered by title. The existing `tutorials-*` sections and `documentation/examples/` supply that marker through their `_index.md` cascade. Pages retain their original URLs and Develop or Ecosystem navigation. +`/learn/examples/` automatically lists published pages marked `learning_kind: examples`, ordered by title. The existing `tutorials-*` sections and `documentation/examples/` supply that marker through their `_index.md` cascade. Pages retain their original URLs and Develop or Ecosystem navigation. To add a tutorial: @@ -345,13 +345,17 @@ example_resources: No separate catalog entry is needed. The listing, Goal and Stack filters, Learn sidebar categories, Learn search scope, and Markdown directory all use the same discovered pages. Recently Published selects the three newest dated tutorials by `PublishDate`; editing a tutorial does not change its publication date. Normal builds exclude drafts and future publications. -A tutorial outside these sections can opt in by setting `learning_kind: tutorials` in its front matter. A non-tutorial inside them can opt out with `learning_kind: reference`. Keep `hideInSidebar` for controlling the documentation sidebar; it does not exclude a tutorial from Learn. +A tutorial outside these sections can opt in by setting `learning_kind: examples` in its front matter. A non-tutorial inside them can opt out with `learning_kind: reference`. Keep `hideInSidebar` for controlling the documentation sidebar; it does not exclude a tutorial from Learn. The build reports missing goals, stacks, or descriptions, and resource URLs that no longer appear in the tutorial body. `example_resources` is separate from Hugo's reserved `resources` field for page bundle configuration. +#### Courses + +The sidebar lists each section of `content/course/` by `weight`. To add an external course, create a page in `content/learn/` with `type: external-link`, `external_url`, `weight`, `partition: learn`, and `sitemapExclude: true`. The `ref-courses-*.md` files are examples. + #### Articles -An article is listed under the category page in `content/articles//_index.md` that matches its `category`. The shared article-selection helper lives in `layouts/partials/documentation/articles/list.html`, so HTML and Markdown use the same collection. Existing categories and articles remain published; editorial reorganization and retirement are separate from the Guides migration. +An article is listed under the category page in `content/articles//_index.md` that matches its `category`. The shared article-selection helper lives in `themes/qdrant-2024/layouts/partials/documentation/articles/list.html`, so HTML and Markdown use the same collection. ## Blog diff --git a/qdrant-landing/content/ai-agents/ai-agents-features.md b/qdrant-landing/content/ai-agents/ai-agents-features.md index 7bdb9fc96..d1104df41 100644 --- a/qdrant-landing/content/ai-agents/ai-agents-features.md +++ b/qdrant-landing/content/ai-agents/ai-agents-features.md @@ -30,7 +30,7 @@ features: description: Qdrant’s scalability and multitenancy ensures that multiple agents can collaborate in distributed systems, enabling seamless coordination and communication - key for Agentic RAG workflows. link: text: Multitenancy - url: /documentation/production-patterns/multitenant-search/ + url: /documentation/production-operations/multitenant-search/ - id: 2 icon: src: /icons/outline/time-blue.svg diff --git a/qdrant-landing/content/articles/agentic-builders-guide.md b/qdrant-landing/content/articles/agentic-builders-guide.md index bcbb2c757..27169eebb 100644 --- a/qdrant-landing/content/articles/agentic-builders-guide.md +++ b/qdrant-landing/content/articles/agentic-builders-guide.md @@ -128,7 +128,7 @@ The same agent that speeds through a toy dataset with 10,000 points will become We’ll talk about three concepts you can take advantage of to improve your scale, but if you want even more information on how to scale, check out this [article](https://qdrant.tech/documentation/database-tutorials/large-scale-search/) on large scale search. -As your dataset and traffic grow, Qdrant Cloud offers a suite of features to ensure your system can scale effectively. Horizontal scaling is achieved through [sharding](https://qdrant.tech/documentation/production-patterns/multitenant-search/), which splits your collection across multiple nodes to distribute the load and improve performance. For high availability and fault tolerance, Qdrant supports [replication](https://qdrant.tech/documentation/scaling/distributed_deployment/), creating copies of your shards across the cluster. +As your dataset and traffic grow, Qdrant Cloud offers a suite of features to ensure your system can scale effectively. Horizontal scaling is achieved through [sharding](https://qdrant.tech/documentation/production-operations/multitenant-search/), which splits your collection across multiple nodes to distribute the load and improve performance. For high availability and fault tolerance, Qdrant supports [replication](https://qdrant.tech/documentation/scaling/distributed_deployment/), creating copies of your shards across the cluster. Qdrant provides robust tools for resource and cost optimization. Vector [quantization](https://qdrant.tech/documentation/manage-data/quantization/) compresses your data, significantly reducing its memory footprint and speeding up search. diff --git a/qdrant-landing/content/articles/dedicated-vector-search.md b/qdrant-landing/content/articles/dedicated-vector-search.md index 71d253b8e..def5fdab9 100644 --- a/qdrant-landing/content/articles/dedicated-vector-search.md +++ b/qdrant-landing/content/articles/dedicated-vector-search.md @@ -205,7 +205,7 @@ In addition to that, we continuously look for improvements in: | **Memory Efficiency & Compression** | Techniques such as [**quantization**](/documentation/manage-data/quantization/) and [**HNSW compression**](/blog/qdrant-1.13.x/#hnsw-graph-compression) to reduce storage requirements | | **Retrieval Algorithms** | Support for the latest retrieval algorithms, including [**sparse neural retrieval**](/articles/modern-sparse-neural-retrieval/), [**hybrid search**](/documentation/search/hybrid-queries/) methods, and [**re-rankers**](/documentation/fastembed/fastembed-rerankers/). | | **Vector Data Analysis & Visualization** | Tools like the [**distance matrix API**](/blog/qdrant-1.12.x/#distance-matrix-api-for-data-insights) provide insights into vectorized data, and a [**Web UI**](/blog/qdrant-1.11.x/#web-ui-search-quality-tool) allows for intuitive exploration of data. | -| **Search Speed & Scalability** | Includes optimizations for [**multi-tenant environments**](/documentation/production-patterns/multitenant-search/) to ensure efficient and scalable search. | +| **Search Speed & Scalability** | Includes optimizations for [**multi-tenant environments**](/documentation/production-operations/multitenant-search/) to ensure efficient and scalable search. | **These advancements are not just incremental improvements — they define the difference between a system optimized for vector search and one that accommodates it.** diff --git a/qdrant-landing/content/articles/rag-is-dead.md b/qdrant-landing/content/articles/rag-is-dead.md index 1538caae6..53766b56d 100644 --- a/qdrant-landing/content/articles/rag-is-dead.md +++ b/qdrant-landing/content/articles/rag-is-dead.md @@ -80,7 +80,7 @@ That’s a buck a question. > Vector search queries are orders of magnitude cheaper than queries made by LLMs. -Conversely, the only up-front investment with vector search engines is the indexing (which requires more compute). After this step, everything else is a breeze. Once setup, Qdrant easily scales via [features like Multitenancy and Sharding](/documentation/production-patterns/multitenant-search/). This lets you scale up your reliance on the vector retrieval process and minimize your use of the compute-heavy LLMs. As an optimization measure, Qdrant is irreplaceable. +Conversely, the only up-front investment with vector search engines is the indexing (which requires more compute). After this step, everything else is a breeze. Once setup, Qdrant easily scales via [features like Multitenancy and Sharding](/documentation/production-operations/multitenant-search/). This lets you scale up your reliance on the vector retrieval process and minimize your use of the compute-heavy LLMs. As an optimization measure, Qdrant is irreplaceable. Julien Simon from HuggingFace says it best: diff --git a/qdrant-landing/content/articles/what-is-a-vector-database.md b/qdrant-landing/content/articles/what-is-a-vector-database.md index 7844a2a91..7ec379f55 100644 --- a/qdrant-landing/content/articles/what-is-a-vector-database.md +++ b/qdrant-landing/content/articles/what-is-a-vector-database.md @@ -478,7 +478,7 @@ client.upsert( Each tenant’s data remains isolated while still benefiting from the shared infrastructure. Optimizing for data privacy, compliance with local regulations, and scalability, without the need to create excessive collections or maintain separate clusters for each tenant. -If you want to learn more about working with a multitenant setup in Qdrant, you can check out our [Multitenancy and Custom Sharding dedicated guide.](https://qdrant.tech/documentation/production-patterns/multitenant-search/) +If you want to learn more about working with a multitenant setup in Qdrant, you can check out our [Multitenancy and Custom Sharding dedicated guide.](https://qdrant.tech/documentation/production-operations/multitenant-search/) ## Data Security and Access Control diff --git a/qdrant-landing/content/blog/qdrant-1.11.x.md b/qdrant-landing/content/blog/qdrant-1.11.x.md index 7cda411f0..d843d0487 100644 --- a/qdrant-landing/content/blog/qdrant-1.11.x.md +++ b/qdrant-landing/content/blog/qdrant-1.11.x.md @@ -34,13 +34,13 @@ New Web UI Tools:
### Quick Recap: Multitenant Workloads -Before we dive into the specifics of our optimizations, let's first go over Multitenancy. This is one of our most significant features, [best used for scaling and data isolation](https://qdrant.tech/documentation/production-patterns/multitenant-search/). +Before we dive into the specifics of our optimizations, let's first go over Multitenancy. This is one of our most significant features, [best used for scaling and data isolation](https://qdrant.tech/documentation/production-operations/multitenant-search/). If you’re using Qdrant to manage data for multiple users, regions, or workspaces (tenants), we suggest setting up a [multitenant environment](/documentation/manage-data/multitenancy/). This approach keeps all tenant data in a single global collection, with points separated and isolated by their payload. To avoid slow and unnecessary indexing, it’s better to create an index for each relevant payload rather than indexing the entire collection globally. Since some data is indexed more frequently, you can focus on building indexes for specific regions, workspaces, or users. -*For more details on scaling best practices, read [How to Implement Multitenancy and Custom Sharding](https://qdrant.tech/documentation/production-patterns/multitenant-search/).* +*For more details on scaling best practices, read [How to Implement Multitenancy and Custom Sharding](https://qdrant.tech/documentation/production-operations/multitenant-search/).* ### Defragmentation of Tenant Storage diff --git a/qdrant-landing/content/blog/using-qdrant-and-langchain.md b/qdrant-landing/content/blog/using-qdrant-and-langchain.md index 9fdacc768..6ad25aa3e 100644 --- a/qdrant-landing/content/blog/using-qdrant-and-langchain.md +++ b/qdrant-landing/content/blog/using-qdrant-and-langchain.md @@ -88,7 +88,7 @@ If you are looking to scale up and keep the same level of performance, Qdrant an Whether you are building a bank fraud-detection system, RAG for e-commerce, or services for the federal government - you will need to leverage a scalable architecture for your product. Qdrant offers different features to help you considerably increase your application’s performance and lower your hosting costs. -> Read more about out how we foster [best practices for large-scale deployments](/documentation/production-patterns/multitenant-search/). +> Read more about out how we foster [best practices for large-scale deployments](/documentation/production-operations/multitenant-search/). ## Next Steps diff --git a/qdrant-landing/content/cloud-inference/approaches.md b/qdrant-landing/content/cloud-inference/approaches.md index 4ebbbe616..5453b9de8 100644 --- a/qdrant-landing/content/cloud-inference/approaches.md +++ b/qdrant-landing/content/cloud-inference/approaches.md @@ -6,7 +6,7 @@ description: >- on the text or images you embed, and the rate depends on the model: several are free, others are metered. Inference speed varies by model too, so a cheaper model isn't always the faster one. You can read more about - choosing an embedding model, + choosing an embedding model, or contact us to talk through sizing. button: text: Talk Through Sizing With Our Team diff --git a/qdrant-landing/content/course/beginners/module-6/measure-first.md b/qdrant-landing/content/course/beginners/module-6/measure-first.md index 6048a5455..732d26ac9 100644 --- a/qdrant-landing/content/course/beginners/module-6/measure-first.md +++ b/qdrant-landing/content/course/beginners/module-6/measure-first.md @@ -14,7 +14,7 @@ Ranking changes are hard to judge by eye, because a worse results page still loo A golden set pairs queries with the documents that should come back for them. It turns a ranking change into a number. -Sample query and click pairs from your logs, or have someone who knows the domain write 20 or 30 queries with the answers they expect. [Measuring Retrieval Relevance](/documentation/search-quality/retrieval-relevance/) covers both and computes the metrics with the Python library [`ranx`](https://amenra.github.io/ranx/). +Sample query and click pairs from your logs, or have someone who knows the domain write 20 or 30 queries with the answers they expect. [Measuring Retrieval Relevance](/documentation/search-evaluation/retrieval-relevance/) covers both and computes the metrics with the Python library [`ranx`](https://amenra.github.io/ranx/). Pick the metric that matches the labels you ended up with. diff --git a/qdrant-landing/content/documentation/ecosystem-tab.md b/qdrant-landing/content/documentation/ecosystem-tab.md index d90b59879..2c45c7746 100644 --- a/qdrant-landing/content/documentation/ecosystem-tab.md +++ b/qdrant-landing/content/documentation/ecosystem-tab.md @@ -74,5 +74,5 @@ build: - [Essential Examples](/documentation/tutorials-build-essentials/index.md) — Hands-on tutorials for agentic RAG, multimodal search, data ingestion, and automation integrations. - [Build Prototypes](/documentation/examples/index.md) — End-to-end code samples for RAG pipelines, hybrid search, multitenancy, recommendations, and multimodal search. -- [Search Evaluation](/documentation/search-quality/index.md) — Techniques for improving retrieval relevance and pipeline output quality. +- [Search Evaluation](/documentation/search-evaluation/index.md) — Techniques for improving retrieval relevance and pipeline output quality. - [Practice Datasets](/documentation/datasets/index.md) — Ready-made Qdrant snapshots of public datasets you can import and explore without the embedding step. diff --git a/qdrant-landing/content/documentation/examples/_index.md b/qdrant-landing/content/documentation/examples/_index.md index 013a20c0e..53e162560 100644 --- a/qdrant-landing/content/documentation/examples/_index.md +++ b/qdrant-landing/content/documentation/examples/_index.md @@ -5,7 +5,7 @@ description: "Hands-on Qdrant code samples and notebooks for RAG, hybrid search, weight: 1300 partition: ecosystem cascade: - learning_kind: tutorials + learning_kind: examples --- # Build Prototypes diff --git a/qdrant-landing/content/documentation/faq/qdrant-fundamentals.md b/qdrant-landing/content/documentation/faq/qdrant-fundamentals.md index 0740d3450..87ffb5b01 100644 --- a/qdrant-landing/content/documentation/faq/qdrant-fundamentals.md +++ b/qdrant-landing/content/documentation/faq/qdrant-fundamentals.md @@ -156,7 +156,7 @@ Both methods combine scores from multiple retrieval legs (for example, dense and For custom fusion, use the [Formula Query](/documentation/search/search-relevance/#score-boosting). For example, you can use decay functions to normalize both scores to a 0-1 range and then fuse them. This approach requires you to determine the approximate score distribution for each corpus, since you can't set decay function parameters dynamically. The Formula Query doesn't support custom rank-based fusion because it doesn't have access to prefetch ranks; only to the raw scores. -To evaluate which works better for your use case, create a small golden query set and compare [retrieval quality metrics](/documentation/search-quality/retrieval-relevance/) (for example, NDCG@10) under each method. +To evaluate which works better for your use case, create a small golden query set and compare [retrieval quality metrics](/documentation/search-evaluation/retrieval-relevance/) (for example, NDCG@10) under each method. See also: the [Choosing a Fusion Method](/documentation/search/hybrid-queries/#choosing-a-fusion-method) decision table in the Hybrid Queries reference, and the [Choosing a Fusion Method notebook](https://github.com/qdrant/examples/blob/master/fusion-methods/Choosing_a_Fusion_Method.ipynb) for a runnable RRF vs weighted RRF vs DBSF eval on BEIR/SciFact with a reusable weight-tuning helper. diff --git a/qdrant-landing/content/documentation/production-patterns/_index.md b/qdrant-landing/content/documentation/production-operations/_index.md similarity index 83% rename from qdrant-landing/content/documentation/production-patterns/_index.md rename to qdrant-landing/content/documentation/production-operations/_index.md index fa5eed103..9a1404eee 100644 --- a/qdrant-landing/content/documentation/production-patterns/_index.md +++ b/qdrant-landing/content/documentation/production-operations/_index.md @@ -1,5 +1,5 @@ --- -title: Production & Performance +title: Production & Operations short_description: Plan multitenancy, bulk uploads, and memory placement as your Qdrant application and vector collection grow. description: Plan multitenancy, bulk uploads, and memory placement as your Qdrant application and vector collection grow. partition: learn @@ -19,17 +19,17 @@ related: - /documentation/capacity-planning/ content: - partial: documentation/banners/banner-a - title: Production & Performance + title: Production & Operations description: Plan multitenancy, bulk uploads, and memory placement as your Qdrant application and vector collection grow. linkDescription: Choose the pattern that matches your workload and its constraints. cloudButton: text: Serve Many Tenants - url: /documentation/production-patterns/multitenant-search/ + url: /documentation/production-operations/multitenant-search/ localButton: text: Plan a Data Import - url: /documentation/production-patterns/bulk-data-import/ + url: /documentation/production-operations/bulk-data-import/ - partial: documentation/guides/guide-cards - section: /documentation/production-patterns/ + section: /documentation/production-operations/ worked_examples: - /documentation/tutorials-search-engineering/index-dynamic-payloads/ - /documentation/tutorials-search-engineering/branch-aware-search/ diff --git a/qdrant-landing/content/documentation/production-patterns/bulk-data-import.md b/qdrant-landing/content/documentation/production-operations/bulk-data-import.md similarity index 100% rename from qdrant-landing/content/documentation/production-patterns/bulk-data-import.md rename to qdrant-landing/content/documentation/production-operations/bulk-data-import.md diff --git a/qdrant-landing/content/documentation/production-patterns/memory-tiers.md b/qdrant-landing/content/documentation/production-operations/memory-tiers.md similarity index 100% rename from qdrant-landing/content/documentation/production-patterns/memory-tiers.md rename to qdrant-landing/content/documentation/production-operations/memory-tiers.md diff --git a/qdrant-landing/content/documentation/production-patterns/multitenant-search.md b/qdrant-landing/content/documentation/production-operations/multitenant-search.md similarity index 100% rename from qdrant-landing/content/documentation/production-patterns/multitenant-search.md rename to qdrant-landing/content/documentation/production-operations/multitenant-search.md diff --git a/qdrant-landing/content/documentation/scaling/distributed_deployment.md b/qdrant-landing/content/documentation/scaling/distributed_deployment.md index d267f9d03..9f414db9a 100644 --- a/qdrant-landing/content/documentation/scaling/distributed_deployment.md +++ b/qdrant-landing/content/documentation/scaling/distributed_deployment.md @@ -146,7 +146,7 @@ When you create a collection, Qdrant splits the collection into `shard_number` s To ensure all nodes in your cluster are evenly utilized, the number of shards must be a multiple of the number of nodes you are currently running in your cluster. -> Aside: Advanced use cases such as multitenancy may require an uneven distribution of shards. See [Multitenancy](/documentation/production-patterns/multitenant-search/). +> Aside: Advanced use cases such as multitenancy may require an uneven distribution of shards. See [Multitenancy](/documentation/production-operations/multitenant-search/). We recommend creating at least 2 shards per node to allow future expansion without having to re-shard. [Resharding](/documentation/cloud/cluster-scaling/#resharding) is possible on Qdrant Cloud, but should be avoided if hosting elsewhere as it would require creating a new collection. diff --git a/qdrant-landing/content/documentation/search-quality/_index.md b/qdrant-landing/content/documentation/search-evaluation/_index.md similarity index 86% rename from qdrant-landing/content/documentation/search-quality/_index.md rename to qdrant-landing/content/documentation/search-evaluation/_index.md index f7a8093a9..795391fde 100644 --- a/qdrant-landing/content/documentation/search-quality/_index.md +++ b/qdrant-landing/content/documentation/search-evaluation/_index.md @@ -26,10 +26,10 @@ content: linkDescription: Choose the evaluation method that matches the result you need to judge. cloudButton: text: Measure Retrieval Relevance - url: /documentation/search-quality/retrieval-relevance/ + url: /documentation/search-evaluation/retrieval-relevance/ localButton: text: Evaluate Pipeline Output - url: /documentation/search-quality/pipeline-output-quality/ + url: /documentation/search-evaluation/pipeline-output-quality/ - partial: documentation/guides/guide-cards - section: /documentation/search-quality/ + section: /documentation/search-evaluation/ --- diff --git a/qdrant-landing/content/documentation/search-quality/pipeline-output-quality.md b/qdrant-landing/content/documentation/search-evaluation/pipeline-output-quality.md similarity index 95% rename from qdrant-landing/content/documentation/search-quality/pipeline-output-quality.md rename to qdrant-landing/content/documentation/search-evaluation/pipeline-output-quality.md index 8be431d94..6c7a812d4 100644 --- a/qdrant-landing/content/documentation/search-quality/pipeline-output-quality.md +++ b/qdrant-landing/content/documentation/search-evaluation/pipeline-output-quality.md @@ -16,9 +16,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. -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/search-quality/retrieval-relevance/) (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/search-evaluation/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/search-quality/retrieval-relevance/)), 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/search-evaluation/retrieval-relevance/)), LLM access for generation and judging, and Python with `ragas` installed. ## Wiring the RAG Pipeline @@ -178,7 +178,7 @@ If you ship retrieval changes regularly, this evaluation earns its place in CI. ## Isolating Retrieval vs Generation -If you're also running [retrieval evaluation](/documentation/search-quality/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. +If you're also running [retrieval evaluation](/documentation/search-evaluation/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. 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. diff --git a/qdrant-landing/content/documentation/search-quality/retrieval-relevance.md b/qdrant-landing/content/documentation/search-evaluation/retrieval-relevance.md similarity index 98% rename from qdrant-landing/content/documentation/search-quality/retrieval-relevance.md rename to qdrant-landing/content/documentation/search-evaluation/retrieval-relevance.md index 52d30b0be..57040e507 100644 --- a/qdrant-landing/content/documentation/search-quality/retrieval-relevance.md +++ b/qdrant-landing/content/documentation/search-evaluation/retrieval-relevance.md @@ -16,7 +16,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. -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 [Evaluating Pipeline Output Quality](/documentation/search-quality/pipeline-output-quality/) (does the end-to-end pipeline produce the right output?). +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 [Evaluating Pipeline Output Quality](/documentation/search-evaluation/pipeline-output-quality/) (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. @@ -178,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/search-quality/pipeline-output-quality/). +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/search-evaluation/pipeline-output-quality/). diff --git a/qdrant-landing/content/documentation/search-patterns/_index.md b/qdrant-landing/content/documentation/search-patterns/_index.md index 5bee5622d..2e0999cf2 100644 --- a/qdrant-landing/content/documentation/search-patterns/_index.md +++ b/qdrant-landing/content/documentation/search-patterns/_index.md @@ -16,7 +16,7 @@ content: - partial: documentation/banners/banner-a title: Search Patterns description: Choose how your search system represents data, handles questions, and narrows results. - linkDescription: Choose the pattern that fits your application’s search needs. + linkDescription: Choose the pattern that fits your application's search needs. cloudButton: text: Choose an Embedding Model url: /documentation/search-patterns/choose-embedding-model/ diff --git a/qdrant-landing/content/documentation/search-patterns/query-decomposition.md b/qdrant-landing/content/documentation/search-patterns/query-decomposition.md index 739011617..0630f849c 100644 --- a/qdrant-landing/content/documentation/search-patterns/query-decomposition.md +++ b/qdrant-landing/content/documentation/search-patterns/query-decomposition.md @@ -121,4 +121,4 @@ The birthplace chunk never mentions Inception, so the original question won't su ## When to Use It -Decomposition adds an LLM call and a query per hop, so reach for it only when a question spans multiple facts. For single-fact questions, one query is faster and just as accurate. To confirm it helps on your data, compare `recall@k` for single-pass against decomposition on a small set of multi-hop questions; the [Measuring Retrieval Relevance](/documentation/search-quality/retrieval-relevance/) tutorial covers the setup. +Decomposition adds an LLM call and a query per hop, so reach for it only when a question spans multiple facts. For single-fact questions, one query is faster and just as accurate. To confirm it helps on your data, compare `recall@k` for single-pass against decomposition on a small set of multi-hop questions; the [Measuring Retrieval Relevance](/documentation/search-evaluation/retrieval-relevance/) tutorial covers the setup. diff --git a/qdrant-landing/content/documentation/search-tuning/before-tuning-a-qdrant-collection.md b/qdrant-landing/content/documentation/search-tuning/before-tuning-a-qdrant-collection.md index a96f4bb07..a8d066b15 100644 --- a/qdrant-landing/content/documentation/search-tuning/before-tuning-a-qdrant-collection.md +++ b/qdrant-landing/content/documentation/search-tuning/before-tuning-a-qdrant-collection.md @@ -39,7 +39,7 @@ If you run dense-only search and exact keywords are missing from results, hybrid Before you tune: 1. Check that vectors are indexed and that every field used in a filter has a payload index. [Collection details](/documentation/manage-data/collections/#collection-info) and [payload indexing](/documentation/manage-data/indexing/#payload-index) show what to inspect. -2. Build a labeled query set and choose a metric that matches the product experience. A labeled query pairs a real user query with the documents that should be returned. [Measuring retrieval relevance](/documentation/search-quality/retrieval-relevance/) walks through the setup. +2. Build a labeled query set and choose a metric that matches the product experience. A labeled query pairs a real user query with the documents that should be returned. [Measuring retrieval relevance](/documentation/search-evaluation/retrieval-relevance/) walks through the setup. ## The Symptom Tells You Where to Start @@ -130,7 +130,7 @@ Choose the metric before you compare settings, because the metric decides the wi ## Make Sure Your Labels Can Detect a Gain -[Retrieval relevance](/documentation/search-quality/retrieval-relevance/) covers building a labeled set. Its size decides whether any retrieval tuning is visible to you at all. +[Retrieval relevance](/documentation/search-evaluation/retrieval-relevance/) covers building a labeled set. Its size decides whether any retrieval tuning is visible to you at all. A labeled set is large enough when it can distinguish the improvement you care about from normal query-to-query variation. Size alone will not save an unrepresentative set. Pull queries across the mix your product sees, including its important query types and filters, and spot-check a sample of the labels yourself. diff --git a/qdrant-landing/content/documentation/tutorials-basics/_index.md b/qdrant-landing/content/documentation/tutorials-basics/_index.md index 46eac341e..5d9438867 100644 --- a/qdrant-landing/content/documentation/tutorials-basics/_index.md +++ b/qdrant-landing/content/documentation/tutorials-basics/_index.md @@ -9,7 +9,7 @@ aliases: - tutorials partition: develop cascade: - learning_kind: tutorials + learning_kind: examples --- ### Basic Tutorials diff --git a/qdrant-landing/content/documentation/tutorials-build-essentials/_index.md b/qdrant-landing/content/documentation/tutorials-build-essentials/_index.md index 69a6ab58d..ef68ec161 100644 --- a/qdrant-landing/content/documentation/tutorials-build-essentials/_index.md +++ b/qdrant-landing/content/documentation/tutorials-build-essentials/_index.md @@ -5,7 +5,7 @@ description: "Step-by-step tutorials integrating Qdrant with LangChain, LlamaInd weight: 1200 partition: ecosystem cascade: - learning_kind: tutorials + learning_kind: examples --- # Integration Examples diff --git a/qdrant-landing/content/documentation/tutorials-develop/_index.md b/qdrant-landing/content/documentation/tutorials-develop/_index.md index 0d9bc4bb0..a98208349 100644 --- a/qdrant-landing/content/documentation/tutorials-develop/_index.md +++ b/qdrant-landing/content/documentation/tutorials-develop/_index.md @@ -6,7 +6,7 @@ weight: 425 is_empty: false partition: develop cascade: - learning_kind: tutorials + learning_kind: examples --- ### Develop & Implement Tutorials diff --git a/qdrant-landing/content/documentation/tutorials-operations/_index.md b/qdrant-landing/content/documentation/tutorials-operations/_index.md index 4d5eae351..5bdf205f4 100644 --- a/qdrant-landing/content/documentation/tutorials-operations/_index.md +++ b/qdrant-landing/content/documentation/tutorials-operations/_index.md @@ -9,7 +9,7 @@ aliases: - tutorials partition: develop cascade: - learning_kind: tutorials + learning_kind: examples --- ### Operations & Scale Tutorials diff --git a/qdrant-landing/content/documentation/tutorials-search-engineering/_index.md b/qdrant-landing/content/documentation/tutorials-search-engineering/_index.md index 6e0013238..8c906e582 100644 --- a/qdrant-landing/content/documentation/tutorials-search-engineering/_index.md +++ b/qdrant-landing/content/documentation/tutorials-search-engineering/_index.md @@ -9,7 +9,7 @@ aliases: - tutorials partition: develop cascade: - learning_kind: tutorials + learning_kind: examples --- ### Search Engineering Tutorials diff --git a/qdrant-landing/content/documentation/tutorials-search-engineering/ann-recall.md b/qdrant-landing/content/documentation/tutorials-search-engineering/ann-recall.md index 55bcca500..264d77641 100644 --- a/qdrant-landing/content/documentation/tutorials-search-engineering/ann-recall.md +++ b/qdrant-landing/content/documentation/tutorials-search-engineering/ann-recall.md @@ -35,8 +35,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/search-quality/retrieval-relevance/)). Do the top-k results match query intent? -- **Pipeline output quality** ([Evaluating Pipeline Output Quality](/documentation/search-quality/pipeline-output-quality/)). Does the end-to-end pipeline (retrieval + generator, ranker, or UI) produce the right output? +- **Retrieval relevance** ([Measuring Retrieval Relevance](/documentation/search-evaluation/retrieval-relevance/)). Do the top-k results match query intent? +- **Pipeline output quality** ([Evaluating Pipeline Output Quality](/documentation/search-evaluation/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. @@ -101,4 +101,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/search-quality/retrieval-relevance/) 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/search-evaluation/retrieval-relevance/) to check how well those results match user intent. \ No newline at end of file diff --git a/qdrant-landing/content/elastic-lucene/elastic-lucene-features.md b/qdrant-landing/content/elastic-lucene/elastic-lucene-features.md index 555c879b8..708ad1263 100644 --- a/qdrant-landing/content/elastic-lucene/elastic-lucene-features.md +++ b/qdrant-landing/content/elastic-lucene/elastic-lucene-features.md @@ -24,7 +24,7 @@ features: description: Properly use a multitenant architecture to scale your product. link: text: Read about Multitenancy - url: /documentation/production-patterns/multitenant-search/ + url: /documentation/production-operations/multitenant-search/ sitemapExclude: true --- diff --git a/qdrant-landing/content/learn/_index.md b/qdrant-landing/content/learn/_index.md index 53bf987cd..fc357d187 100644 --- a/qdrant-landing/content/learn/_index.md +++ b/qdrant-landing/content/learn/_index.md @@ -75,13 +75,13 @@ content: - title: Evaluate Search Quality description: Choose an evaluation baseline before changing embeddings, retrieval, or ranking. link: - url: /documentation/search-quality/ + url: /documentation/search-evaluation/ text: Explore Search Evaluation - title: Prepare for Production description: Plan tenant growth and large imports around the workload you need to serve. link: - url: /documentation/production-patterns/ - text: Explore Production & Performance + url: /documentation/production-operations/ + text: Explore Production & Operations - title: Choose Search Patterns description: Choose embedding models, plan query decomposition, and filter results for your application. link: diff --git a/qdrant-landing/layouts/documentation/guides.markdown.md b/qdrant-landing/layouts/documentation/guides.markdown.md index f249e5e7e..e3ea914cf 100644 --- a/qdrant-landing/layouts/documentation/guides.markdown.md +++ b/qdrant-landing/layouts/documentation/guides.markdown.md @@ -11,7 +11,7 @@ {{- range .RegularPages.ByWeight -}} {{- $content = printf "%s- [%s](%sindex.md)" $content .Title .Permalink -}} {{- with .Params.short_description -}} - {{- $content = printf "%s — %s" $content . -}} + {{- $content = printf "%s: %s" $content . -}} {{- end -}} {{- $content = printf "%s\n" $content -}} {{- end -}} diff --git a/qdrant-landing/static/_redirects b/qdrant-landing/static/_redirects index 06471a86c..787e4e26d 100644 --- a/qdrant-landing/static/_redirects +++ b/qdrant-landing/static/_redirects @@ -83,7 +83,7 @@ /articles/rag-and-genai/ /articles/rag-and-agents/ 301 # Unpublished indexing-optimization article superseded by bulk-uploads-in-qdrant -/articles/indexing-optimization/ /documentation/production-patterns/bulk-data-import/ 301 +/articles/indexing-optimization/ /documentation/production-operations/bulk-data-import/ 301 # ACORN blog post converted into an internals article /blog/filtered-vector-search-acorn/ /articles/filtered-vector-search-acorn/ 301 @@ -92,20 +92,20 @@ # Force redirects so generated Hugo alias files cannot shadow the HTTP 301. # Keep specific page moves before the Improve Search section fallback. /articles/before-tuning-a-qdrant-collection/* /documentation/search-tuning/before-tuning-a-qdrant-collection/:splat 301! -/articles/bulk-uploads-in-qdrant/* /documentation/production-patterns/bulk-data-import/:splat 301! +/articles/bulk-uploads-in-qdrant/* /documentation/production-operations/bulk-data-import/:splat 301! /articles/candidate-depth/* /documentation/search-tuning/candidate-depth/:splat 301! /articles/how-to-choose-an-embedding-model/* /documentation/search-patterns/choose-embedding-model/:splat 301! /articles/how-to-tune-hybrid-search/* /documentation/search-tuning/how-to-tune-hybrid-search/:splat 301! /articles/hybrid-search/* /documentation/search-tuning/hybrid-search/:splat 301! -/articles/memory-tiers-in-qdrant-what-to-use-and-when/* /documentation/production-patterns/memory-tiers/:splat 301! -/articles/multitenancy/* /documentation/production-patterns/multitenant-search/:splat 301! +/articles/memory-tiers-in-qdrant-what-to-use-and-when/* /documentation/production-operations/memory-tiers/:splat 301! +/articles/multitenancy/* /documentation/production-operations/multitenant-search/:splat 301! /articles/vector-search-filtering/* /documentation/search-patterns/vector-search-filtering/:splat 301! /articles/when-a-reranker-is-worth-it/* /documentation/search-tuning/when-a-reranker-is-worth-it/:splat 301! /articles/when-your-collection-outgrows-ram/* /documentation/search-tuning/when-your-collection-outgrows-ram/:splat 301! -/documentation/improve-search/pipeline-output-quality/* /documentation/search-quality/pipeline-output-quality/:splat 301! +/documentation/improve-search/pipeline-output-quality/* /documentation/search-evaluation/pipeline-output-quality/:splat 301! /documentation/improve-search/query-decomposition/* /documentation/search-patterns/query-decomposition/:splat 301! -/documentation/improve-search/retrieval-relevance/* /documentation/search-quality/retrieval-relevance/:splat 301! -/documentation/improve-search/* /documentation/search-quality/:splat 301! +/documentation/improve-search/retrieval-relevance/* /documentation/search-evaluation/retrieval-relevance/:splat 301! +/documentation/improve-search/* /documentation/search-evaluation/:splat 301! # Agent Skills moved under the Agentic Tools hub. The page's `aliases:` front # matter already covers the HTML, but Hugo writes an alias as index.html with diff --git a/qdrant-landing/layouts/partials/documentation/articles/list.html b/qdrant-landing/themes/qdrant-2024/layouts/partials/documentation/articles/list.html similarity index 100% rename from qdrant-landing/layouts/partials/documentation/articles/list.html rename to qdrant-landing/themes/qdrant-2024/layouts/partials/documentation/articles/list.html diff --git a/qdrant-landing/themes/qdrant-2024/layouts/partials/documentation/examples/pages.html b/qdrant-landing/themes/qdrant-2024/layouts/partials/documentation/examples/pages.html index b39f3b054..469de69d8 100644 --- a/qdrant-landing/themes/qdrant-2024/layouts/partials/documentation/examples/pages.html +++ b/qdrant-landing/themes/qdrant-2024/layouts/partials/documentation/examples/pages.html @@ -1,4 +1,4 @@ -{{- $pages := where site.RegularPages "Params.learning_kind" "tutorials" -}} +{{- $pages := where site.RegularPages "Params.learning_kind" "examples" -}} {{- range $pages -}} {{- if not .Params.goal -}}{{- errorf "Missing tutorial goal: %s" .Path -}}{{- end -}} {{- if not .Params.stack -}}{{- errorf "Missing tutorial stack: %s" .Path -}}{{- end -}}