Files
breakpilot-core/control-pipeline/INSTRUCTION-session-handover.md
T
Benjamin Admin 5a6e588641 docs: update session handover — D2-D5 complete, EU PDF issue documented
Session achieved: structural metadata end-to-end (D2-D4), overlap bug
fix, HTML stripping with charset detection, 430/436 docs re-ingested.

Remaining: ~40 EU Official Journal PDFs need HTML from EUR-Lex (broken
multi-column PDF extraction), 3 missing EDPB PDFs, 1 corrupt PDF.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-02 17:34:34 +02:00

5.1 KiB

Session-Uebergabe: Strukturelles Chunking + Re-Ingestion

Datum: 2026-05-02 Uebergeben von: Pipeline-Session (01.05 - 02.05.2026)

Was wurde erledigt

Block Was Status
D2 RAG-Service speichert section/section_title/paragraph/paragraph_num/page in Qdrant
D3 Control Generator liest strukturelle Metadaten, page in source_citation
D4 BGB § 312k Validierung — Overlap-Bug gefunden + gefixt
D5 430/436 Dokumente re-ingestiert mit neuem Chunking
HTML-Fix HTML-Stripping + Charset-Erkennung (ISO-8859-1)
pdfplumber Als PDF-Backend hinzugefuegt, PDF_EXTRACTION_BACKEND=auto

Ergebnisse der Re-Ingestion

Dokumenttyp Section-Rate Anmerkung
DE Gesetze (TXT) 95-100% Exzellent
HTML (gesetze-im-internet.de) 97.6% War 0%, nach Fix perfekt
EDPB/DSK Leitlinien (PDF) 80-98% Gut
EU-Amtsblatt-PDFs (AI Act, CRA, NIS2, DSGVO) 13-35% OFFEN — siehe unten
Tech-Specs (JSON, MD) 0% Erwartet, keine §/Artikel

Gesamt: 69.888 Chunks in 6 Collections, 430 von 436 Dokumenten.

Offene Probleme

1. EU-Amtsblatt-PDFs (~40 Dokumente, 13-35% Section-Rate)

Ursache: EU Official Journal PDFs verwenden mehrspaltige Layouts. Sowohl pypdf als auch pdfplumber extrahieren gebrochene Woerter ("Ar tik el" statt "Artikel"). Kein PDF-Extractor loest das zuverlaessig.

Empfohlene Loesung: EU-Verordnungen als HTML von EUR-Lex herunterladen statt PDF. EUR-Lex bietet alle Verordnungen als sauberes HTML. Unser HTML-Stripping + Legal Chunker funktioniert perfekt dafuer.

Betroffene Dokumente (Beispiele):

  • ai_act_2024_1689.pdf (33%) → HTML von EUR-Lex
  • cra_2024_2847.pdf (34%) → HTML von EUR-Lex
  • nis2_2022_2555.pdf (13%) → HTML von EUR-Lex
  • dsgvo_2016_679.pdf (0%) → HTML von EUR-Lex
  • amlr_2024_1624.pdf (12%) → HTML von EUR-Lex
  • Alle Dateien mit _20XX_XXXX.pdf Pattern im bp_compliance_ce Collection

2. 3 komplett fehlende PDFs

Diese wurden NIE erfolgreich in Qdrant gespeichert:

  • edpb_controller_processor_07_2020.pdf — KEINE CHUNKS
  • edpb_gl_7_2020.pdf — KEINE CHUNKS
  • edpb_rtbf_05_2019.pdf — KEINE CHUNKS

Ursache: Timeout bei Upload (selbst mit 3600s). Die PDFs sind gross und die Embedding-Generierung dauert zu lange.

Loesung: Manuell aufteilen (Split in Abschnitte) oder als kleinere Teile hochladen.

3. 1 korrupte PDF

  • dsk_kpnr_3.pdf — 500 Internal Server Error bei Extraktion

Commits dieser Session

93099b2 feat(pipeline): structural metadata end-to-end (Blocks D2-D4)
ddad58f fix(rag): strip HTML tags before chunking + D5 re-ingestion scripts
a459636 fix(rag): HTML charset detection + opening block tag newlines
75dda9a feat(embedding): add pdfplumber backend for multi-column PDF extraction
41183ff fix(docker): set PDF_EXTRACTION_BACKEND to auto (was pymupdf)

Kritische Dateien

Datei Aenderung
embedding-service/main.py Overlap-Bug-Fix, pdfplumber-Backend
rag-service/api/documents.py D2 Payload-Felder + HTML-Erkennung
rag-service/html_utils.py HTML-Stripping + Charset-Erkennung (NEU)
rag-service/embedding_client.py ChunkResult Dataclass (D2)
control-pipeline/services/rag_client.py page-Feld in RAGSearchResult (D3)
control-pipeline/services/control_generator.py section-Prioritaet + page (D3)
control-pipeline/scripts/reingest_d5.py Re-Ingestion Script (NEU)
control-pipeline/scripts/reingest_d5_config.py Config + Helpers (NEU)
docker-compose.yml PDF_EXTRACTION_BACKEND=auto

Naechste Schritte (Block E)

E1: EU-Verordnungen als HTML von EUR-Lex ersetzen

  1. Liste aller EU-Amtsblatt-PDFs mit <50% Section-Rate erstellen
  2. EUR-Lex HTML-Versionen herunterladen (CELEX-Nummern sind in den Qdrant-Payloads)
  3. Alte PDF-Chunks loeschen, HTML-Versionen hochladen
  4. Qualitaetspruefung → erwartete Section-Rate >90%

E2: 3 fehlende EDPB-PDFs aufteilen + hochladen

E3: Fehlende Gesetze ingestieren (BGB aktuell, ArbZG, MuSchG, etc.)

Siehe Masterplan Block E in jazzy-snacking-creek.md

DB-Stand

Collection Chunks Dokumente
bp_compliance_ce ~18.000 ~60
bp_compliance_gesetze ~31.500 ~98
bp_compliance_datenschutz ~15.000 ~107
bp_dsfa_corpus ~3.500 ~30
bp_legal_templates ~2.000 ~100
Gesamt ~70.000 ~430

Tests

# Embedding-Service (58 Tests)
cd embedding-service && python3 -m pytest test_chunking.py test_d4_bgb.py -v

# RAG-Service (32 Tests)
cd rag-service && PYTHONPATH=. python3 -m pytest tests/ -v

# Control-Pipeline (387 Tests)
PYTHONPATH=control-pipeline python3 -m pytest control-pipeline/tests/ -v

Memory-Dateien (lesen!)

Alle unter /Users/benjaminadmin/.claude/projects/-Users-benjaminadmin-Projekte-breakpilot-core/memory/:

  • MEMORY.md — Index
  • project_structural_chunking.md — Architektur-Entscheidung
  • feedback_legal_source_licensing.md — Rule 1/2/3
  • project_control_pipeline_masterplan.md — Gesamtplan A-G