feat(brain): add Qwen3-Reranker to brain_answer for improved RAG quality #7
Closed
opened 2026-05-12 15:34:18 +00:00 by mathias
·
1 comment
No Branch/Tag Specified
main
fix/pipeline-writes-158
fix/edit-path-io-192
fix/create-regular-188
fix/guard-special-179
fix/linkcheck-keeps-write-178
fix/write-dir-redirect-173
fix/tunnel-detect-174
fix/pipeline-root-157
w3/154-mcp-auth-wiring
fix/tunnel-traversal
test/in-brain-targets-171
fix/brain-scan-root-157
fix/graph-wiki-root-157
fix/vectorstore-root-157
fix/notes-root-157
fix/search-root-157
fix/brainwide-root-157
fix/raw-symlinks-153
feat/symlink-tripwire-157
fix/rest-auth-149
fix/123-brain-edit-envelope-check
feat/106-page-aware-extraction
fix/105-source-drift-on-main
fix/104-surface-merge-conflicts-on-main
agent/b1-compile-on-ingest
agent/104-surface-merge-conflicts
agent/105-source-drift
agent/107-loud-unconfigured-alerting
feat/brain-read-edit
fix/capture-i1-refusal-names-target
renovate/configure
feat/consolidate-single-harness
icebox/cmd-routing
feat/brain-pending-promote
fix/close-session-classification-refresh
fix/capture-summarywriter
v0.24.0
v0.23.1
v0.23.0
v0.22.0
v0.21.1
v0.21.0
v0.20.1
v0.20.0
v0.19.1
v0.19.0
v0.18.4
v0.18.3
v0.18.2
v0.18.1
v0.18.0
v0.17.0
v0.16.1
v0.16.0
v0.15.0
v0.14.0
v0.13.2
v0.13.1
v0.13.0
v0.12.1
v0.12.0
v0.11.2
icebox/cmd-routing-2026-07-01
v0.11.1
v0.11.0
v0.10.0
v0.9.0
v0.8.0
v0.7.0
v0.6.0
v0.5.0
v0.4.1
v0.4.0
v0.3.0
v0.2.0
v0.1.0
Labels
Clear labels
agent/ready
blocked/client
blocked/supplier
blocked/upstream
risk/high
risk/low
risk/medium
size/l
size/m
size/s
size/xs
status:dispatch
status:dispatched
status:review
status:reviewing
type/chore
type/decision
type/docs
type/feat
type/fix
type/ops
type/research
type/test
Meets the agent-ready contract; authorizes unattended execution
Waiting on the client
Waiting on a supplier
Waiting on an upstream project or vendor
Irreversible, security-relevant, or control plane
Reversible, local, test-covered
Touches shared state, deploys or data
Too big - split it
Under two days
Under half a day
Under an hour
Maintenance, no behaviour change
Human decision required; never agent/ready
Documentation only
New capability
Corrects broken behaviour
Infrastructure, deploy, runtime
Investigate; output is a finding, not code
Test coverage only
No labels
Milestone
No items
No Milestone
Projects
Clear projects
No projects
No Assignees
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: mathias/hyperguild#7
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Context
brain_answercurrently does BM25 top-10 → LLM synthesis. BM25 recall is decent but ranking is keyword-frequency based — semantically relevant chunks can rank low if they don't share exact terms with the query.Qwen3-Reranker is available on iguana (cross-encoder, runs via Ollama). Adding a rerank step between retrieval and synthesis should improve answer quality with no change to the LLM call.
Proposed change
BRAIN_RERANKER_URLenv var (opt-in, same pattern asBRAIN_LLM_PRIMARY_URL)Why deferred
Needs Qwen3-Reranker confirmed running on iguana and a clean HTTP API to call it (Ollama
/api/rerankor custom wrapper). Verify model availability before building.Acceptance criteria
BRAIN_RERANKER_URLunset → behaviour unchanged (BM25 top-10 direct to LLM)BRAIN_RERANKER_URLset → BM25 top-20 → rerank → top-5 → LLMtask checkpassesShipped in
a56a4db.Design note (deviation from spec)
The issue spoke of a reranker "score" with a
top-5 by reranker scorecut. Qwen3-Reranker as published on Ollama (no native/api/rerankinv0.21.1) returns a single yes/no token under its trained chat template — there's no logprob surface to extract a fine-grained float per pair.Implementation choice: treat the reranker as a filter rather than a ranker.
Net effect matches the spec's intent (better RAG quality, fewer irrelevant chunks to LLM) with the API actually available today. If
/api/rerankor a logprob path lands in Ollama, swapparseYesNofor a float decoder; the rest of the wiring is stable.Acceptance criteria
BRAIN_RERANKER_URLunset → behaviour unchanged (BM25 top-10 → LLM) —TestBrainAnswer_Synthesizesstill green with no reranker injectedBRAIN_RERANKER_URLset → BM25 top-20 → rerank → ≤5 → LLM —TestBrainAnswer_RerankerFiltersBeforeLLMprovesnoise.mdis dropped before the LLM calltask checkcleanNew env vars
BRAIN_RERANKER_URLhttp://iguana:11434BRAIN_RERANKER_MODELdengcao/Qwen3-Reranker-0.6B:F16Verified
dengcao/Qwen3-Reranker-0.6B:F16already loaded on iguana ollama before coding (per the issue's "verify model availability" gate).Deploy
CI/CD auto-rebuilds the ingestion image. Add
BRAIN_RERANKER_URL=http://iguana:11434to the supervisor pod env to flip it on once the image rolls out.Closing.