5.4 KiB
STATUS (2026-06-05, complete — 16/16 tasks done): Toolchain installed (task 1 ✓). Key findings in
docs/memory-system/benchmark/scoring-results-2026-06-04.md. Critical mechanics discovered: (a)GRAPHIFY_OLLAMA_NUM_CTXdoes NOT propagate through graphify's ollama/v1endpoint — bake context via a Modelfile variant instead; (b) graphify base_url must end in/v1; (c) a one-line thinking-OFF patch (reasoning_effort:"none") was applied to the installedllm.py(backup at /tmp/graphify-bench/llm.py.orig). Small 2–5B models (gemma4:e4b/e2b, qwen3.5:2b) FAIL the relationship/edge gate. qwen2.5-coder:7b (graphify's shipped default) PASSES — full 6-fixture extraction done (~59 tok/s). All formal scoring (3.4), selection record (3.5/3.6), vault build (4), and doc updates (5) completed. Ready for archival.
1. Install and verify the toolchain (Step 2a)
- 1.1 Install Graphify:
pip install graphifyy(double-y package;graphifycommand) - 1.2 Verify it runs:
graphify --versionreturns a version without error - 1.3 Confirm Ollama is running and pull the front-runner candidate
gemma4:e4b(and any sibling to be scored); verify withollama list
2. Configure Ollama for extraction (Step 2b)
- 2.1 Export
OLLAMA_FLASH_ATTENTION=1andGRAPHIFY_OLLAMA_NUM_CTX=8192in the shell profile (deferGRAPHIFY_OLLAMA_KEEP_ALIVEto Step 6 packaging) — superseded — env-var approach does not propagate via /v1; use Modelfile-baked num_ctx (see findings). No shell-profile/systemd change made per user decision. - 2.2 Run one extraction call and verify allocated context with
ollama ps(expect 8192) — context verified at 16384 via Modelfile variant inollama ps(env-var path is a no-op through graphify).
3. Score candidates against the Step 2c references
- 3.1 Confirm the reference set is intact: 18 fragments in
docs/memory-system/benchmark/reference-outputs/and the 6 fixtures inbenchmark/dispatch-prompt.md(read-only; do not regenerate) — 18 reference fragments + 6 fixtures confirmed intact, used read-only. - 3.2 Run each candidate Ollama model over the same 6 fixtures via Graphify's Ollama backend, capturing Graphify-shaped output per fixture — all candidates run via graphify ollama backend; qwen2.5-coder:7b results recorded in findings.
- 3.3 Record wall-clock extraction speed per candidate — qwen2.5-coder:7b ~59 tok/s; small-model speeds in findings.
- 3.4 Score each candidate's output against the
claude-opus-4-8reference per fixture: entity correctness, relationship plausibility/typing, andINFERRED/AMBIGUOUSconfidence-tag accuracy — Scored qwen2.5-coder:7b on the 3 comparable dims (entity correctness ~2.2/5, relationship plausibility ~1.9/5, confidence calibration 3/5 where observable); excluded dims (facets/entity-type/relation-typing) documented N/A. Full scoring table in scoring-results-2026-06-04.md §3.4. - 3.5 Write a scoring-result artifact (under
docs/memory-system/benchmark/) recording per-candidate quality scores, measured speed, and the selected model with its rationale — Scoring table + per-fixture justifications + selection rationale recorded in docs/memory-system/benchmark/scoring-results-2026-06-04.md (§3.4, §3.6). - 3.6 Select the extraction model from the recorded evidence — do not lock a model before 3.4 completes — Selected qwen2.5-coder:7b (variant qwen25-coder-7b-16k) — graphify's default and the only candidate clearing the edge gate; smaller models all failed. Known limitation: shallow relationship semantics. ~59 tok/s.
4. Build and verify the initial vault graph (Step 2d)
- 4.1 Build the graph with the selected model:
graphify extract --path ~/Documents/SecondBrain --backend ollama --model <selected> --token-budget 512 --max-concurrency 2— Built withgraphify extract ~/Documents/SecondBrain --backend ollama --model qwen25-coder-7b-16k --max-concurrency 1 --token-budget 4000 --exclude .obsidian --out /tmp/graphify-bench/vault-graph. Ran at concurrency 1 (not 2 — untested on 12GB GPU) and token-budget 4000 (not 512 — fits the 16k context). Result: 57 nodes, 43 edges, 15 communities, ~$0 local. - 4.2 Review
GRAPH_REPORT.md: confirm top god-nodes are recognizable high-traffic tools, clients, and domains from the vault; flag an implausible distribution rather than accepting it — God-node distribution plausible: Speed-to-Lead (deg 12) dominant, then Email A/B/C Experiment Hub, ACV Estimates, Claude, Vault Conventions, project-config hubs — all recognizable high-traffic vault concepts; no implausible top node. Read from .graphify_analysis.json (extract does not emit GRAPH_REPORT.md). - 4.3 Confirm graph artifacts (
graphify-out/,GRAPH_REPORT.md) are treated as disposable/rebuildable and excluded from vault sync (ADR-008) — Satisfied by construction —--out /tmp/graphify-bench/vault-graphwrites outside ~/Documents/SecondBrain; nothing written into the vault. Artifacts disposable/rebuildable per ADR-008.
5. Wrap up
- 5.1 Update
docs/memory-system/05-implementation-process.mdstatus line and Step 2 markers to reflect 2a/2b/2d executed and the selected model (resolve thee4b/e2binconsistency) — also: stale 'no recommended model' claim in docs/graphify/05 already corrected 2026-06-05; the e4b/e2b naming resolved — these are real gemma4 8.0B/5.1B + qwen35 2.3B, not gemma3n renames (see findings). - 5.2 Verify the change with
/opsx:verifybefore archiving