All checks were successful
Deploy mindnet to llm-node / deploy (push) Successful in 4s
- Added additional spacing for improved readability in the document. - Ensured consistent formatting throughout the section on causal retrieval for Mindnet.
224 lines
7.9 KiB
Markdown
224 lines
7.9 KiB
Markdown
<!-- 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)
|
||
|