You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
ferrovec 0.3.4 — reposition around the durable + cross-tab wedge
The old lead ('a tiny Rust HNSW vector index in the browser') competes head-on
with a crowded 2026 field (altor-vec, EdgeVec, VecLite, ruvector), all of which
are in-memory. Reposition every public surface around the half none of them
ship: durability (persists to OPFS, survives reloads) + cross-tab consistency
(single-writer leader election). Adds a 'How ferrovec is different' prior-art
comparison to the README and site; repositions crate/npm descriptions, hero,
compare table, and feature cards. Docs-only; no code change.
Copy file name to clipboardExpand all lines: Cargo.toml
+2-2Lines changed: 2 additions & 2 deletions
Original file line number
Diff line number
Diff line change
@@ -1,8 +1,8 @@
1
1
[package]
2
2
name = "ferrovec"
3
-
version = "0.3.3"
3
+
version = "0.3.4"
4
4
edition = "2021"
5
-
description = "A tiny, dependency-light HNSW vector index for approximate nearest-neighbor search — built to compile to WebAssembly."
5
+
description = "A durable, incremental HNSW vector store built to compile to WebAssembly — the in-browser index that persists to OPFS and stays consistent across tabs. Also a plain native crate."
Copy file name to clipboardExpand all lines: README.md
+36-19Lines changed: 36 additions & 19 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -8,7 +8,7 @@
8
8
<imgsrc="https://raw.githubusercontent.com/singhpratech/ferrovec/main/docs/assets/cover.jpg"alt="ferrovec — a Milky Way galaxy with an HNSW vector-search graph woven through it, a triangle at its core"width="840" />
9
9
</p>
10
10
11
-
**A tiny, dependency-light [HNSW](https://arxiv.org/abs/1603.09320)vector index for approximate nearest-neighbor search — built to compile to WebAssembly.**
11
+
**The in-browser vector store that _remembers_.** A Rust→WASM [HNSW](https://arxiv.org/abs/1603.09320)engine that persists to disk (OPFS) and stays consistent across tabs — so semantic search survives a reload instead of rebuilding from scratch every time.
The winning WebAssembly apps never asked anyone to switch languages — they put a Rust engine inside and a plain API outside. `ferrovec`brings that pattern to semantic search: a fast nearest-neighbor core in Rust, so you can run private, offline vector search anywhere — in the browser, on the edge, or on a server.
21
+
Most in-browser vector libraries hand you an *in-memory* index: fast to query, but it evaporates on reload and diverges the moment a second tab opens. `ferrovec`is the one built to be **durable and shared** — the HNSW graph lives on disk in the browser's Origin Private File System, and a single-writer leader election keeps every tab reading and writing one consistent store. Private, offline, survives the refresh. You never write Rust; you never run a server.
22
22
23
-
-🦀**Rust core** — a hand-rolled HNSW graph, the same algorithm behind Pinecone, Weaviate, and Qdrant.
24
-
-🪶**Featherweight** — `serde` + `postcard` are the *only* dependencies. The WASM build is ~33 KB gzipped.
25
-
-🔒**No `unsafe`**outside the audited SIMD kernel (`#![deny(unsafe_code)]` crate-wide), and **no system randomness** (a deterministic seeded splitmix64 PRNG) — so it's happy on `wasm32-unknown-unknown` with no shims.
26
-
-⚡**SIMD-accelerated**distance kernels on `wasm32 + simd128`, with a scalar reference fallback everywhere else.
27
-
-➕**Incremental**upsert-style inserts and tombstoning removals — no rebuild-the-whole-index penalty.
28
-
-💾**Portable**— compact binary (de)serialization with a versioned header; the same bytes reload natively or in the browser.
23
+
-💾**Durable by default** — the index persists to OPFS and rehydrates on `open()`. Reload the tab and your vectors are already there — no re-embedding, no rebuild. *(Most browser vector libs are in-memory only.)*
24
+
-🪟**Cross-tab consistent** — single-writer leader election (Web Locks + BroadcastChannel) so many tabs share one store instead of silently diverging. *(No other in-browser vector lib ships this today.)*
25
+
-➕**Incremental**— upsert-style inserts, tombstoning removals, and in-place `compact()`; add one vector without rebuilding the whole index.
26
+
-🦀**Real HNSW, in Rust**— a hand-rolled Hierarchical Navigable Small World graph, the same algorithm behind Pinecone, Weaviate, and Qdrant — not brute force.
27
+
-🪶**Featherweight & shim-free**— `serde` + `postcard` are the *only* dependencies; the WASM core is ~33 KB gzipped, with no `getrandom` (deterministic splitmix64 PRNG) and no threads, so it's happy on bare `wasm32-unknown-unknown`.
28
+
-⚡**SIMD-accelerated**distance on `wasm32 + simd128`with a scalar fallback; `#![deny(unsafe_code)]` everywhere outside the audited kernel. Portable versioned byte format reloads identically native or in-browser.
29
29
30
-
> **Status — the roadmap is complete, and both registries are on `0.3.3`.** crates.io `0.3.3` ships the Rust core (**M1**), WASM boundary (**M2**), and in-place [compaction](#compaction--clearing); npm `0.3.3` ships the full browser package: transformers.js auto-embedding (**M3**), OPFS persistence (**M4**), the three-line API (**M5**), and cross-tab single-writer leader election (**M6**). See the [roadmap](#roadmap), or **[try the live demo](https://singhpratech.github.io/ferrovec/demo.html)**.
30
+
> **Status — the roadmap is complete, and both registries are on `0.3.4`.** crates.io `0.3.4` ships the Rust core (**M1**), WASM boundary (**M2**), and in-place [compaction](#compaction--clearing); npm `0.3.4` ships the full browser package: transformers.js auto-embedding (**M3**), OPFS persistence (**M4**), the three-line API (**M5**), and cross-tab single-writer leader election (**M6**). See the [roadmap](#roadmap), or **[try the live demo](https://singhpratech.github.io/ferrovec/demo.html)**.
31
+
32
+
## How ferrovec is different
33
+
34
+
In-browser vector search is a **crowded space** in 2026 — and this section is here to be honest about it. Plenty of libraries now put an HNSW index in the browser, several of them Rust→WASM like this one (altor-vec, EdgeVec, VecLite, ruvector). What almost none of them do is **remember**: they're in-memory engines — load vectors, query, and on the next reload you start over. Persistence and multi-tab consistency are left to you.
35
+
36
+
ferrovec's wedge is exactly that missing half — **durability and consistency**:
*Landscape as surveyed July 2026; this field moves fast, so treat other projects' rows as directional and check their latest.* If all you need is a fast in-memory ANN for a single page view, several of these are excellent and lighter than ferrovec. Reach for ferrovec when the index has to **outlive the page** and **stay correct across tabs** — a notes app, an offline PWA, or "chat with your docs" that shouldn't re-embed everything on every visit.
0 commit comments