Repository navigation
·
2 commits
to main
since this release
[2.8.3-ja.2] - 2026-09-25
Faster ONNX reranking, a fix for the misleading qmd update embedding count, and opt-in query-expansion and GPU controls.
Performance
- ONNX reranker: tokenize only the first 1,500 characters of each candidate before truncating to 512 tokens. Model input is unchanged (30 real queries / 594 candidates: identical scores and rank order). MCP latency for
candidateLimit20 drops from about 1.48s to 1.22s, and for 40 from about 3.8s to 2.5s.
Fixes
qmd updateno longer reports every document as needing embeddings when a non-default (e.g. ONNX) embed model is configured. It counted against the default GGUF model, so a 1,773-document index showed "1,773 need vectors" whileqmd doctorcorrectly showed 41.
Query expansion
- Add an opt-in retry guard for simplified-Chinese contamination in expanded queries. Configure
queryExpansion.contaminationMarkers/maxAttemptsin.qmd/index.yml, orQMD_EXPAND_ZH_MARKERS/QMD_EXPAND_MAX_ATTEMPTS. Disabled unless configured. - Change the expansion grammar to fixed line counts and a 10-280 character hyde bound. This applies to everyone using auto-expansion (
query): in an 8-query check, a few queries returned one fewervecline than before.
ONNX
qmd doctorreports the ONNX execution provider used for embedding and reranking.- Add
QMD_ONNX_DEVICE=autoto opt into GPU (DirectML on Windows, CUDA on Linux x64). CPU remains the default: on a small embed/rerank model, DirectML on an integrated GPU was 6-10x slower than CPU.
[2.8.3-ja.1] - 2026-09-03
Sync with upstream tobi/qmd v2.8.3 (previous sync: 2026-06-29, v2.6.3-ja.1).
Security
- Gate project-local collection paths and model URIs behind the trust prompt.
- Verify Origin/Host on the MCP HTTP server and keep index paths inside the collection.
- Stop running a checked-in
.qmdconfig's update commands unattended.
MCP
- Speak the stateless HTTP protocol (server/discover), added 2026-07-28.
- Expire idle HTTP sessions with a configurable TTL.
- Scope the HTTP daemon pidfile per
--index; shut down gracefully on stdin EOF.
Japanese search (CJK FTS) reliability
- Fix concurrent FTS table creation races and "database is busy" errors during CJK FTS rebuild.
- Repair legacy/leftover FTS schema before CJK rebuild.
- Fix UTF-16 surrogate pair splitting at chunk boundaries and dotted-token matching in quoted FTS phrases.
Embedding / reranking reliability
- Bump
node-llama-cppto 3.20.0. - Fix rerank context creation races on cold start, embed context pool sizing, model download progress display, and rerank fallback handling.
- Add an exclusive lock around embedding to prevent concurrent embed races.
CLI
- Add
--globas an alias forcollection add --mask; support comma-separated--maskglobs. - Add orphaned-vector reclamation and
--dry-runtoqmd cleanup. - Fix
--full-pathsilently degrading and native-addon ABI mismatches (spawn viaprocess.execPath).
Build / compatibility
- Bump
better-sqlite3to 13.0.3. - Fix
npm installandtsccompatibility on Windows.