Benchmarks · VectorDBBench 1.0.22 · Cohere-1M · 768d · cosine

Rostam vs Qdrant, Milvus, pgvector, Weaviate & Redis

At matched recall Rostam serves ~2× the queries of Milvus and pgvector and ~4× Qdrant — under a neutral, third-party harness, with the caveats printed as large as the wins.

Six engines, one continuous session, HNSW m=16 / ef_construction=200 / k=100 pinned identically on every engine, and ef swept. VectorDBBench is maintained by the company behind Milvus — not by us.

The numbers

The whole curve, not a cherry-picked point.

Recall against queries per second. The lead is stable across the whole curve, so it does not depend on picking a favourable operating point.

Recall versus queries per second for Rostam, Milvus, pgvector, Weaviate, Qdrant and Redis. Rostam's curve sits above every other engine across the full recall range and reaches the highest recall measured, 0.9978.
Queries per second at matched recall, and Rostam's multiple over each engine
Matched recall Rostam vs Milvus vs pgvector vs Weaviate vs Qdrant vs Redis
0.95 3,161 QPS 1.84×1.83×3.25×6.54×
0.97 2,642 QPS 2.02×2.18×3.03×4.16×7.53×
0.98 2,088 QPS 1.90×2.28×2.67×3.98×7.90×
0.99 1,471 QPS 1.78×3.55×

Read at matched recall, which is the only like-for-like comparison — engines land at different recall for the same ef, and a segmented engine runs that ef against every segment, so equal ef is not equal work.

Ingest is not the price of query speed

Load, 1M × 768d
282 s

the fastest load in the set

Total CPU spent loading
least

of any multi-core engine in the set

Highest recall measured
0.9978

no other engine in the set measured higher

Scatter of load wall-clock against CPU seconds spent. Rostam is alone in the fast-and-cheap corner; Redis uses a single core and takes 4.8 times as long.

Methodology

Read this before you quote it.

Two caveats bound everything above — and they are not footnotes.

Same-session only

Every number on this page comes from one continuous session, because this hardware drifts up to 42% between sessions on unchanged code. A cross-session comparison would measure the machine, not the engines.

Floors, not ceilings

The benchmark client shares the box with the engine under test — a cost that penalises the fastest engine hardest. So these throughput figures are floors, not ceilings.

Full per-ef curves, per-engine CPU accounting, the filter case, paired A/B controls, and the complete methodology — including where the data cuts against Rostam — are in the open benchmark repository. And Rostam's other half — the key-value engine — is measured with the same discipline against Redis, Memcached, Dragonfly and Aerospike on the KV benchmark page.

Beyond the numbers

Self-hosted vector search, without the ops tax.

Throughput gets you to the door. What a skeptical infra engineer asks next:

  • pure go · no cgo

    Self-hosted by design

    One Go binary, no cgo, no dependencies — Apache 2.0, with an explicit patent grant. Your data stays on your hardware.

  • go get

    Or skip the server

    Rostam is also an embeddable library — the same engine inside your Go binary, no server in the picture at all.

  • raft · resharding

    Built to cluster

    Per-shard Raft replication, online resharding, S3 backups, RBAC/JWT/mTLS, and Prometheus metrics.

  • filter-first

    No recall cliff

    Selective metadata filters run through an exact filter-first planner — recall holds as filters get sharper.

  • sq8 · bq1 · pq

    Quantization

    SQ8 at 4× smaller with recall@10 ≈ 0.98 — down to binary at 32× smaller, recall@10 ≈ 0.96 rescored.

  • /dashboard/

    Batteries included

    An embedded web dashboard for collections, cluster topology, and KV keys — plus a first-party, dependency-free Python client.

Don't take the chart's word for it.

curl -fsSL https://rostamlabs.com/install.sh | sh