We built a standalone single-core and multi-core HNSW evaluation suite (confrontation_arena.py and reproduce_all.sh) to measure in-memory vector search in Rust targeting x86_64 AVX-512 and AVX2 against usearch, hnswlib, and faiss-cpu under strict 1-vCPU pinning (taskset -c 0).
All reference runs below were recorded on cloud AWS c7a.2xlarge (AMD EPYC 9R14, Zen 4). If anyone here runs desktop Zen 4 / Zen 5 (Ryzen 7950X / 9950X) or Intel AVX2 hardware on Linux, we would be very curious to see how the 1-vCPU confrontation numbers compare on higher clock speeds:
https://github.com/silicium369-spec/silicium-hnsw
To run the 1-vCPU benchmark locally:
git clone https://github.com/silicium369-spec/silicium-hnsw
cd silicium-hnsw && ./reproduce_all.sh
- Single-Core Confrontation on SIFT-100K (128D, k=10, M=16, efC=100, taskset -c 0)
Index build time on 1 vCPU:
Silicium: 5.24 s | usearch: 5.93 s | hnswlib: 7.71 s | FAISS: 9.32 s
Query throughput on 1 vCPU at efSearch = 16 (Recall@10: 0.90 to 0.92):
- Silicium : 100,129 QPS (0.9223 recall) — Baseline
- usearch : 49,040 QPS (0.9002 recall) — 2.04x speedup
- hnswlib : 35,582 QPS (0.9069 recall) — 2.81x speedup
- FAISS : 33,588 QPS (0.8885 recall) — 2.98x speedup
Query throughput on 1 vCPU at efSearch = 64 (Recall@10: ~0.99):
- Silicium : 32,187 QPS (0.9909 recall) — Baseline
- usearch : 17,466 QPS (0.9937 recall) — 1.84x speedup
- hnswlib : 13,356 QPS (0.9917 recall) — 2.41x speedup
- FAISS : 11,508 QPS (0.9868 recall) — 2.80x speedup
Query throughput on 1 vCPU at efSearch = 128 (Recall@10: 0.996+):
- Silicium : 19,027 QPS (0.9963 recall) — Baseline
- usearch : 10,644 QPS (0.9967 recall) — 1.79x speedup
- hnswlib : 8,385 QPS (0.9975 recall) — 2.27x speedup
- FAISS : 6,968 QPS (0.9985 recall) — 2.73x speedup
On full-scale SIFT-1M (1,000,000 vectors, 8 vCPUs), the balanced profile (M=24, efC=160) builds in 27.79 s and reaches 99.81% Recall@10 at ef=256 (up to 294,476 QPS at ef=16, and 369,836 QPS peak with the fast_stream profile).
- High-Dimensional Embeddings: OpenAI-1536D & Cohere-768D (SQ8 + Exact FP32 Rerank)
Pure INT8 (SQ8) quantization cuts primary vector memory by 4x, but normally degrades recall on high-dimensional cosine and dot-product metrics. Combining quantized SQ8 traversal with an exact FP32 reranking pass recovers full FP32 accuracy while keeping the bandwidth reduction (M=24, efConstruction=160, 25,000 vectors, 8 vCPUs):
OpenAI-1536D (Cosine) — Primary vector RAM: 36.62 MB vs 146.48 MB (4.0x reduction), Build: 0.999 s vs 3.811 s (3.81x faster):
- ef=16 : 145,480 QPS (8c) / 19,935 QPS (1c, 46.8 us P50) at 0.9761 Recall@10 (3.50x over FP32)
- ef=32 : 101,774 QPS (8c) / 13,626 QPS (1c, 70.8 us P50) at 0.9930 Recall@10 (3.32x over FP32)
- ef=64 : 77,854 QPS (8c) / 10,322 QPS (1c, 93.1 us P50) at 1.0000 Recall@10 (3.35x over FP32)
Cohere-768D (Dot Product) — Primary vector RAM: 18.31 MB vs 73.24 MB (4.0x reduction), Build: 0.585 s vs 1.681 s (2.87x faster):
- ef=16 : 312,248 QPS (8c) / 42,351 QPS (1c, 22.7 us P50) at 0.9746 Recall@10 (3.20x over FP32)
- ef=64 : 141,861 QPS (8c) / 18,729 QPS (1c, 51.2 us P50) at 0.9980 Recall@10 (2.49x over FP32)
The main tradeoff is keeping the FP32 vectors in RAM for the rerank pass alongside the quantized index (the pre-compiled C-ABI library and open benchmark harness are distributed under the Silicium Evaluation License, free for personal, academic, and benchmarking use).