feat(ucca): Multi-Regulation-Retrieval (Cross-Regulation-Fragen) #43
Reference in New Issue
Block a user
Delete Branch "fix/multi-regulation-retrieval"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Was & Warum
Adds scoped multi-regulation retrieval — it activates only when a query explicitly references ≥2 regulations ("Wie greifen CRA und Maschinenverordnung ineinander?"). Then
searchInternalretrieves per regulation separately (filter onregulation_code/regulation_id) and merges, so a cross-regulation question returns both domains in the prompt instead of only the keyword-dominant one. No effect on single-regulation queries — they take the unchanged single-domain path.Generic (Query → regulations, no doc-specific logic), gated on ≥2 detected regulations.
Behebt den Cross-Regulation-Defekt (GQ-0070)
CRA ×8, null MaschVO → das Modell halluzinierteMaschVO = 2019/2144+ falsche „CRA ausgenommen"-Konklusion.Änderung (4 Dateien)
multi_regulation.go(neu):regulationCatalog+detectRegulations(deterministisch, alias-basiert) +searchMultiRegulation(per-reg Retrieval + Merge + authority-rerank) +hitsToResults(Refactor, vonsearchInternalgeteilt).legal_rag_client.go: Hook insearchInternal(best-effort, fällt bei leerem Multi-Ergebnis auf Standardsuche zurück) + Mapping →hitsToResults.legal_rag_http.go: Per-Regulation-Filter aufregulation_idUNDregulation_code(rückwärtskompatibel, aktiviert die re-ingestierte Build-Collection).multi_regulation_test.go(neu): Unit (Scoping) + opt-in e2e (5 Cross-Reg-Paare).Validierung (Build-Collection, echtes
SearchCollection)detectRegulations: ≥2 → multi, 1/0 → single.go build·go vet·gofmt· Bestandstests grün.Deploy
Merge/Deploy erst nach separatem Go. Volle Wirkung auf der Build-Collection (KB v2). Auf dev
cevoraussichtlich inert (per-reg-Filter matcht den alten Korpus evtl. nicht → Best-effort-Fallback auf Standardsuche) — kein Effekt, keine Regression.🤖 Generated with Claude Code
Nennt eine Query EXPLIZIT >=2 Regelwerke ("Wie greifen CRA und Maschinen- verordnung ineinander?"), retrievt searchInternal pro Regelwerk separat (regulation_code/regulation_id-Filter) und merged — damit BEIDE Domänen im Prompt landen statt nur der keyword-dominanten. Generisch (Query->Regelwerke, KEINE doc-spezifische Logik), gegated auf >=2 erkannte Regelwerke; sonst unveränderter Single-Domain-Pfad. Behebt GQ-0070: vorher CRA x8 / null MaschVO -> Modell halluzinierte MaschVO=2019/2144 + falsche "CRA ausgenommen"-Konklusion. Nachher CRA + MaschVO im Prompt -> korrekt "beide gleichzeitig anwendbar" + Art. 20(9) Konformitätsvermutung, gegroundet. Validierung (Build-Collection, echtes SearchCollection): - Unit: detectRegulations-Scoping (>=2 -> multi, 1/0 -> single) - 5 Cross-Reg-Fälle (0070 + DSGVO+TDDDG/CRA+NIS2/DORA+NIS2/AI Act+DSGVO): beide Regelwerke in Top-8 - CB-100 Freeze-Regression: NUR GQ-0070 + GQ-0095 geändert (beide echte Cross-Reg, beide verbessert), 98/100 byte-identisch - 10 Hard Cases: 9 Single-Domain unverändert, 0070 behält CRA Rang 1 Filter erweitert auf regulation_id UND regulation_code (rückwärtskompatibel, aktiviert die re-ingestierte Build-Collection). Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>