Recern Vector documentation
Recern Vector 0.4.0 is an embedded vector database with a local snapshot and a WAL. You open it from Python, Rust, Node.js or the command line, add vectors with JSON metadata, and search them with an HNSW index. Every search can report how it ran, and every collection can report the state of its index and measure its own recall. Version 0.4.0 provides a separate single-node HTTP server and portable Python, Rust and Node clients, including SDK migration and interoperability tests. See the release guide for packages, native archives and compatibility.
Version 0.4.0. HTTP server, portable Python/Rust/Node clients and checked migration across embedded Recern, Recern HTTP and Qdrant. Format 2, format-1 readers and export v1 are retained.
When it fits
- Semantic search, RAG retrieval or recommendations inside an application: a desktop app, a script, a notebook, a backend process that owns its data.
- Up to a few million vectors that fit in memory.
- You want to see what the index is doing: why a query was slow, whether a filter was applied efficiently, what recall you actually get.
When it does not
- Many processes writing directly to the same database file. Use a single database owner. The 0.4.0 HTTP server serializes HTTP access to its own database; it is not a distributed or highly available service.
- Data much larger than memory. The whole database is loaded on open.
- You need constant-cost commits regardless of database size. WAL writes changed pages, but
save()still encodes and compares a full in-memory image (see Limitations and next work).
Contents
| Page | What it covers |
|---|---|
| 0.4.0 release | Packages, native artifacts, checksums and upgrade compatibility |
| Getting started | Install, then a first database from Python, Rust, Node.js and the CLI |
| First vector search | A complete Python example, filtered results, query inspection and a checkpointed file in Workspace |
| Concepts | Databases, collections, records, metrics, the HNSW index, saving, threads |
| Filters | Metadata filter syntax and how filtered searches are planned |
| Inspecting and tuning | explain, stats, estimate_recall, choosing ef, compact |
| Python API | Every class, method and exception in the recern_vector package |
| Portable clients (0.4.0) | Python remote, Rust and Node across embedded Recern, Recern HTTP and Qdrant |
| Portable Python API | Profile v1, embedded/Qdrant backends, shared semantics and capabilities |
| HTTP API contract (0.4.0) | Released OpenAPI, wire values, authentication, durable writes, generations and snapshot leases |
| HTTP server | Build and run, release status, limits, single-writer ownership, recovery and TLS proxy guidance |
| Export and migration | Consistent snapshots, JSONL manifests, dry-run, resume and verification |
| Rust API | The recern-vector crate |
| Node.js | Native builds, TypeScript definitions and asynchronous search |
| Command line | The recern-vector command |
| File format | What is inside a .rvec file |
| Limitations and next work | Current bounds and what comes next |
Runnable examples are in examples/. The release benchmark measures 0.4.0 f32/int8 and faiss HNSW on full SIFT1M and GloVe-100. The earlier comparison with LanceDB and sqlite-vec is kept in the historical report.
See Node.js and the durability contract.