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