mrkeyoor.com_
Sat 31 Oct 11:47 UTC
Dataevaluationupdated 05 Oct 2026

qdrant review

Qdrant is a database for storing vectors and finding nearby matches, with filters for ordinary fields such as prices, locations, and labels. It gives search, recommendation, and retrieval systems a dedicated service instead of forcing vector lookup into an application process.

+96stars / 7d
Verdict

Our Qdrant build did not finish within 900 seconds, although all 320 tests passed in 240 seconds, so users get a credible database while source contributors need patience and stronger hardware. Choose it when filtered vector search deserves its own operational boundary and your team can secure and monitor that boundary. Keep vectors in Postgres when a separate database would create more consistency work than search value.

We ran it

Lab card: what happened when we ran qdrantScreenshot of qdrant (qdrant.tech)
Install✓ · 52s731 packages
Build✗ timed out · 900s
Tests✓ · 240s320 passed · 0 failed of 320 (cargo test)
Repo2358 files~554,317 lines of source · 35.8 MB · 18 CI workflows · Dockerfile · tests dir

Answers from our run

Does qdrant build from source?

Dependencies installed in 52 seconds (731 packages), and the build failed. We cloned commit 6ab21ca into a clean Debian container with 3 CPUs and no project-specific setup.

Do qdrant's tests pass?

Yes. The project's own test command finished in 240 seconds and reported 320 passed, 0 failed (cargo test).

Who should not use qdrant?

Small applications whose vectors must change atomically with relational rows: Qdrant is a separate client-server database, so you own the dual-write and recovery path.

What are the alternatives to qdrant?

pgvector, Weaviate, Milvus. Our Qdrant build did not finish within 900 seconds, although all 320 tests passed in 240 seconds, so users get a credible database while source contributors need patience and stronger hardware.

Setup3/552-second install, but our source build exceeded 900 seconds
Docs5/5Clear quick start, security warning, clients, APIs, and concepts
Community5/534,931 stars and active issue and pull request work in October
Maturity5/5v1.19.1, distributed features, 18 workflows, and 320 passing tests

Discussed on

  1. hnWe were not accepted into Google Summer of Code. So, we started our own146 points
  2. hnQdrant, the Vector Search Database, raised $28M in a Series A round131 points
  3. hnQdrant 1.7.087 points
  4. hnImmutable Data Structures in Qdrant46 points
  5. hnQdrant: Vector Database for the next generation of AI applications29 points

Who it’s for

Teams building semantic search, recommendations, or retrieval systems that need dense, sparse, or multi-vector queries.
Developers who want filtering, faceting, and vector scoring in the same database request.
Operators prepared to manage collections, indexes, snapshots, shards, and replicas.
Buyers who want an Apache-2.0 server with official clients for Python, JavaScript, Rust, Go, Java, and .NET.

Who it’s NOT for

Small applications whose vectors must change atomically with relational rows: Qdrant is a separate client-server database, so you own the dual-write and recovery path.
Teams expecting a safe production service from the README's one-line Docker command: the project says that command has no authentication and listens on every network interface.
Contributors who need quick source builds on modest hardware: our 3-CPU build was still running when the 900-second cap ended it.
Chinese BM25 users unwilling to run their own relevance evaluation: open issue 8014 reports very low MIRACL-zh recall and precision with the multilingual tokenizer.

Setup reality

Our sandbox installed commit 6ab21ca in 52 seconds, adding 731 packages. The source build hit the 900-second limit without completing. Cargo tests finished in 240 seconds with 320 passed and 0 failed.

A local Docker trial needs no credential, but the README warns that its command exposes an unauthenticated service on every interface. Production requires an authentication, network, storage, snapshot, and TLS plan, plus an embedding model or service to create the vectors.

The repository is substantial: 2,358 files, about 554,317 source lines, and 35.8 MB checked out. Sharding, replication, payload indexes, quantization, and memory-versus-disk choices make Qdrant an operated database rather than a library you can forget after installation.

Qdrant earns its place when filters belong beside vector search

Qdrant has 6 official client libraries and keeps vector lookup beside JSON payload filtering. A product catalog can find semantically similar items while limiting results by price or availability. A retrieval system can combine dense embeddings with sparse terms, then fuse their rankings. The same query layer covers recommendations, geographic conditions, full-text fields, faceting, and multi-vector records. That breadth is the reason to add another database.

The separation also creates work. Your application or model service still has to produce the vectors. Qdrant then owns their identifiers, payloads, indexes, and search settings. If the source record lives in PostgreSQL, a failed second write can leave the two stores disagreeing. Teams need an idempotent ingestion path, a way to replay changes, and a clear answer about which system is authoritative. A modest application may be better served by pgvector and one transaction boundary.

