feat(kb): ingest rechtsprechung corpus

This commit is contained in:
2026-09-15 15:27:28 +02:00
parent 1594aa9cbd
commit 5209539ba3
365 changed files with 33112 additions and 51 deletions
+24 -8
View File
@@ -1,10 +1,10 @@
# PV RAG Agent
Lokaler RAG-Agent für österreichische Personalverrechnung: beantwortet
Fragen **ausschließlich** aus der kuratierten Wissensbasis (Layer 2,
`wissensbasis/`, **1274 Einträge**: 601 lb/wk-Kuratierung + 614 WKO-KV-
Dokumente + 59 RIS-Gesetze) — mit ID- und Stand-Beleg, ohne
Trainingswissen, ohne Web-Zugriff. Verbindliche Regeln:
Fragen **ausschließlich** aus der Wissensbasis (Layer 2,
`wissensbasis/`, **1622 Einträge**: 601 lb/wk-Kuratierung + 614 WKO-KV-
Dokumente + 59 RIS-Gesetze + 348 Rechtsprechungs-/Normquellen) — mit ID-
und Stand-Beleg, ohne Trainingswissen, ohne Web-Zugriff. Verbindliche Regeln:
`.agents/skills/pv-rag-agent/SKILL.md`, Plan: `planung.md`.
## Architektur (Kurzfassung)
@@ -180,6 +180,19 @@ Report: `data/eval-qwen38-lengthfix.json`. Offene Restfälle: keine
Fehlverweigerungen/Verletzungen mehr; 3-4 Fragen zitiert gültige,
aber nicht die erwartete Quelle (q-015-Klasse).
**Rechtsprechungs-Intake (2026-09-15, D15):** Korpus 1.274 → **1.622**
Einträge: 320 RIS-OGD-Entscheidungen/Rechtssätze, 23 zitierte RIS-
Normauszüge und 5 als nichtamtlich markierte EuGH-Textwiedergaben im neuen
`rj-rjs-*`-ID-Raum. Der Reindex erzeugte **16.480 Chunks** (1.496 neue
`bge-m3`-Embeddings, 75 s). Retrieval mit dem erweiterten 50-Fragen-Goldset:
Hit-Rate **0,956** · Recall@8 **0,922** · MRR 0,661; das Recall-Gate >0,9
bleibt erfüllt, alle vier neuen Rechtsprechungsfälle werden gefunden. Vier
gezielte Antwortläufe (q-120123) sind zitiergültig, ohne Verweigerung und
ohne Regenerierung; der volle Antwortmodus-Eval für den erweiterten Korpus
steht noch aus. EuGH-Texte sind im Kontext und in der Quelle explizit als
nichtamtliche lexetius-Wiedergabe gekennzeichnet; der Systemprompt verlangt
nun dieselbe Einschränkung auch in der Antwort.
## Dateien
```
@@ -196,7 +209,7 @@ agent/
eval/ goldset.yaml + evaluate.py
web/index.html Minimaler Test-Chat
tools/ Intake + Registry (build_registry.py, ingest_sources.py)
tests/ 49 Tests (offline, Fake-Ollama)
tests/ 64 Tests (offline, Fake-Ollama)
data/ index.db (gitignored)
```
@@ -208,6 +221,9 @@ python -m pytest -q # 49 Tests, alle offline
## Lizenz-Disziplin
`.lexis360/`, `.wiku/`, `.firecrawl/`, `.ris/` sind lokal und unversioniert
(`.gitignore`). Der Index enthält ausschließlich Layer-2-Kuratierung;
Layer-1-Prompts wären ein Lizenzverstoß und sind im Code nicht vorgesehen.
`.lexis360/`, `.wiku/`, `.firecrawl/`, `.ris/`, `.rechtsprechung/` sind lokal
und unversioniert (`.gitignore`). Der Index enthält ausschließlich Layer-2-
Inhalte; Layer-1-Prompts wären ein Lizenzverstoß und sind im Code nicht
vorgesehen. Die quellentreuen `rj_*.md` sind vor einer Versionierung anhand
von Provenance und Lizenzfreigabe der gelieferten Volltexte zu prüfen; die
EuGH-Wiedergaben sind ausdrücklich nicht amtlich.