simplixity-writer-4b

Qwen3.5-4B fine-tuned to write the answers in Simplixity, a self-hosted research assistant. Given a question and numbered sources, it writes an answer that cites those sources, in the reader's language (English or German).

This is v1. GGUF files for Ollama, LM Studio and llama.cpp are in simplixity-writer-4b-GGUF.

Use with Ollama

On Linux and Windows, Ollama cannot import safetensors. Download a GGUF file from simplixity-writer-4b-GGUF and follow the instructions there.

On macOS, from a download of this repo:

ollama create simplixity-writer:4b-v1-q4_k_m -f Modelfile --quantize q4_K_M

In Simplixity, choose simplixity-writer:4b-v1-q4_k_m as the answer model with provider Ollama.

Prompt

The model was trained on the prompt that Simplixity builds for the answer step (prompts.answer in the app, compact ruleset), at context windows of 4k and 8k tokens. Use it through Simplixity, or rebuild that prompt exactly; other prompts are untested.

Results

Judge: Claude Haiku 5.5 through Simplixity's verify step, which labels every claim of an answer as supported, partly supported or unsupported by the cited sources. Ollama 0.40, Q4_K_M, MTP draft 2.

Set, window Base supported / partial / unsupported v1
Test (87 questions), 4k 79 / 14 / 7 % 89 / 11 / 1 %
Test, 8k 75 / 12 / 12 % 89 / 11 / 0.5 %
Real usage (67), 4k 65 / 21 / 13 % 75 / 20 / 5 %
Real usage, 8k 60 / 31 / 9 % 83 / 14 / 3 %
  • Answers in the wrong language: 5% โ†’ 1% (test set).
  • Speed on an RTX 3070 Ti: about 180 tokens/s with MTP speculative decoding, TTFT about 0.9 s, median answer 2.2 s.
  • The unsupported claims of the base model were mostly facts from its own knowledge. Those of v1 are mostly statements about the sources.

Limits

  • Hedges too often ("the sources do not say โ€ฆ"), about 1.7 times per answer on real questions.
  • Sometimes claims that sources disagree when they don't.
  • Cites a smaller share of its sentences than the base model.

Training

  • Data: answers written by Claude Haiku 5.5 (teacher) for synthetic questions, on evidence frozen from Simplixity's real search pipeline, plus a small private set from real use. Teacher answers were filtered for citation errors and cut-off outputs. The training data is not published.
  • Method: QLoRA (NF4 base), on the language model's linear layers, loss on the answer only. Checkpoint at step 80 (about one epoch); the second epoch overfit.
  • Export: the LoRA was merged into the bf16 base. The mtp.* (next-token prediction) layer is kept, so llama.cpp and Ollama can use it for speculative decoding. LoRA does not train that layer.

Code

training/ holds the scripts (no data): freeze_evidence.py runs Simplixity's search pipeline up to the answer step and saves its inputs, teacher.py gets the teacher answers, make_sft.py filters them, train.py trains, export_ckpt.py merges a checkpoint, to_ollama.sh builds the GGUF files, and eval/eval_writer.py scores answers.

Licence

Apache 2.0, like the base model.

Downloads last month
51
Safetensors
Model size
5B params
Tensor type
F32
ยท
BF16
ยท
Inference Providers NEW
This model isn't deployed by any Inference Provider. ๐Ÿ™‹ Ask for provider support

Model tree for stneric/simplixity-writer-4b

Finetuned
Qwen/Qwen3.5-4B
Finetuned
(1,380)
this model
Quantizations
2 models