Bench
marks
A formal Python-native performance benchmark suite captures ingestion throughput and query latency under realistic single-threaded workloads. No network. No warm-up tricks. In-process, on bare metal.
BENCH-01 · SDK Performance Baseline
10K records · 128 dimensions · Cosine · single-threaded · Python SDK (PyO3 boundary)
| Metric | p50 | p99 | Throughput |
|---|---|---|---|
Ingestion (PUT) | 13.174 ms | 18.504 ms | 74 ops/sec |
Search (Lexical BM25) | N/D (outlier) | — | — |
Search (Vector HNSW) | 2.024 ms | 4.403 ms | 494 qps |
Search (Hybrid Fusion) | 3.114 ms | 5.507 ms | 321 qps |
Query latency · p50 vs p99
lower is faster →Hardware profile: 12-core CPU @ 3.5GHz, AVX2 enabled, Windows 11 / Ubuntu 22.04 LTS.
python benchmarks/vantadb_local_bench.py --size 10000 --dim 128 --queries 1000Latency Explorer
Adjust the workload parameters and watch how VantaDB compares against a typical network-bound database. Numbers scale from the BENCH-01 baseline using an illustrative cost model.
Results returned per query
Embedding vector width
Indexed vector count
p99 latency · lower is faster
scale 0–14.8msthroughput · queries/sec
Hybrid
609
HNSW
937
Network DB (typical)
152
Simulate benchmark
edge workload · 10KRun a 3-second simulated benchmark of the current workload configuration. Results are extrapolated from the BENCH-01 baseline with ±4% jitter.
Note: Baseline from BENCH-01 (10K vectors, 128d, cosine). The cost model is illustrative — actual figures depend on hardware, AVX2, and ef_search configuration. Run python benchmarks/vantadb_local_bench.py for real numbers on your machine.
SIFT1M · Phase 2 Competitive Benchmarks
Static prefetch · Euclidean sqrt elimination · pure SIMD cosine · O(M²) select_neighbors optimization
| Scale | Config | Metric | Before | Now | Speedup | p99 | QPS |
|---|---|---|---|---|---|---|---|
| 100K | Balanced Cos | Cosine | 139.4s | 63.7s | 2.18x | 441.2 µs | 3,636 |
| 100K | High Recall Cos | Cosine | 390.8s | 182.2s | 2.14x | 1,231.8 µs | 1,379 |
| 100K | Balanced L2 | Euclidean | 191.4s | 68.4s | 2.80x | 671.4 µs | 3,270 |
| 100K | High Recall L2 | Euclidean | 462.2s | 194.5s | 2.37x | 1,183.6 µs | 1,353 |
| 100K | High Recall L2 Mmap | Mmap Euclidean | 411.2s | 189.8s | 2.16x | 1,094.8 µs | 1,438 |
Phase 2 construction speedups
SIFT1M · 100K vectorsOptimizations: static prefetch · elimination of Euclidean square root in hot graph traversal · pure SIMD cosine similarity · O(M²) select_neighbors (caches references to eradicate HashMap queries during the diversity loop).
Certification hardware: AMD Ryzen 12-Core @ 3.5GHz, compiled with -C target-cpu=native.
JS/WASM · vantadb-ts Bench
2K records · 384 dimensions · WASM in-memory in Node · seed 42 · median of 3 runs
| Operation | p50 | p95 | p99 |
|---|---|---|---|
| Insert (putBatch) | 667.61 ms | 1,065.11 ms | 1,453.48 ms |
| Search (Vector) | 3.84 ms | 10.97 ms | 14.28 ms |
| Search (Hybrid) | 184.04 ms | 377.25 ms | 447.18 ms |
Hardware profile: Intel i5-1235U, Windows 11, Node.js v26.8.1. WASM engine is in-memory in Node (no OPFS); browser backends pending.
cd vantadb-ts && npm run benchCompetitive benchmark · embedded engines
glove-100-angular · 10K vectors · 100 queries · top_k=10. Measured run documented in docs/operations/BENCHMARKS.md §7 (2026-06-06); VantaDB runs through PyO3 over its mmap Rust core.
| Metric | VantaDB | LanceDB | ChromaDB | Pinecone | Weaviate |
|---|---|---|---|---|---|
Ingest QPS | 598.3 | 114,583 | 3,886 | Managed | Managed |
Index time (ms) | 16,039.9 | 602.2 | N/A (inc) | Managed | Managed |
Query QPS | 24.3 | 320.5 | 978.6 | Managed | Managed |
Latency p50 (ms) | 39.74 | 2.653 | 0.941 | Managed | Managed |
Latency p99 (ms) | 58.245 | 6.98 | 3.349 | Managed | Managed |
Recall@10 | 24.50% | 13.90% | 24.10% | Managed | Managed |
Peak RSS (MB) | 236.5 | 344.2 | 253.5 | Managed | Managed |
Delta RSS (MB) | 91.7 | 97.2 | 39.1 | Managed | Managed |
Deployment | pip install · embedded | pip install · library | pip install · client/server | Fully managed SaaS | Self-host or cloud |
Pricing model | Open source · $0 | Open source | Open source | Usage / pods | Hosted by vendor |
Durability | WAL + CRC32C | Arrow, query-versioned | In-memory HNSW (no WAL) | Managed SLA | WAL / hosted |
Pinecone and Weaviate are managed/hosted services — the harness does not run them locally, so their measured cells read 'Managed'. We do not invent cross-vendor QPS/latency numbers here; all measured values come from BENCHMARKS.md §7 and are reproducible via the public harness.
Run the benchmark locally
Measure the baseline on your own hardware in three commands
Install python bindings
pip install maturin maturin develop --release
Execute the benchmark
python benchmarks/vantadb_local_bench.py \ --size 10000 --dim 128 --queries 1000
Read the report
cat vanta_benchmark_report.json
Ready to build?
Install vantadb-py and run your first hybrid search in 5 minutes.
VantaDB vs the field.
Carrera visualizada de latencia p50 (HNSW · 10K). VantaDB 1.2ms certificado — competidores sin número local publicado (—). Press Start y mirá.
HNSW Vector Search · p50 Latency (ms)
Recall@10 (mayor es mejor)
VantaDB: BENCHMARKS §1 p50 1.2ms (10K) y Recall@10 0.998. Competidores: sin número medido publicado — la carrera es ilustrativa. Fuente: docs/operations/BENCHMARKS.md
VantaDB vs LanceDB & ChromaDB
glove-100-angular · 10,000 vectors · 100 queries · top-10 · cosine · single build
| Engine | Ingest QPS | Index (ms) | Query QPS | p50 (ms) | p99 (ms) | Recall@10 | Peak RSS (MB) | Δ RSS (MB) |
|---|---|---|---|---|---|---|---|---|
VantaDB | 598.3 | 16,039.9 | 24.3 | 39.740 | 58.245 | 24.50% | 236.5 | 91.7 |
LanceDB | 114,583.0 | 602.2 | 320.5 | 2.653 | 6.980 | 13.90% | 344.2 | 97.2 |
ChromaDB | 3,886.0 | N/A (inc) | 978.6 | 0.941 | 3.349 | 24.10% | 253.5 | 39.1 |
Readings are real numbers from the certified run (2026-06-06) — glove-100-angular, 10,000 vectors, 100 queries, top-10. VantaDB runs through its PyO3 bindings over the mmap Rust core; LanceDB and ChromaDB use their native C/C++ wrappers. Regenerate: python benchmarks/competitive_bench.py --dataset glove-100-angular --size 10000 --queries 100
Source: docs/blog/benchmarks_vs_lancedb_chroma.md — repo-tracked JSON: web/src/lib/data/competitive-benchmark.json