* Add new Scaling landing page under Operations
Introduces a Scaling section with vertical vs. horizontal scaling
guidance and failover best practices, linking out to detail pages.
* Add new Vertical Scaling page
Dedicated how-to guidance for resizing existing nodes: when to scale
vertically, RAM sizing formulas, and Cloud/self-hosted resize steps.
* Add new Horizontal Scaling and Resilience page
Covers Raft consensus, the replication model, consistency guarantees,
Multi-AZ, and the resilience terminology used elsewhere in the docs.
* Move Distributed Deployment under Scaling and update all incoming links
Moves distributed_deployment.md into the new scaling/ section, trims
its Raft/Replication/Consistency intros into cross-links to the new
Horizontal Scaling and Resilience page, adds Multi-AZ and single-replica
cross-link callouts in the Cloud docs, rewrites all internal references
across ~30 files to the new canonical path instead of relying on
aliases, and applies Title Case to Distributed Deployment's headers.
* Split Resilience out of Horizontal Scaling and Resilience
Adds a dedicated Resilience page covering fault tolerance, Multi-AZ,
resilience terminology, and failover best practices (moved from the
Scaling landing page). Horizontal Scaling is retitled and scoped to
the underlying mechanics: Raft consensus, replication, and consistency.
* Reorganize Horizontal Scaling's structure
Moves "How Many Qdrant Nodes Should I Run?" from Distributed Deployment
into Horizontal Scaling, adds a conceptual Sharding section, and
reorders Sharding/Replication/Raft Consensus/Consistency. Moves the
remaining conceptual content out of Distributed Deployment: Temporary
Node Failure to Resilience, Error Handling folded into Replication,
sharding heuristics folded into Sharding, and the Consensus
Checkpointing explanation folded into Raft Consensus.
* Rename Scaling section to Scaling & Resilience
Renames the section and restructures the landing page: the vertical-
vs-horizontal decision is now purely about scaling, with a dedicated
Resilience section covering fault tolerance through sharding and
multi-node deployments.
* Polish Vertical Scaling and Resilience page content
Reframes Vertical Scaling's "What Not to Do" as positive "Best
Practices". Reworks Resilience's structure: moves the uptime/data-
integrity terminology into the intro as three distinct aspects of
resilience, and renames "How Resilience Works" to "Setting Up a
Resilient Qdrant Cluster".
* Add diagrams illustrating sharding and replication
Adds cluster diagrams to the Sharding and Replication sections on
Horizontal Scaling to make the shard/replica layout easier to follow.
* Add new Node Failure Recovery page
Extracts the node failure recovery scenarios out of Distributed
Deployment into their own page, with each bolded sub-header converted
to a proper heading, and links updated across Resilience and the
Scaling landing page.
* Add new Consistency Guarantees page
Extracts write consistency factor, read consistency, and write
ordering out of Distributed Deployment into their own page, positioned
after Distributed Deployment.
* Add new "Deploy Behind a Load Balancer" section
Explains why a load balancer is needed in front of a multi-node
Qdrant cluster: avoiding a single point of failure at the entry point
and making sure replicas on every node actually serve reads.
* Add new "Rebalancing" section
Documents how Qdrant Cloud automatically rebalances shards across
nodes, as its own subsection under Sharding.
* Rewrite Multi-AZ vs. Replication Factor as Multi-AZ Deployments
Defines an availability zone on first use, explains why multi-AZ
deployments guard against a zone going down, clarifies that Qdrant
Cloud is zone-aware once enabled, and that self-hosted deployments
need to place and move replicas across zones manually.
* Restructure node-count guidance into One/Two/Three-or-more Node subsections
Splits "How Many Qdrant Nodes Should I Run?" into three subsections
and drops the "balanced" framing for two nodes: it states plainly
that two nodes give more capacity without true high availability.
* Add new "Which Configuration Is Right for You?" section
Summarizes the one/two/three-or-more node tradeoffs in one place
right after the detailed breakdown.
* Add explicit _redirects entry for legacy distributed_deployment URL
Closes the redirect chain: the existing /guides/ and /operations/
legacy rules both terminate at /documentation/distributed_deployment/,
which previously had no explicit _redirects entry and only resolved
via the Hugo alias meta-refresh page.
* Fix all incoming links to Distributed Deployment and pages under Scaling
Repoints two same-page anchors in distributed_deployment.md that broke
when Write Ordering moved to Consistency Guarantees, and one link in
cloud/create-cluster.md that broke when a Resilience heading was
reworded.
* Update time-based sharding diagram and restructure section
* Fix a couple of broken links
* Move 'Consensus Checkpointing' to 'Node Failure Recovery' page
* Add 'Stable Ordering' section to 'Pagination' section
* Add FAQ entry
* Small edits to the Pagination section
* Apply title case to all headers on page
* Small edit
* Increase maximum side navigation depth by one
* Break up Text Search guide into multiple pages
* Update links to Text Search guide
* Broken link
* One more broken link
* One more broken link
* Shorten title
* Break Inference page into several pages
* Make all inference code snippets testable and clean up
* Make more snippets testable
* Edits
* Document automatic query and passage prefix injection in Cloud Inference
Qdrant Cloud Inference silently applies model-specific prefixes (e.g.
"query: "/"passage: " for E5, BGE-style instruction prefix for BGE/mxbai/
Snowflake arctic-embed) so users don't need to manage them manually.
Add a section explaining this behavior, the idempotency guarantee, and
the scope (Qdrant-hosted models only; external providers handle their own).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* Document short query optimization in Cloud Inference
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* Update links
* Expand on external provider API key usage
* Add section about external provider API keys
* Default to header for external API keys
---------
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
FormulaQuery is the Python class name; TS uses formula. Switch prose,
heading, link anchor, and SEO meta to the neutral term so the docs read
correctly regardless of SDK.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Move FormulaQuery from Hybrid Search into Multi-Stage Queries; soften
weighted-RRF tuning prose; tighten the RRF-k intro.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Address findings from a code-bot adversarial review of the hybrid-search
materials:
- `hybrid-formula-decay/` (all 7 language sources + http.md +
`_description.md`): wrap the decay term in `MultExpression(mult=[0.1, ...])`
in every language. Previously the snippets summed `$score` with
`ExpDecayExpression` directly, modeling the failure mode the docs
explicitly warn against (un-weighted decay crowds out small RRF scores).
Also document the `defaults` requirement and the recommended datetime
payload index in `_description.md`. Build validated across all 6 SDKs.
- `hybrid-rrf/go.go`: add `Limit: qdrant.PtrOf(uint64(20))` to both
prefetches so the Go snippet matches the other language tabs.
- `hybrid-queries.md`:
- Reframe the weighted-RRF intro to drop "semantic search model
understands meaning better than a simple keyword matcher". On
SciFact (the corpus in the companion notebook) BM25 actually beats
dense, so the universal claim was contradicted by our own data.
- Clarify that the notebook provides a tuning helper to adapt to a
train/val split, not that it demonstrates the split itself.
- Add a one-line note that Qdrant uses zero-based rank positions so
readers can verify the RRF formula against actual scores.
- Apply brand-voice fixes: Title Case on "Multi-Stage Queries" and
"Re-Scoring Examples", replace "all the above techniques" with
"all of these techniques".
`generated/*.md` regenerated via `./docker.sh ./generate-md.py`.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Replaces the older `FusionQuery(fusion=Fusion.RRF)` enum form with
`RrfQuery(rrf=Rrf())` across all language tabs (Python, TypeScript,
Rust, Go, Java, C#) plus the REST body in `http.md`, for both the
`hybrid-rrf/` snippet and the inner RRF prefetch inside
`hybrid-formula-decay/`. The newer dedicated `Rrf` message is the
recommended path going forward; the old enum stays supported for
backward compatibility. Server-side both forms converge to the same
`FusionInternal::Rrf { k: 2, weights: None }`, verified against the
qdrant/qdrant source.
`generated/*.md` files in both directories regenerated via
`./docker.sh ./generate-md.py`. `./docker.sh ./check.py build` passes
across all six SDKs.
Also softens the DBSF prose in hybrid-queries.md to drop the
"weighted RRF tends to win" framing. Neither method dominates the
other in general.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Calibrates BM25 length normalization for the short title+categories
sparse field with a comment on why. Removes redundant k1/b/avg_len
prose from the tutorial Open Ends section and the cross-link paragraph
in text-search.md, since the BM25 Parameters subsection above already
documents calibration with a working example.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- hybrid-queries: see-also link at end of grouping section
- vectors: clarify MaxSim returns one combined score and point to named vectors + tutorial
- text-search: BM25 short-field calibration note plus BM25F workaround pointer
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* Add stronger wording about wait=true
* Position indexed_only and prevent_unoptimized as alternatives
* Review feedback
* Apply suggestions from code review
Co-authored-by: Tim Visée <tim+github@visee.me>
* Small edit
---------
Co-authored-by: Tim Visée <tim+github@visee.me>
* initial commit; fixed anchor links on internal docs pages
* add back in absolute paths for links in code comments
* fix: update linkchecker include filter to match server port 1314
PR #1629 changed the Hugo server to port 1314 but forgot to update
the --include filter, which still matched port 1313. This caused all
links to be excluded, making the checker a no-op (0 checked, 82277 excluded).
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* Fix url rewrite regex so images are not impacted
* Fix links from non-documentation pages
* Fix broken links
* more broken links
* more broken links
* broken link
* Add srcset width descriptor to .lycheeignore
* Ignore URLs that contain a % character
* Anchor regex so it matches the entire URL
---------
Co-authored-by: kanungle <neil.kanungo@gmail.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: Abdon Pijpelink <abdon.pijpelink@qdrant.com>