Vertiefung

Export-Pipeline

6 Formate, Validation-Engine und Chunk-Bereinigung im Detail.

01
Validation Engine

validate_workspace() prueft 8 Kriterien: Content vorhanden, keine verwaisten Relationen, keine Duplikat-Titel, Tags vorhanden, Konfidenz vorhanden, Zeitdaten vorhanden, aktive Nodes, Relationen bei >3 Nodes. Score 0-100.

# 8 Checks
1. missing_content = [nid for nid if len(content) < 20]
2. orphan_edges = [e if e.from not in node_ids]
3. duplicate_titles = {t: ids if len(ids) > 1}
4. no_tags = [nid if not meta.tags]
5. no_confidence = [nid if not meta.confidence]
6. has_temporal = sum(1 if meta.temporal.source_date)
7. active_nodes > 0
8. edges > 0 if nodes > 3

score = (passed / 8) * 100
02
Chunk-Bereinigung

Embedding-Chunks muessen frei sein von Markdown-Syntax. 5 Regex-Passes: Headers, Bold, Italic, Code-Blocks, Wikilinks, Emojis. Dann Zeitkontext als natuerliche Sprache voranstellen.

# 5 Cleaning Passes
re.sub(r'#{1,6}\s+', '', text) # ## Header → Header
re.sub(r'\*\*(.+?)\*\*', r'\1', t) # **bold** → bold
re.sub(r'```[\s\S]*?```', '', t) # code blocks → weg
re.sub(r'\[\[(.+?)\]\]', r'\1', t) # [[link]] → link
re.sub(r'[emojis]', '', t) # 🏗️ → weg

Prefix: f"As of {source_date}: {title}. {clean}"
03
Mermaid-Generierung

Nodes werden als Mermaid-Knoten mit classDef-Styling ausgegeben. Kanten bekommen unterschiedliche Pfeiltypen: --> fuer Abhaengigkeiten, -.-> fuer Kausalitaet, ==> fuer Fixes. Farben pro Typ.

# Pfeiltypen pro Relationstyp
depends_on: --> (durchgezogen)
caused_by: -.-> (gestrichelt)
fixes: ==> (doppelt)
related_to: --- (ohne Pfeil)

# Farben per classDef
arch: Blau | dec: Rot | les: Orange
pat: Gruen | bug: Rot | cfg: Lila