Stufe 2: Antworttyp-Routing — Survey Map-Reduce + Rueckfrage-Regel (D13, M6)

- Planer liefert jetzt type: survey|specific. Survey-Fragen (Uebersicht
  ueber viele Dokumente) laufen ueber Map-Reduce: Retrieval auf
  survey_blocks=16 erweitert, ein Map-Call destilliert JE Block als
  Stichpunkte mit seiner KB-ID (MAP_SYSTEM_PROMPT), ein Reduce-Call
  synthetisiert die Endantwort. Grounding unveraendert: Zitier-Validierung
  strikt ueber die Retrieved-Union; leerer Map-Output -> Fallback auf
  Einzelantwort.
- Systemprompt-Regel 9: haengt die Antwort wesentlich von nicht genanntem
  Kontext ab (Branche, Bundesland, Zeitraum), belegte allgemeine Aussage
  plus EINE Rueckfrage statt Verweigerung (API-first; Odoo-Chat kann die
  Rueckfrage als Follow-up nutzen).
- Ergebnis: q-029 (WIKU-Survey, bisher hartnaeckigste Fehlverweigerung)
  geheilt - Teilantwort mit 5 belegten Heften; q-015 antwortet mit
  expliziter KV-Abhaengigkeit + Rueckfrage statt Branchen-Noise.
- Eval (46 Fragen): Zitier-Praezision 97,8 %, Verweigerung 97,8 % (Gate
  erfuellt), erwartete Quelle 90,2 %, Latenz mean 34,2 s (Map-Reduce nur
  bei Survey-Fragen, ~95 s). Report lokal data/eval-qwen38-stage2.json.
- Tests 57 -> 59 (Survey-Integration, Typ-Parsing).
This commit is contained in:
2026-09-15 11:16:53 +02:00
parent 062e010d7b
commit 4a9e06f66e
7 changed files with 163 additions and 32 deletions
+13
View File
@@ -64,6 +64,7 @@ python -m agent.cli serve # http://127.0.0.1:8080 (/ask, /health, /r
| `PV_QUERY_PLANNER` | `true` | Query-Planer an (Heuristik-Gate entscheidet je Frage) |
| `PV_PLANNER_MODEL` | leer = Antwortmodell | Modell des Planer-Calls |
| `PV_TEMPORAL_BOOST` | `0.0` | Bonus für kv-Einträge im gefragten Geltungsjahr |
| `PV_SURVEY_BLOCKS` | `16` | Map-Reduce: breiteres Retrieval für Survey-Fragen (Typ `survey` vom Planer) |
| `PV_NUM_CTX` | `32768` | Modell-Kontextfenster (KV-Chunks überschreiten 16k — Overflow trunciert den Systemprompt) |
| `PV_MAX_CONTEXT_CHARS` | `90000` | User-Content-Budget; niedrig gerankte Blöcke werden ganz weggelassen (`trim_results`) |
| `PV_CONTEXT_BLOCKS` | `8` | Kontextblöcke im Prompt |
@@ -155,6 +156,18 @@ Report: `data/eval-qwen38-stage1-final.json`. Offen: q-029 Survey
(Stufe-2-Hebel: Map-Reduce), q-015 Branchen-Noise → API-first-Rückfrage
(Stufe 2).
**Antworttyp-Routing Stufe 2 (2026-09-15, M6/D13):** Planer liefert
`type: survey|specific`. Survey-Fragen („Welche Neuerungen …“) →
**Map-Reduce**: Retrieval auf `survey_blocks` (16) erweitert, ein Map-Call
destilliert jeden Block als Stichpunkte mit seiner KB-ID, ein Reduce-Call
synthetisiert die Endantwort — Zitier-Validierung weiterhin strikt über
die Retrieved-Union. **Regel 9** (Kontext-Abhängigkeit): belegte allgemeine
Aussage + eine Rückfrage statt Verweigerung (Branche/Bundesland/Zeitraum).
Ergebnisse: q-029 geheilt (5 belegte Hefte, ~95 s Map-Reduce-Latenz),
q-015 antwortet mit KV-Abhängigkeit + Rückfrage. Eval (46 Fragen):
Zitier-Präzision 97,8 % · Verweigerung 97,8 % (Gate ✓) · erwartete
Quelle 90,2 % · Latenz mean 34,2 s. Report: `data/eval-qwen38-stage2.json`.
## Dateien
```