From 7e9b01915a4e8283d07d2f03bd6bfc205fc17a7c Mon Sep 17 00:00:00 2001 From: Brad Stein Date: Tue, 3 Feb 2026 13:17:35 -0300 Subject: [PATCH] retriever: prioritize keyword chunks --- atlasbot/engine/answerer.py | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/atlasbot/engine/answerer.py b/atlasbot/engine/answerer.py index af8a8fa..9eaf7e4 100644 --- a/atlasbot/engine/answerer.py +++ b/atlasbot/engine/answerer.py @@ -1094,10 +1094,28 @@ def _select_chunks( selected: list[dict[str, Any]] = [] head = chunks[0] selected.append(head) + + keyword_hits: list[dict[str, Any]] = [] + if keywords: + lowered = [kw.lower() for kw in keywords if isinstance(kw, str) and kw.strip()] + for item in ranked: + if item is head: + continue + text = str(item.get("text") or "").lower() + if any(kw in text for kw in lowered): + keyword_hits.append(item) + + for item in keyword_hits: + if len(selected) >= plan.chunk_top: + return selected + if item in selected: + continue + selected.append(item) + for item in ranked: if len(selected) >= plan.chunk_top: break - if item is head: + if item in selected: continue selected.append(item) return selected