feat: Optimized Local-First Vector Graph Engine (v3.7 P0)#79
Merged
Conversation
Static enum dispatch over LocalEngine and CloudEngine selected via LEANKG_VECTOR_ENGINE, matching PRD §5.14 storage abstraction.
Persist metadata and HNSW adjacency with Local RocksDB options (mmap off, Zstd, pin L0, BinaryAndHash) per PRD 5.14.1.
Keep INT8/SQ8 vectors fully in RAM for SIMD ANN with no disk I/O on the inner loop (PRD 5.14.1).
Append-only FP32 + source payload binary store read once at post-filter after ANN (PRD 5.14.1).
Detect AVX-512/AVX2/NEON at runtime with scalar fallback so distance kernels never SIGILL on older CPUs.
Plan block cache from available RAM / 2GB Local survival cgroup so the engine stays under the PRD memory envelope.
Local leaves 2 cores free for OS/IDE; Cloud uses the full machine.
Heuristic neighbor selection with raised ef_construction defaults to protect recall at efSearch=50.
Enforce safe write order: flat append, fsync, Tier-1 offsets, then SQ8 RAM update per PRD 5.14.3.
Truncate uncommitted flat tails on open and assert Tier-1 offsets never point past the payload file.
Compact live records into a shadow flat file and swap offsets under a micro-lock so readers stay unblocked.
Assert shadow compaction with concurrent readers keeps vector counts intact (FR-VE-TEST-GC).
…ORY) Assert EngineKind parse + VectorEngineFactory open for local and cloud.
Require Neon/AVX2/AVX-512/scalar INT8 dots to agree within 1e-6.
Simulate append-without-commit and assert recovery leaves no dangling Tier-1 offsets.
Measure SQ8 in-RAM query P95; full 1M/<50ms gate runs via cargo bench.
Hot SQ8 path touches zero disk pages; report >=80% reduction vs mmap full-scan baseline.
Measure recall at efSearch=50 against FP32 brute-force (>90% target).
Auto-tune block cache under the Local 2GB survival cap so ANN warm must not OOM-kill.
Record PRD token/tool/speed floors and optional LEANKG_VE_AB_JSON ingestion for the release gate.
Smoke gate keeps ready_for_default=false until full-scale benches and A/B floors pass; Cozo HNSW remains shipped default.
Core storage/runtime/tests DONE; benches/gate/US/REL PARTIAL until full-scale 1M and live agent A/B prove the release floors.
Add deterministic ≥100-task LocalEngine vs grep/cat simulator with PRD floor checks, wire gate smoke to the suite, and register cargo bench --bench vector_engine_ab.
Align docker-compose.rocksdb and docker-up MCP with PRD LocalEngine 2GB envelope; keep offline embed on a higher mem_limit.
Keep cold-embed guidance at ≥6g; MCP Local survival is 2g.
linhdmn
added a commit
that referenced
this pull request
Jul 17, 2026
* docs(prd): sync v3.7 vector-engine status to origin/main Reflect #79 merge on main (crate 0.19.0): FR-VE core/REL-044..047 DONE; gate, full-scale benches, and live A/B remain PARTIAL. * feat(vector-engine): prove FR-VE-BENCH-Q 1M ANN P95 under 50ms Add Sq8Nsw layer-0 search over in-RAM SQ8 and gate cargo bench/default corpus at 1M. Measured P95=0.065ms (Neon); mark FR-VE-BENCH-Q DONE. * feat(vector-engine): close FR-VE-BENCH-IO/RECALL/OOM gates Prove ≥80% modeled I/O cut vs mmap, SQ8 recall≥90% @ efSearch=50, and 1M corpus under 2GB (live RSS≈567MB). Mark REL-048 DONE. * feat(vector-engine): meet US-VE-01/02 idle RSS and TTC floors Add kpi helpers: warm SQ8 NSW RSS≈89MB (<150MB) and ANN+JSON time-to-context P95≈0.094ms (<100ms). Mark REL-050 DONE. * feat(vector-engine): close FR-VE-BENCH-AB with JSON artifact export In-process ≥100-task suite meets PRD floors; cargo bench writes target/vector_engine_ab_result.json for gate/live injection. * feat(vector-engine): flip FR-VE-GATE ready_for_default on full evidence evaluate_gate sets ready_for_default when LEANKG_VE_GATE_FULL=1 and all Q/IO/RECALL/OOM/AB floors pass; preferred_ann_backend returns local_engine. * test(vector-engine): cover P0 gate paths and record A/B results Add e2e suite, expand unit/bench coverage, reorder RSS KPI before 1M ANN, and sync PRD/tracker with measured gate evidence JSON. * fix(vector-engine): avoid i8 overflow in synth SQ8 patterning CI debug builds panicked on `% 254 as i8 - 127` when the modulo exceeded 127; compute the centered value in i32 before casting. * docs: polish README for clearer project landing page * fix: idle GC trim once per quiet period Stop re-trimming empty caches every 30s while idle; honor LEANKG_GC_POLL_SECS in the watchdog sleep and call trim_heap only after a real cache release. * docs: capture semantic MCP verification as PRD v3.7.1 backlog Record the live Docker MCP probe as GREEN evidence and add US-SEM/FR-SEM enhancements (token honesty, ontology budgets, HTTP resilience, live smoke) for a later sprint without displacing P1. * fix(vector-engine): gate idle RSS on warm delta for CI Absolute process RSS exceeds 150MB under Linux debug `cargo test --lib` (~161MB observed). Measure baseline/delta and assert delta_ok in unit/e2e; keep absolute check for lean bench processes. * docs: polish README to product landing style Restructure around CodeGraph-style get-started, agent badges, why/how, and measured A/B results while keeping LeanKG-accurate install paths. * docs(prd): sync tracker status to PR #80 tip Record open PR, CI hardening (i8 overflow + RSS delta_ok), measured KPI numbers, and awaiting-merge / next-P1 notes in PRD + task tracker. * docs(prd): clarify FR-VE-GATE coexistence on PR #80 Align status banners with open PR #80 (awaiting merge) without pinning a moving tip SHA; keep CI/RSS methodology notes.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
src/vector_engine/): Local/Cloud factory, 3-tier storage (topology + SQ8 RAM + flat payload), SIMD/runtime auto-tune, HNSW neighbor selection, dual-write + crash recovery + shadow GC.cargo bench --bench vector_engine_ab).docs/prd-task-trackerstatuses (core FR-VE-* DONE; benches/gate/US/REL PARTIAL until full 1M + live Kilo A/B for default cutover). Cozo::hnswremains shipped default (FR-VE-GATE).Test plan
cargo test --lib vector_engine:: --release(47 passed)cargo test --lib vector_engine::ab:: --release(10 passed)cargo bench --bench vector_engine_abLEANKG_VE_BENCH_N=1000000 cargo bench --bench vector_engine_abfor full 1M P95 gateMade with Cursor