mindnet/docs/02_concepts/02_concept_kausales_retrieval.md

222 lines
7.9 KiB
Markdown
Raw Normal View History

<!-- FILE: konzept_zielbild_kausales_retrieval_mindnet.md -->
---
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)