From c8b3b21004448c8d00aa61b0b1640a95cf927888 Mon Sep 17 00:00:00 2001 From: "K. Isom" Date: Tue, 29 Sep 2026 23:46:37 -0700 Subject: [PATCH] dixie: honcho-embed pooling cls -> last Qwen3-Embedding is a causal model; its card pools the last token. With cls every input embedded as its first token's state ("the cat sat on the mat" and "the stock market crashed today" at cosine 1.0). A CPU side server with --pooling last reproduced the card's example scores within 0.002 without a manual EOS. Honcho's stored vectors and sift's embed cache are re-embedded / flushed after the switch. Co-Authored-By: Claude Opus 5.5 --- hw/dixie/default.nix | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/hw/dixie/default.nix b/hw/dixie/default.nix index dbccf9a..d67ff14 100644 --- a/hw/dixie/default.nix +++ b/hw/dixie/default.nix @@ -74,7 +74,11 @@ let [honcho-embed] model = ${modelsDir}/qwen3-embedding-0.6b/Qwen3-Embedding-0.6B-Q8_0.gguf embedding = true - pooling = cls + ; Qwen3-Embedding is causal: pool the last token (its model card does). cls returned the + ; first token's state, so every text embedded by its first token alone (cos 1.0 across + ; unrelated texts, 2026-09-29). llama.cpp appends the EOS itself; last reproduces the + ; card's example scores within 0.002. + pooling = last ; A whole input must fit in one physical batch AND one slot (batch-size silently caps ; ubatch; ctx is split across slots). Bigger batches cost compute buffers fast on a ; shared 12 GB card: 8192/slot took 6.6 GB and 4096/slot did not fit beside the 9B and