KynetraDB benchmark ledger

Benchmarks

Each result below states what was measured, how, and what it does not show. Numbers come from the dated benchmark ledger committed alongside the engine — not from a marketing deck. Where a ship-gate was not met, it is on this page next to the win, not in a footnote.

0.13% SPANN resident vs raw f32
0.9950 Caustic recall@10 · 768-dim
3.0 ms Ram tenant read @ 1M corpus
0.80 Large-filter recall@10 native

Tidewater · 2026-07-27

SPANN postings served from mmap at query time

The disk tier stops being paid for in RAM. Settled postings are served zero-copy from mmap at query time, so the page cache is the tier and the process heap holds only the centroid navigator, centroid vectors, per-posting headers and the live memtable.

Measure Before (RAM HashMap) After (mmap at query time) Change
Resident memory, as % of raw f32 ~16.4% 0.13% ~125x less
Resident bytes, 50,000 x 64 vectors 16,400 bytes
Search results baseline byte-identical no recall change

Method

The rmp_serde posting blob was replaced with a raw fixed-stride layout (SPP1 header plus packed_bits / corrections / residual_norms / id_offsets / id_blob). A serialized blob must be fully deserialized to read one row, so offset-addressable rows are the precondition for zero-copy. Readers Arc-clone posting handles under a short read lock then scan lock-free; postings are immutable per epoch and flush maps only after fsync, with the manifest as the commit point.

Meridian · 2026-07-27

Per-kind index: tenant-scoped reads go flat

A tenant-scoped list is filter(Filter::Kind("t_<pid>___...")), but a bare Filter::Kind was not index-answerable, so a scoped read cost O(all tenants' data). A per-kind id posting index now answers it directly.

Arm p50 at 10k background p50 at 1M background Shape vs index-off at 1M
Ram, index on 4.5 ms 3.0 ms flat (growth ≤ 1.00x) ~28x faster
Ram, index off 5.0 ms 82.5 ms linear (14.5–17.5x) baseline
Disk, index on 6.8 ms 13.6 ms monotone 1.90–2.37x ~33x faster
Disk, index off 9.1 ms 443 ms linear (40–49x) baseline

Method

Release build. A fixed 10,000-entity tenant-A corpus, with the background corpus scaled 10k → 1M. The axis is background corpus size; the baseline is the same engine with the index flag off. Both arms measured in the same run.

Ship-gates, reported as measured

Caustic · 2026-07-26

Sub-bit residual quantization

The sub-bit tier of the Prism density ladder: k-means residual coding, where the Beacon centroid doubles as the compression predictor, plus orthonormal projection to dim/shrink and a RaBitQ-style 1-bit sign code with unbiased estimation.

Codec recall@10 Amortized B/vector vs f32 Recall per byte
Caustic, shrink=2 0.9950 57.5 53.4x 1.76x better than RaBitQ
Prism-R (RaBitQ) baseline

Method

Measured at 768 dimensions on a 10,000-vector clustered corpus, 100 queries. The axis is amortized bytes per vector; the baseline is Prism-R (RaBitQ) measured in the same harness. "1.76x better recall-per-byte" is a figure-of-merit ratio against that RaBitQ baseline, not a speed claim.

Lodestar · 2026-07-27

SPANN large-filter native scan

SPANN filtered search dispatches on filter size: small filters take an exact branch, large ones a predicate-during-scan branch. Because the engine resolves small filters with its own scan, the large branch is the only one production reaches — and it was the one without coverage.

Strategy recall@10 Budget Holds across
Native predicate-during-scan 0.80 equal RaBitQ and Caustic
Post-filtering 0.14 equal RaBitQ and Caustic

Method

Measured on the large-filter branch — the path production actually takes — at an equal scan budget for both strategies. The comparison axis is recall@10 at fixed budget; the baseline is equal-budget post-filtering.

How to read these numbers

Every multiple names its axis

"~125x less" means resident memory as a fraction of raw f32, against the previous RAM HashMap. "~28x" means p50 tenant-scoped read latency at 1M background entities, against the same engine with the index off. A multiple without both is not a result.

Synthetic corpora are labelled

The Caustic and Lodestar figures are from synthetic corpora and say so. Real-embedding validation for Caustic is pending. A number measured on generated data is evidence about the engine only once the generator has been ruled out as the thing being measured.

Unmet gates stay visible

The Disk variance gate was not met and the Disk per-kind index is default-off as a result. That is on this page, in the same section as the 33x figure, because a caveat nobody reads is not a caveat.