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.
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.
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.
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.
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.
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.
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.