feat(r42): improve KB grounding accuracy and add clear-history

R42 was missing knowledge-graph information (e.g. pension questions)
because retrieval and context-building dropped relevant facts:

- retrieval: exact-token TF-IDF could not match Dutch compound words,
  so a "pensioen" query scored 0 against "pensioenregeling" /
  "partnerpensioen" and never retrieved them. Add a compound-word
  fallback (shared >=6-char stem or containment, 0.4x weight) alongside
  exact matching.
- rag: deep article content was only injected for verbatim-mentioned
  topics; retrieved topics contributed just a 200-char description.
  Inject ~1000 chars of content for up to 5 topics (mentions first,
  then top-ranked retrieved) and widen the description snippet to 320.
- prompts: add a NAUWKEURIGHEID block (use all relevant facts, call
  lookup_topic before giving up) and relax the 4-sentence cap for
  detail/list answers so complete facts aren't summarised away.

Also add a clear-history control: a trash button in the chat header
(confirm dialog) wipes chat🧵{userId} and reseeds the greeting
via clearThread() in useChat.

Tests: compound-word matching + rag deep-content injection. Spec updated.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
RaymondVerhoef
2026-07-13 14:25:08 +02:00
parent e73700763d
commit 85452f66a7
9 changed files with 239 additions and 30 deletions

View File

@@ -87,8 +87,13 @@
border-radius: 999px;
background: var(--sage);
}
.r42-window-hd-x {
.r42-window-hd-actions {
margin-left: auto;
display: flex;
align-items: center;
gap: 2px;
}
.r42-window-hd-x {
color: rgba(236, 233, 233, 0.7);
background: transparent;
border: none;
@@ -99,6 +104,18 @@
border-radius: var(--r-sm);
}
.r42-window-hd-x:hover { background: rgba(236, 233, 233, 0.1); }
.r42-window-hd-clear {
color: rgba(236, 233, 233, 0.7);
background: transparent;
border: none;
cursor: pointer;
padding: 6px;
border-radius: var(--r-sm);
display: grid;
place-items: center;
}
.r42-window-hd-clear:hover { background: rgba(236, 233, 233, 0.1); }
.r42-window-hd-clear:disabled { opacity: 0.4; cursor: default; }
.r42-window-body {
flex: 1;