--- id: konzept_zielbild_kausales_retrieval_mindnet title: Konzept & Zielbild – Kausalketten-Prüfung und kausales Retrieval für Mindnet (Qdrant) type: concept status: draft created: 2026-01-13 lang: de tags: - mindnet - obsidian - knowledge_graph - causal_chains - retrieval --- # Konzept & Zielbild – Kausalketten-Prüfung und kausales Retrieval für Mindnet (Qdrant) ## Ziel Mindnet soll zu beliebigen Fragestellungen **die richtigen Notizen** nicht nur über semantische Nähe (Embeddings), sondern über **kausale Relevanz** finden. Parallel soll ein Authoring-Assistent helfen, Obsidian-Notizen so anzulegen, dass Kausalketten **formal konsistent** und **traversierbar** sind. --- ## Ausgangslage / Problem - Der Wissensgraph wird in Qdrant gepflegt; aktuelles Retrieval basiert primär auf **Gewichtung + semantischer Nähe**. - Ergebnis: thematisch nahe Treffer, aber oft **nicht antwortrelevant** (fehlende Ursachen-/Folgenbezüge). - Obsidian-Notizen enthalten Edges (Vorwärts/Rückwärts); Qualität hängt von: - korrekter Relation (Kausalität vs Chronologie), - konsistenten Node-Namen, - Inversen (gegenläufigen Beziehungen), - sauberer Typisierung ab. --- ## Grundannahmen - Viele Antworten benötigen einen **Erklärungspfad** statt eines Einzel-Treffers: - Ursache → Mechanismus/Transformation → Entscheidung → Wirkung → Rückkopplung - Kausalität ist im Graph als gerichtete Kanten modelliert und über inverse Typen **bidirektional navigierbar**: - `resulted_in` ⇄ `caused_by` - `followed_by` ⇄ `preceeded_by` - `derived_from` ⇄ `source_of` - `impacts` ⇄ `impacted_by` --- ## System-Zielbild (2 Hauptkomponenten) ### 1) Authoring-Assistent (Obsidian Graph Linter + Chain Explorer) Zweck: Qualitätssicherung beim Erstellen/Ändern von Notizen. **Kernfunktionen** - **Formale Prüfungen** - Canonical Edge vs Alias (Normalisierung nach `edge_vocabulary`) - Zielnoten existieren / leere Links als `open_question` oder TODO markieren - Tippfehler/Node-Splitting erkennen (mehrere Schreibweisen desselben Knoten) - Edge-Typ zulässig für Note-Typ (z.B. keine Kausal-Edges aus `open_question`) - **Semantische Plausibilität (regelbasiert)** - Chronologie (`followed_by`) ≠ Kausalität (`resulted_in`) - Hub-/Index-Noten nutzen primär `related_to/consists_of` statt Kausalität - Prinzipien bevorzugt `derived_from/based_on` statt pauschal `caused_by` - **Ketten-Integrität** - „Gap“-Warnungen (Sprünge ohne Zwischennoten) - Zyklen ohne Sinn (A caused_by B und B caused_by A) - Mehrfachursachen transparent markieren **Outputs** - Lint-Report pro Note (Fehler/Warnung/Empfehlung) - Chain-Preview (2–4 Schritte vorwärts/rückwärts) - Optional: Auto-Fix-Vorschläge (Alias→Canonical, Link-Normalisierung, Inversen ergänzen) --- ### 2) Mindnet Retrieval: Hybrid aus Embeddings + Graph Traversal + Reranking Zweck: Aus einer Frage automatisch eine **kleine, kausal zusammenhängende** Menge von Notizen auswählen. **Pipeline** 1. **Seed Retrieval (Qdrant Embeddings)** - Top-K Kandidaten (z.B. 30) als Startpunkte - Optional: Filter nach Node-Typ (z.B. bei „Welche Entscheidungen…“) 2. **Intent-Klassifikation (Frage → Richtung & Kettenform)** - Regelbasiert (Start) oder später ML-Classifier - Output: `{direction, preferred_edges, target_types, max_hops, need_explanation_chain}` 3. **Graph Expansion (Multi-Source Multi-Hop Traversal)** - Expandiert von Seeds 1–3 Hops (typisch 2–4) - Richtungslogik: - „Warum/Ursache“ → rückwärts (`caused_by`, `preceeded_by`, `derived_from`) - „Folgen/Ergebnis“ → vorwärts (`resulted_in`, `followed_by`, `impacts`) - „Entwicklung/Veränderung“ → beides (forward + backward) - Ergebnis: Pfad-Kandidaten (nicht nur Nodes) 4. **Reranking (Antwortrelevanz)** - Score = Semantik + Pfadqualität + Antwortform-Passung 5. **Antwort-Bausteine (Minimal Explanation Subgraph)** - Merged Top-Pfade zu einem kleinen Subgraph (z.B. 8–12 Nodes) - Pruning nach zentralen Knoten und erklärender Kettenform --- ## Spezifikation: Intent → Traversal Mode (Heuristik) ### Intent-Struktur - `direction`: `backward | forward | both` - `preferred_edges`: Menge Edge-Typen - `target_types`: Menge Node-Typen - `max_hops`: int - `need_explanation_chain`: bool ### Heuristik (Deutsch) - **Warum / Ursache / Auslöser / wodurch / wie kam es dazu** - direction: backward - preferred_edges: `{caused_by, preceeded_by, derived_from}` - target_types: `{experience, decision, strategy, state}` - max_hops: 2–4 - **Was führte zu / Folgen / Auswirkungen / resultierte in** - direction: forward - preferred_edges: `{resulted_in, followed_by, impacts}` - target_types: `{decision, strategy, state, principle}` - max_hops: 2–4 - **Entwicklung / Veränderung / Weltbild / Glaubenssatz / Charakter** - direction: both - preferred_edges backward: `{caused_by, derived_from}` - preferred_edges forward: `{resulted_in, impacts}` - target_types: `{principle, state, strategy, decision}` - max_hops: 2–4 - need_explanation_chain: true --- ## Spezifikation: Traversal (Weighted Multi-Hop) ### Gewichte (Startwerte) **Edge Weights** - `resulted_in`: 1.00 - `caused_by`: 1.00 - `derived_from`: 0.90 - `source_of`: 0.90 - `impacts`: 0.70 - `impacted_by`: 0.70 - `followed_by`: 0.50 - `preceeded_by`: 0.50 - `related_to`: 0.25 - `part_of/consists_of`: 0.25 **Node-Type Weights** - `experience`: 1.00 - `decision`: 1.00 - `strategy`: 0.90 - `state`: 0.85 - `principle`: 0.85 - `insight(hub)`: 0.35 - `open_question/hypothesis/white_spot`: 0.00 (Filter) **Hop Decay** - `hop_decay(h) = 0.75^h` ### Traversal-Logik (pseudocode-nah) - Multi-Source-Expansion ab Seeds - Pfade priorisiert nach kumuliertem Pfadscore - `visited` verhindert endlose Wiederholungen --- ## Spezifikation: Reranking (Semantik + Kausalität + Antwortform) ### Final Score - `final_score(path) = alpha*semantic + beta*coherence + gamma*shape_match` Startwerte: - `alpha = 0.55` (Semantik) - `beta = 0.30` (Kausal-Kohärenz) - `gamma = 0.15` (Passung zur Frageform) **Causal Coherence** - Bonus, wenn Pfad Kausal-Edges enthält (`resulted_in/caused_by/derived_from`) - Malus, wenn nur Navigation/Chronologie enthalten ist - Bonus für Kernform: `experience → decision → (state|strategy|principle)` --- ## Output: Minimal Explanation Subgraph (MES) Ziel: nicht eine Liste, sondern ein erklärendes Subgraph-Set. **Regeln** - Top-Pfade (z.B. 3–5) mergen - max_nodes: 8–12 - Pruning: - Hubs raus, wenn sie nur Navigation sind - Decision/Principle/State bevorzugen (Antwortanker) - Bridge-Nodes behalten (in mehreren Pfaden vorkommend) --- ## Authoring-Regeln (Graph-Hygiene) – harte Leitplanken 1. Kausalität nur auf atomaren Noten (`experience/decision/state/strategy/principle`) 2. Hubs/Indexnoten: primär `related_to/consists_of` (keine „Hub verursacht X“-Kausalität) 3. Inverse Edges müssen erzeugbar sein (oder Build-Step erzeugt sie deterministisch) 4. Chronologie strikt trennen (`followed_by` ≠ `resulted_in`) 5. Prinzipien: `derived_from/based_on` für Herkunft (statt pauschal `caused_by`) 6. Leere Links als `open_question` oder TODO ohne Kausal-Edge 7. Kanonische Dateinamen: Node-Splitting verhindern --- ## Nutzen / Erfolgskriterien - **Bessere Answer Relevance**: Mindnet liefert Knoten mit erklärender Kausalstruktur statt nur thematischer Nähe - **Erklärbarkeit**: Antwort kann mit Pfad(en) begründet werden - **Debuggability**: Fehlantworten lassen sich auf falsche/fehlende Kanten zurückführen - **Authoring-Effizienz**: Assistent verhindert typische Edge-Fehler früh --- ## Offene Punkte (für nächste Iteration) - Intent-Taxonomie (8–12 Frageklassen) finalisieren und evaluieren - Welche Edges werden als „kausal“ im engeren Sinne akzeptiert? - Welche Node-Typen sind Pflichtmetadaten für Mindnet? - Evaluation: Retrieval-Qualität mit/ohne Traversal (A/B)