Sextant

Navigate, don’t trawl.

Sextant is an SSD-resident vector search library for the batch regime: build an index once, search it many times, drop it when you’re done. The whole index is one file on NVMe — searched with near-zero idle RAM, on a single commodity machine.

the corpus · vectors on NVMe the target query measured angle = route
One file

The index is a file. That’s the whole operations story.

A build lands as a single immutable artifact — copy it, rsync it, mount it read-only. Search handles open O_RDONLY, so stray writes are structurally impossible, not merely forbidden. No cluster state to reconcile, ever.

SSD-resident

Working sets bigger than RAM, at SSD speed

Sextant owns its storage stack: direct I/O plus a built-in W-TinyLFU cache. Query working sets that exceed RAM still serve at SSD speed — and idle RAM stays near zero. No page-cache tuning, no memory provisioned for data at rest.

Filtered search

Predicates are part of the search, not a post-filter

Typed filter columns — integers, floats, bools, strings, sets, geo — constrain the search itself. Rare-value predicates fall back to exact brute force; malformed predicates throw, never silently pass-all. Results are deterministic: identical inputs, identical results, any thread count.

Recall on demand

Hundreds of bytes per vector — you pick the point on the curve

Per-leaf quantizers compress vectors to a few hundred bytes; exact rerank against the originals claws recall back (measured invariant 1.0 on our e2e gates). A built-in sweep maps recall against QPS, so the operating point is your choice, not a default you hope holds.

Embedding

A C++ core with a stable C ABI

Embed it as a C++ library or cross the exception-proof C boundary — fixed enums, append-only structs, full predicate and payload surface. Built and validated on x86-64 (AVX-512) and aarch64 (NEON/SVE2). The seam future integrations plug into.

v0.1-rc · release candidate the public surface is build → search → drop. validated end-to-end on x86-64 and aarch64, with full gates on a 2.9M×768 production-shaped corpus. mutations and integrations are on the roadmap, not in the box — we don’t ship maybes.

Why the name

A sextant doesn’t find the star. It measures the angle to it — and from that measurement fixes your position. Here, the star is the vector you’re looking for, the navigator is your query, and the sextant is the routing plane: cheap measurements first, expensive chart-reading only where it matters.

You carry the instrument, not the ocean’s chart. The routing table lives in DRAM; the billion-vector corpus stays on disk.