The one-line Docker start has no authentication

The README's trial command maps port 6333, while our installation took 52 seconds before any production configuration. The project also carries a blunt warning: that Docker deployment has no authentication and is open on every network interface. This is useful documentation because the fastest path is unsafe outside a controlled machine. Before real data arrives, bind the service deliberately, enable access controls, protect traffic, and decide who can create or delete collections.

Official clients exist for six languages, including Python, JavaScript and TypeScript, Rust, Go, Java, and .NET. REST uses an OpenAPI specification, while gRPC provides another interface for production traffic. The Web UI can inspect collections and call the API. None of those clients removes the database work underneath: storage placement, snapshot testing, index construction, capacity alarms, and recovery drills remain operator jobs.

What happened when we ran it

We cloned and tested commit 6ab21ca with our documented measurement setup. Installation took 52 seconds and pulled 731 packages. The unprivileged Debian container had 3 CPUs, 12 GB of RAM, no secrets, and the lab-rust:1 image. The checkout held 2,358 files, roughly 554,317 source lines, and occupied 35.8 MB. Installation passed without an error.

The build did not complete before our 900-second cap. The supplied result records a timeout, not a compiler failure or a diagnosed cause, so we cannot pin it on memory, a missing package, or broken code. It does establish a practical fact: this commit did not produce a finished source build on that machine within 15 minutes. Anyone changing the Rust server should budget more time or use a stronger builder.

Tests told a better story. Cargo test finished in 240 seconds with 320 passed and 0 failed. The repository also contained 18 CI workflow files, a Dockerfile, and a tests directory. Those signals do not turn our timed-out build into a pass, but they show a project with real automated checks rather than a database assembled around a demo.

Hybrid search stays inside one database request

Qdrant supports 3 vector models in one query path: dense, sparse, and multi-vector. It can merge multiple result lists with reciprocal-rank or distribution-based fusion. Payload indexes let structured filters participate in query planning instead of becoming an application-side pass over approximate matches. For search teams, this is the strongest case for Qdrant: ranking and filtering share one execution system.

You still have to test relevance on your own corpus. Open issue 8014 describes a MIRACL-zh experiment where the reporter saw very low recall and precision from Qdrant's BM25 model with the multilingual tokenizer. That report does not prove a general defect, and it is not one of our lab measurements. It is a good warning against assuming an English-friendly setup transfers to Chinese search. Run labeled queries before choosing the tokenizer, embedding model, chunking rules, and fusion weights.

Sharding and quantization require database decisions

The server includes sharding, replication, collection resizing, write-ahead logging, on-disk storage, vector quantization, and hardware acceleration. Release v1.19.1 continued work on quantized scoring, HNSW searches, shard transfers, and consensus safety. These are mature database concerns. They also mean configuration changes can affect recall, memory use, recovery behavior, and write availability at the same time.

Start with one collection and measured traffic rather than copying a large-cluster configuration. Decide what must survive a node loss, how often snapshots are restored in a clean environment, and which payload fields deserve indexes. Quantization can reduce memory at an accuracy cost. Replicas improve availability only when failure domains and consistency settings are chosen with care. Qdrant supplies the controls, while your workload supplies the right values.

October commits and 751 open threads show a busy project

GitHub recorded a push on October 4, 2026, one day before this review, and listed 751 open issues and pull requests together. The latest release, v1.19.1, shipped on September 4. Recent open work covered BM25, shard transfer locking, quantization, and large integer ordering. That combination points to active maintenance and a large engineering queue, not a dormant repository.

Qdrant is the right kind of separate service when vector retrieval is important enough to warrant its own indexes, scaling rules, and failure plan. Our 320 passing tests support confidence in the exercised code, while the 900-second build timeout sets expectations for contributors. Adopt it for its filtered and hybrid query path. If your vector feature is small and your records already live in Postgres, keeping one database may still be the more dependable design.

Alternatives

ProjectWhat it isPick it when
pgvectorA PostgreSQL extension that keeps vector search beside relational data.pick this instead when transactions, joins, and one existing Postgres system matter more than a dedicated vector service.
WeaviateA vector database with hybrid search and a schema-driven object model.pick this instead when Weaviate's object model and integrated module ecosystem match your application.
Milvus gh↗A distributed vector database aimed at large vector collections and clustered operation.pick this instead when your team already accepts a wider distributed stack for large-scale vector workloads.

Sources

  1. Qdrant repository
  2. Qdrant README
  3. Qdrant v1.19.1 release
  4. Chinese BM25 retrieval issue

More data reviews

jq · pgx · HowToLiveLonger · ip2region · dbdelve · litestream · the whole board →