Stufe 1: komplexe Fragen via Query-Planer, Per-Query-Slots, Scope-Filter (D12, M6)
- Query-Planer (agent/query_planner.py): Heuristik-Gate (Jahr, Vergleichs-/ Aggregationsmarker, Laenge) entscheidet ueber einen kleinen LLM-Call, der komplexe Fragen in 1-3 Sub-Queries zerlegt (JSON, temp 0; Fehler -> Original als Einzel-Query). Je Sub-Query optional stand_year und scope. - Multi-Query-Retrieval: je Sub-Query BM25+Dense mit RRF-Summe; Per-Query-Slots (2 je Sub-Query) sichern jeden Frageaspekt im Kontext (sonst dominieren Eintraege, die in mehreren Sub-Queries mittelgut matchen — q-113-Befund). Scope-Filter: 'gesetz' (nur Lexis/WIKU/RIS) und 'kv' (nur Branchen-KV) mit Fallback auf unscoped bei leerem Ergebnis. Temporal-Intent: stand_year + temporal_boost (default 0, FTS-jahr-Tag-Signal reichte). - Grounding unveraendert: eine Retrieved-Menge (Union), eine Antwort, Post-Validierung ueber die Union, Verweigerungspflicht unveraendert. - Goldset 42 -> 46: q-110 (Temporal 2023; 2024er-Lohnordnung existiert im Korpus nicht - Mantelvertrag ohne Lohntabelle, korrekt verweigert), q-111 (2025), q-112 (Abfertigung-Vergleich), q-113 (Gesetz+KV). - Eval (46 Fragen): Zitier-Praezision 97,8 %, Verweigerung 97,8 % (Gate >94,3 % erfuellt), erwartete Quelle 90,2 %, Latenz mean 33,5 s. - Tests 50 -> 57. Reports lokal: data/eval-qwen38-stage1*.json. API-first festgehalten (D13-Vorbereitung): Odoo bleibt duenner Client; Lohndaten-Zugriff in M4 erfordert Privacy-Neubewertung.
This commit is contained in:
+33
-6
@@ -180,21 +180,48 @@ zu planen).
|
||||
0,973, MRR 0,667. ENV: PV_DENSE_WEIGHT / PV_RRF_K /
|
||||
PV_CANDIDATE_POOL. Entry-RRF-Variante getestet: kein Mehrwert.
|
||||
- **D11 (Prompt-Budget + Kontext-Abdeckung, 2026-09-15):** lange KV-Chunks
|
||||
überlieferten num_ctx=16384 (q-022: 62,7 KB Prompt ≈ 18k Tokens) —
|
||||
ueberlieferten num_ctx=16384 (q-022: 62,7 KB Prompt ≈ 18k Tokens) —
|
||||
Ollama trunciert den Systemprompt vorn, das Modell verliert die
|
||||
Zitierregeln („Block 8“-Zitate statt IDs → Regenerierung → Verweigerung).
|
||||
Fix: num_ctx 32 768, `trim_results` (max_context_chars=90 000, Tail-
|
||||
Blöcke ganz weg statt trunciert, Mindestbestand 6) und
|
||||
cross_ref_expand 3 → 6 (die Top-3 sind oft Branchen-KV-Blöcke mit
|
||||
Bloecke ganz weg statt trunciert, Mindestbestand 6) und
|
||||
cross_ref_expand 3 → 6 (die Top-3 sind oft Branchen-KV-Bloecke mit
|
||||
leeren cross_refs — kuratierte Nachbarn kamen sonst nie nach).
|
||||
Ergebnis: alle 4 Fehlverweigerungs-Fälle (q-001/q-019/q-022/q-029)
|
||||
geheilt, 10/10 Bestätigungsläufe OK. Eval: Zitier-Präzision 97,6 %,
|
||||
Ergebnis: alle 4 Fehlverweigerungs-Faelle (q-001/q-019/q-022/q-029)
|
||||
geheilt, 10/10 Bestaetigungslaeufe OK. Eval: Zitier-Praezision 97,6 %,
|
||||
Verweigerung 97,6 % (> 94,3 %-Gate ✓), erwartete Quelle 91,9 %
|
||||
(vorher 83,8 %), Retrieval Recall@8 **0,946** (cross_ref-Extras
|
||||
bringen Expected-IDs nach), MRR 0,671. Latenz mean 33 s.
|
||||
Report `data/eval-qwen38-kvris-tuned.json`. Restrisiko: q-024
|
||||
flaky (1/3 Läufe — transienter leerer Draft, Think-Ghost-Verdacht);
|
||||
flaky (1/3 Laeufe — transienter leerer Draft, Think-Ghost-Verdacht);
|
||||
q-015 Branchen-Noise bleibt offen.
|
||||
- **D12 (Komplexe-Fragen-Stufe 1 / M6, 2026-09-15):** Query-Planer vor dem
|
||||
Retrieval: Heuristik-Gate (Jahreszahl, Vergleichs-/Aggregationsmarker,
|
||||
Laenge) entscheidet, ob ein kleiner LLM-Call die Frage in 1-3 Sub-Queries
|
||||
zerlegt (JSON, temp 0, num_predict 220; Fehler -> Original als Einzel-
|
||||
Query). Multi-Query-Retrieval: je Sub-Query BM25+Dense, Beitraege
|
||||
summieren; **Per-Query-Slots** (2 je Sub-Query) sichern jeden Frage-
|
||||
aspekt im Kontext — ohne sie dominieren Eintraege, die in mehreren
|
||||
Sub-Queries mittelgut matchen (q-113: 5 KV-Urlaubs-SS schlugen
|
||||
lb-url-05 (Rang 6) und ris-url-01 (>Top-12) ueber beide Sub-Queries).
|
||||
**Scope-Filter** je Sub-Query: Planer markiert "gesetz" (nur Lexis/WIKU/
|
||||
RIS-Chunks) bzw. "kv" (nur Branchen-KV) — q-113 geheilt (ris-url-01/
|
||||
lb-url-05 + KV-Ss im selben Kontext). Scope-Fallback: gefilterte Suche
|
||||
leer -> unscoped. Temporal-Intent: stand_year je Sub-Query, kv-Eintraege
|
||||
im Geltungsjahr erhalten temporal_boost (default 0 — FTS-Tag-Signal
|
||||
`jahr-YYYY` reichte in der Messung). Grounding unveraendert: ein
|
||||
Kontext aus der Union, Post-Validierung ueber die gesamte Retrieved-
|
||||
Menge, Verweigerungspflicht unveraendert.
|
||||
Eval (46 Fragen): Zitier-Praezision 97,8 %, Verweigerung 97,8 %
|
||||
(Gate > 94,3 % erfuellt), erwartete Quelle 90,2 %, Latenz mean 33,5 s.
|
||||
Temporal-Fragen laufen sogar ohne Planer gut (Jahr-Toknen matchen
|
||||
`jahr-YYYY`-Tags). Neue komplexe Fragen im Goldset: q-110 (Temporal 2023,
|
||||
nach Korrektur — eine 2024er-Friseur-Lohnordnung existiert im Korpus
|
||||
NICHT: kv-kvt-161 ist der Mantelvertrag ohne Lohntabelle; korrekt
|
||||
verweigert), q-111 (Temporal 2025), q-112 (Abfertigung Vergleich),
|
||||
q-113 (Gesetz+KV Multi-Source). Tests 50 -> 57.
|
||||
Offen: q-029 Survey (Stufe-2-Hebel: Map-Reduce), q-113 Planer-
|
||||
Scope flaky (1/2 Laeufe ohne gesetz-Marker).
|
||||
- **Bake-off-Protokoll** (Skill): Modellwechsel nur über dokumentierten
|
||||
Goldset-Vergleich; Kriterium: Zitier-Präzision > Verweigerungs-
|
||||
korrektheit > Latenz.
|
||||
|
||||
Reference in New Issue
Block a user