Qdrant
Vector database written in Rust. Strong filtering (payload-based pre-filter), HNSW index with quantization variants, gRPC + REST APIs. The performance pick when you cross 10M vectors.
Overview
What it is and how it works
Qdrant is a purpose-built vector database written in Rust, designed to store, index, and search high-dimensional embeddings alongside structured metadata (called "payloads" in Qdrant's terminology). At its core, Qdrant uses HNSW (Hierarchical Navigable Small World) graphs for approximate nearest-neighbor search — the same class of algorithm used by most modern vector search engines — but its implementation is built from the ground up in Rust rather than wrapping an existing C++ library like FAISS. This gives the Qdrant team tighter control over memory layout, concurrency, and how filtering interacts with the index, which shows up directly in its standout feature: payload-based pre-filtering that stays fast even under complex boolean, range, and geo conditions.
The filtering story is what differentiates Qdrant architecturally from many competitors. Rather than bolting metadata filtering on as a post-search step (filter after retrieving top-K, which can silently return fewer results than requested when filters are selective), Qdrant integrates filtering into the HNSW traversal itself, using a technique it calls "filterable HNSW." This means a query like "find similar vectors where category=X AND price<50 AND region in [A,B]" can be answered efficiently without first over-fetching and discarding candidates. For workloads with rich metadata — e-commerce catalogs, multi-tenant SaaS applications, RAG pipelines with document-level access control — this is a meaningful architectural advantage over engines that treat filtering as an afterthought.
Qdrant also supports quantization (scalar, product, and binary quantization) to shrink memory footprint and speed up search at some recall cost, along with on-disk storage modes for datasets that don't fit in RAM. It exposes both gRPC and REST APIs, with official client libraries for Python, JavaScript/TypeScript, Rust, Go, and others. Collections can be sharded and replicated for horizontal scaling, and Qdrant supports named vectors (multiple embedding spaces per point) and sparse vectors, which matters for hybrid dense+sparse (BM25-style) retrieval setups.
Deployment patterns
For a solo developer or small local-AI project, Qdrant typically runs as a single Docker container (docker run qdrant/qdrant) with a local volume mount for persistence, fronted by a Python or TypeScript client talking gRPC or REST. This is a common pattern in local RAG stacks: an embedding model (e.g., a sentence-transformers model or a local embedding server) generates vectors, Qdrant stores and indexes them, and an LLM runner (Ollama, llama.cpp server, vLLM) handles generation. Because Qdrant ships a real binary with no external dependencies beyond the container runtime, it starts fast and needs minimal tuning for datasets in the low millions of vectors on a single machine.
For homelab or self-hosted team setups, the same single-node deployment scales reasonably far — Qdrant is often cited as staying performant well past the point where developers assumed they'd need a distributed system. When a single node genuinely isn't enough (very large collections, high query throughput, or availability requirements), Qdrant supports clustering with Raft-based consensus for cluster metadata and sharding for data distribution, which is a meaningful step up in operational complexity but is documented and production-tested. Teams that want to skip that operational burden can use Qdrant Cloud, the managed offering, which runs the same open-source engine behind a hosted control plane — useful for scaling a local prototype to production without a rewrite, since the API surface is identical.
A common local-AI pattern worth noting: Qdrant is frequently paired with local embedding models via LangChain, LlamaIndex, or Haystack integrations, all of which have first-class Qdrant support, making it a drop-in vector store for RAG pipelines built around local inference.
How it compares
Against Chroma, Qdrant is the more performance-oriented and production-hardened choice. Chroma is easier to get started with — it can run fully embedded in a Python process with zero infrastructure — and is genuinely simpler for prototyping small RAG apps. Qdrant requires standing up a server (even if that's just one Docker container) and has more configuration surface area (collection schemas, quantization settings, index parameters), so the learning curve is steeper. In exchange, Qdrant's filtering, clustering, and quantization options make it the more credible choice once a project needs to scale past a demo, particularly the stated crossover point around 10M+ vectors where its Rust-based indexing and pre-filtering start to matter more than Chroma's simplicity.
Against Weaviate, the comparison is closer. Weaviate also offers hybrid search, filtering, and clustering, plus a built-in module system for embeddings and generative integrations (effectively more "batteries included"). Qdrant tends to be leaner and, per the provided assessment, has a narrower feature set around graph-style or relationship queries — Weaviate's schema/class model with cross-references leans more toward that use case. Qdrant's payload filtering is generally regarded as faster and more predictable at scale, but Weaviate's out-of-the-box module ecosystem can mean less glue code for teams that want an all-in-one system.
Against Milvus, Qdrant is simpler to operate for small-to-mid deployments. Milvus is built for very large-scale distributed deployments from the ground up (with a more complex multi-component architecture involving separate proxy, query, and data nodes), which is powerful but heavier to self-host correctly. Qdrant's single-binary-to-cluster path is more approachable for teams that don't need Milvus's scale from day one.
Best use cases and honest limitations
Qdrant is a strong default for local-AI and self-hosted RAG projects that expect to outgrow toy scale — anyone building a system where metadata filtering (multi-tenancy, access control, faceted search) is a first-class requirement rather than an afterthought benefits directly from its filterable HNSW design. Its Rust implementation gives genuinely good single-node performance, and its clustering support means the same tool can carry a project from a laptop prototype through a production homelab server without a migration.
It is a worse choice for someone who just wants to bolt a vector store onto a five-file prototype script — Chroma's embedded, dependency-free mode wins there, and Qdrant's setup and configuration overhead isn't worth it for trivial datasets. Teams needing rich native graph-relationship queries between entities will find Qdrant's payload model less mature than dedicated graph-aware systems. And while Qdrant Cloud exists for teams that want to avoid ops work entirely, organizations fully committed to a no-self-hosting policy may prefer a fully managed-first product rather than an open-source engine with a cloud option bolted on.
Stack & relationships
How Qdrant relates to other entries in the catalog — recommended pairings, alternatives, dependencies, and edges to avoid. Each edge carries a one-line operator note from our editorial team.
Works with
- Works withAnythingLLM
The upgrade path when workspaces grow past 100K vectors. PQ quantization cuts storage 4-8x.
- Works withMem0 (agent memory API)
Mem0's production-tier vector backend. Switch from LanceDB to Qdrant when memory store grows past ~500K vectors per agent.
- Works withAnythingLLM
Production-tier swap for AnythingLLM workspaces past 100K vectors. Standard upgrade path.
Alternatives
- Competes withWeaviate
Both are production-grade vector DBs. Qdrant has the simpler ops surface and better single-node performance; Weaviate has hybrid-search and broader query language.
- Competes withMilvus
Qdrant is single-node-friendly and fast to deploy; Milvus is the heavy-duty distributed option for the 100M+ vector scale.
- Alternative toChroma
Chroma is the simplest dev-experience vector store; Qdrant is the production upgrade once your collection sizes outgrow Chroma's single-node design.
- Alternative toWeaviate
Weaviate has hybrid search and a richer query language; Qdrant has cleaner ops and faster single-node performance. Pick by workload shape.
- Alternative toMilvus
Milvus targets 100M+ vector scale with distributed deployment; Qdrant is single-node-friendly. Switch from Qdrant to Milvus only when you've outgrown single-node.
- Alternative toRedis (vector search)
Redis Vector is the right choice when you already run Redis for caching and want vector search without adding another service. Slower than purpose-built vector DBs at scale.
Pros
- Rust performance
- Excellent payload filtering
- Production-grade clustering
Cons
- Steeper learning curve than Chroma
- Less mature for graph queries
Compatibility
| Operating systems | macOS Linux Windows Docker |
| GPU backends | optional GPU acceleration |
| License | Open source · free (OSS) + managed cloud |
Runtime health
Operator-grade signals on how actively Qdrant is being maintained, how fresh its measurements are, and what failure classes operators have flagged. Every label below is anchored to a real date or count — we never infer maintainer activity we can't show.
Release cadence
Derived from the most recent editorial signal on this row.
32 days since last refresh · source: enrichedAt
Benchmark freshness
How recent the editorial measurements on this runtime are.
No editorial benchmarks for this runtime yet.
Community reproduction
Submissions that match an editorial measurement on similar hardware.
No community reproductions on file yet.
Get Qdrant
Frequently asked
Is Qdrant free?
What operating systems does Qdrant support?
Which GPUs work with Qdrant?
Reviewed by RunLocalAI Editorial. See our editorial policy for how we evaluate tools.
Related — keep moving
Verify Qdrant runs on your specific hardware before committing money.