Skip to content

v0.7.0

Choose a tag to compare

@github-actions github-actions released this 03 Sep 03:00
· 54 commits to main since this release

v0.7.0 — the encoder becomes a candidate generator, on every platform

Search quality

  • Always-on doc-side dense channel. Every index with the encoder enabled now embeds its referenced definitions at warm time — in the background, resumable across warms, never blocking a search — and fuses them as a fifth ranked list. The encoder stops being a reranker that can only reorder what the lexical channels found: Linux kernel encoder-enabled search 0.222 → 0.31–0.35 NDCG@10 (0.313 without the encoder), this repository 0.585 → 0.705. The fill's stop rule is structural (definitions something references; measured against the "or exported" variant and pinned on the data). --dense-budget-timeout 5m30s caps a fill round; <index>/dense.channel = off opts out.
  • Learned tier trains on a balanced kind set (every definition kind capped at the largest callable population, derived from the corpus): kernel learned tier 0.295 → 0.313, the first time it beats the lexical tier on the 8.9 M-node graph; CPython unchanged. Existing learned tiers retrain automatically (the policy label rides in the tier record).
  • vorpal tune measures the dense channel too and can pin a per-index verdict.

Encoder throughput, everywhere

  • macOS: the doc-side path runs through Accelerate sgemm — 232 → 935–1,928 GFLOPS (AMX-bound, proven by shard sweep), embeddings identical to the reference lanes, bit-identical across thread counts.
  • x86-64 (Linux / Windows): owned AVX-512F and AVX2+FMA kernels, CPUID-detected — ~45× the previous portable path on CI's AVX2 runner (2 → 107–113 GFLOPS, bit-equal). AVX-512 compiles clean and awaits hardware for its first measurement.
  • GPUs (NVIDIA, AMD, Intel iGPU, Apple): one wgpu compute-shader GEMM over Metal / Vulkan / DX12 — no vendor SDK, ships inside the binary — with the weights resident on the device and the MLP block fused there; a GPU → CPU → reference ladder with typed fallback. On an M5 Max the fill runs 1.83× faster than Accelerate at 3.4× less CPU. Vulkan/DX12 are compile-verified and parity-tested on a software Vulkan device; hardware runs pending.
  • The query-side rerank stays on the fixed-order reference lanes on every platform — rankings are byte-identical to 0.6.1 wherever the dense channel is off.
  • int8 kernels (NEON sdot, AVX-VNNI, AVX-512-VNNI) ship but stay off: per-row activation quantization misses the retention bar on this encoder (recorded).

Also

  • Walk reuse for incremental saves of giant files (0.6.1's headline) is unchanged.
  • MSRV is now honestly 1.98 (the tree already relied on 1.88 features); three newer style lints unlocked by the bump are allowed at the workspace level pending hygiene work.
  • docs/wip/ENCODER_RESEARCH.md: the primary-source survey behind this release, including the measured-and-rejected options (LateOn-Code multi-vector channel, cross-encoder reranking, static distillation, richer candidate surfaces).

Full Changelog: v0.6.1...v0.7.0