Unfold search planner, Qwen3.5 0.8B
Version 2026.11.02, built 2026-11-02T13:42:13Z.
The query planner that Unfold Note runs offline, on the device, in its search over the user's own Obsidian notes for the chat. It reads a question (and the last few turns) and answers up to 3 extra search requests, as JSON.
- Base model:
Qwen/Qwen3.5-0.8B(Apache-2.0). - GGUF:
unsloth/Qwen3.5-0.8B-GGUFat commit6ab461498e2023f6e3c1baea90a8f0fe38ab64d0(Apache-2.0), fileQwen3.5-0.8B-Q4_K_M.gguf, Q4_K_M. It is redistributed here unchanged asmodel.gguf, under the licence of the base model and of that repository. planner-prompt.md: the system prompt the app sends, written for this purpose. No user data was used: the model was not trained or fine-tuned, and the prompt holds no customer content.- Chat format
qwen3.5-nothink(Qwen3.5 ChatML with thinking off), context 2048 tokens, answer capped at 400 tokens. Greedy decoding, constrained to the JSON schema{"queries": [{"text": ...}]}(at most 3 requests of at most 300 characters). - Runs on CPU with node-llama-cpp (llama.cpp). About 1 GB of memory with the context above. Minimum app version: 2.8.0.
Gate
Measured with the app's own runtime, on 4 threads, on a snapshot of the owner's notes (the notes and the questions are not published): the 50 gold questions go through the planner, then the notes search with the embedder. A plan counts as valid when the runtime answers one; hits@8 is the share of questions whose expected note is among the first 8 results.
| measure | value | bar |
|---|---|---|
| questions answered with a valid plan | 50/50 | all |
| hits@8 (notes search with the plan, paired with the embedder) | 0.880 | >= 0.86 |
| MRR | 0.746 | reported |
| median plan latency, 4 threads | 1141 ms | <= 1500 ms |
| machine | Intel(R) Core(TM) i7-14700F, 28 logical cores, 32 GB, win32 x64 |
Integrity
planner-model.json lists model.gguf and planner-prompt.md with their size and sha256. The app verifies them after
download.
Limits
A 0.8B model: it often repeats the question or rewords it, and it can miss a name or a date. The app searches with the typed question first and keeps the plan only when it arrives within its time budget, so a weak plan never replaces the question.