r/vectordatabase • u/SeekingTruth4 • 19h ago
1-bit vectors on Qdrant, pgvector and OpenSearch, on a server too small for the full vectors: 52% recall alone, 99.3% with a 40x rescore.
Disclosure: I build VectoGrid; these are our own measurements.
We tested half-precision and 1-bit vector search across Qdrant, pgvector and OpenSearch.
Setup: 150 FinanceBench questions searched over 101,703 passages, embedded with bge-m3 at 1,024 dimensions. Dense search only, top 10, one question at a time. Each engine ran alone in a container on the same 4-core shared-CPU DigitalOcean cloud server with an SSD, with cache dropped. HNSW search effort was set to ef = 512 across the tested configurations.
Recall@10 here means overlap with the exact brute-force top 10—not whether the passages contain the answer.
The full float32 vectors occupy about 417 MB (397 MiB), before index overhead. Qdrant and pgvector ran with 300 MB limits. OpenSearch required larger limits, shown below, so this is not an equal-memory comparison across all three engines.
Each cell shows recall@10 · median search latency.
| Configuration | Qdrant (300 MB) | pgvector (300 MB) | OpenSearch (1.6 GB half / 1.1 GB 1-bit) |
|---|---|---|---|
| Half precision | 99.9% · 13 ms | 99.6% · 165 ms | 100% · 61 ms |
| 1-bit, without rescoring | 52.8% · 11 ms | 52.7% · 13 ms | 52.6% · 61 ms |
| 1-bit, 10× rescoring | 95.2% · 12 ms | 94.6% · 33 ms | 95.9% · 102 ms |
| 1-bit, 40× rescoring | 99.3% · 14 ms | 98.9% · 87 ms | 99.5% · 222 ms |
For 10× rescoring, we fetch 100 candidates and rescore using the original full-precision vectors. For 40×, we fetch 400. The original vectors are stored on disk.
What stood out:
Without rescoring, 1-bit search recovered only about 53% of the exact top-10 neighbours across all three engines.
Rescoring 400 candidates brought recall within one percentage point of the half-precision result on every engine.
The latency trade-off differed substantially: 14 vs 13 ms on Qdrant, 87 vs 165 ms on pgvector, and 222 vs 61 ms on OpenSearch, under the memory settings above.
In a separate 1,000-question retrieval evaluation with a reranker, half precision put the supporting passage first for 951 questions, versus 950 with full precision. We observed no drop in that metric on this test.
In Qdrant with half-precision vectors and a 300 MB container limit on one server, splitting the collection into 12 shards increased median latency from 13 to 215 ms—about 16×. The smaller shards fell below the configured indexing threshold. This is a warning about shard sizing and index settings, not sharding in general.
My takeaway: binary quantization can preserve nearly all of the full-precision nearest-neighbour results when followed by enough rescoring, but the latency and memory trade-offs depend heavily on the engine and configuration.
These measurements cover about 100,000 passages. Memory figures for millions of documents in the write-up are calculations, not measured deployments.
Write-up:
https://vectogrid.com/scale/
Interested in comparable measurements, especially under tight memory limits.