π EdgeVec
High-performance vector search for Browser, Node, and Edge
β STATUS: Alpha Release Ready β All performance targets exceeded.
What's New in v0.3.0
Soft Delete API (RFC-001)
soft_delete(id)β O(1) tombstone-based deletionis_deleted(id)β Check deletion statusdeleted_count()/live_count()β Vector statisticstombstone_ratio()β Monitor index health
Compaction API
compact()β Rebuild index removing all tombstonesneeds_compaction()β Check if compaction recommendedcompaction_warning()β Get actionable warning message- Configurable threshold (default: 30% tombstones)
WASM Bindings
- Full soft delete API exposed to JavaScript/TypeScript
softDelete(),isDeleted(),deletedCount(),liveCount()compact(),needsCompaction(),compactionWarning()- Interactive browser demo at
/wasm/examples/soft_delete.html
Persistence Format v0.3
- Automatic migration from v0.2 snapshots
- Tombstone state preserved across save/load cycles
Previous (v0.2.1)
- Safety hardening with
bytemuckfor alignment-verified operations - Batch insert API with progress callback
- 24x faster search than voy (fastest pure-WASM competitor)
What is EdgeVec?
EdgeVec is an embedded vector database built in Rust with first-class WASM support. It's designed to run anywhere: browsers, Node.js, mobile apps, and edge devices.
Key Features
- Sub-millisecond search β 0.23ms at 100k vectors (768d, quantized)
- HNSW Indexing β O(log n) approximate nearest neighbor search
- Scalar Quantization (SQ8) β 3.6x memory compression
- WASM-First β Native browser support via WebAssembly
- Persistent Storage β
IndexedDBin browser, file system elsewhere - Minimal Dependencies β No C compiler required, WASM-ready
- Tiny Bundle β 213 KB gzipped (57% under 500KB target)
Quick Start
Installation
For Rust users: To achieve optimal performance, ensure your .cargo/config.toml includes:
[]
= ["-C", "target-cpu=native"]
Without this configuration, performance will be 60-78% slower due to missing SIMD optimizations.
Browser/Node.js Usage
import init from 'edgevec';
.;
Load Existing Index
import init from 'edgevec';
await ;
const index = await ;
const results = index.;
Rust Usage
use ;
use ;
Batch Insert (Rust)
For inserting many vectors efficiently, use the batch insert API:
use ;
use BatchInsertable;
use BatchError;
Features: Progress tracking, best-effort semantics, and unified error handling.
Soft Delete (Rust)
Delete vectors without rebuilding the index (v0.3.0+):
use ;
Soft Delete (JavaScript)
import init from 'edgevec';
await ;
const config = ;
const index = ;
// Insert vectors
const vector = .;
const id = index.;
// Soft delete
const wasDeleted = index.;
console.log;
// Statistics
console.log;
console.log;
console.log;
// Compact when needed
if
| Operation | Time Complexity | Notes |
|---|---|---|
soft_delete() |
O(1) | Set tombstone byte |
is_deleted() |
O(1) | Read tombstone byte |
search() |
O(log n) | Automatically excludes tombstones |
compact() |
O(n log n) | Full index rebuild |
Development Status
EdgeVec follows a military-grade development protocol. No code is written without an approved plan.
β Alpha Release Ready (v0.1.0)
All Performance Targets Exceeded:
- β Search Mean: 0.23ms (4.3x under 1ms target)
- β Search P99 (estimated): <600Β΅s (based on Mean + 2Ο)
- β Memory: 832 MB for 1M vectors (17% under 1GB target)
- β Bundle Size: 213 KB (57% under 500KB target)
What Works Now:
- β HNSW Indexing β Sub-millisecond search at 100k scale
- β Scalar Quantization (SQ8) β 3.6x memory reduction
- β SIMD Optimization β AVX2/FMA for 60-78% speedup
- β Crash Recovery (WAL) β Log-based replay
- β Atomic Snapshots β Safe background saving
- β Browser Integration β WASM Bindings + IndexedDB
- β
npm Package β
edgevec@0.3.0published
Development Progress:
- Phase 0: Environment Setup β β COMPLETE
- Phase 1: Architecture β β COMPLETE
- Phase 2: Planning β β COMPLETE
- Phase 3: Implementation β β COMPLETE
- Phase 4: WASM Integration β β COMPLETE
- Phase 5: Alpha Release β β READY
What's Next (v0.4.0)
- Multi-vector Delete β Batch delete API
- P99 Tracking β Latency distribution metrics in CI
- ARM/NEON Optimization β Cross-platform SIMD verification
- Mobile Support β iOS Safari and Android Chrome formalized
π Performance (Alpha Release)
Search Latency (768-dimensional vectors, k=10)
| Scale | Float32 | Quantized (SQ8) | Target | Status |
|---|---|---|---|---|
| 10k vectors | 203 Β΅s | 88 Β΅s | <1 ms | β 11x under |
| 50k vectors | 480 Β΅s | 167 Β΅s | <1 ms | β 6x under |
| 100k vectors | 572 Β΅s | 329 Β΅s | <1 ms | β 3x under |
Note: Mean latencies from Criterion benchmarks (10 samples). Max observed: 622Β΅s (100k Float32). Outliers: 0-20% (mostly high mild/severe). P99 estimates are all <650Β΅s. See docs/benchmarks/ for full analysis.
Memory Efficiency (768-dimensional vectors)
| Mode | Memory per Vector | 1M Vectors | Compression |
|---|---|---|---|
| Float32 | 3,176 bytes | 3.03 GB | Baseline |
| Quantized (SQ8) | 872 bytes | 832 MB | 3.6x smaller |
Memory per vector includes: vector storage + HNSW graph overhead (node metadata + neighbor pool).
Measured using index.memory_usage() + storage.memory_usage() after building 100k index.
Bundle Size
| Package | Size (Gzipped) | Target | Status |
|---|---|---|---|
edgevec@0.3.0 |
213 KB | <500 KB | β 57% under |
Competitive Comparison (10k vectors, 128 dimensions)
| Library | Search P50 | Insert P50 | Type | Notes |
|---|---|---|---|---|
| EdgeVec | 0.20ms | 0.83ms | WASM | Fastest WASM solution |
| hnswlib-node | 0.05ms | 1.56ms | Native C++ | Requires compilation |
| voy | 4.78ms | 0.03ms | WASM | KD-tree, batch-only |
EdgeVec is 24x faster than voy for search while both are pure WASM. Native bindings (hnswlib-node) are faster but require C++ compilation and don't work in browsers.
Key Advantages
- β Sub-millisecond search at 100k scale
- β Fastest pure-WASM solution β 24x faster than voy
- β Zero network latency β runs 100% locally (browser, Node, edge)
- β Privacy-preserving β no data leaves the device
- β Tiny bundle β 213 KB gzipped
- β No compilation required β unlike native bindings
Test Environment
- Hardware: AMD Ryzen 7 5700U, 16GB RAM
- OS: Windows 11
- Rust: 1.94.0-nightly (2025-12-05)
- Criterion: 0.5.x
- Compiler flags:
-C target-cpu=native(AVX2 SIMD enabled)
Development Protocol
The Agents
| Agent | Role |
|---|---|
| META_ARCHITECT | System design, data layouts |
| PLANNER | Roadmaps, weekly task plans |
RUST_ENGINEER |
Core Rust implementation |
WASM_SPECIALIST |
WASM bindings, browser integration |
BENCHMARK_SCIENTIST |
Performance testing |
| HOSTILE_REVIEWER | Quality gate (has veto power) |
| DOCWRITER | Documentation, README |
Origins
EdgeVec builds upon lessons learned from binary_semantic_cache, a high-performance semantic caching library. Specifically:
Salvaged (MIT Licensed):
- Hamming distance implementation (~10 lines)
- Binary quantization math (~100 lines)
Built Fresh:
- HNSW graph indexing
- WASM-native architecture
IndexedDBpersistence- Everything else
Acknowledgments
- Thanks to the Reddit community for identifying a potential alignment issue in the persistence layer, which led to improved safety via
bytemuckin v0.2.1. - Thanks to the Hacker News community for feedback on competitive positioning and benchmarking.
License
MIT β See LICENSE
Built with π¦ Rust + πΈοΈ WebAssembly
Correctness by Construction