docs/knowledge_design.md aktualisiert
Some checks failed
Deploy mindnet to llm-node / deploy (push) Failing after 2s

This commit is contained in:
Lars 2025-09-09 12:22:26 +02:00
parent ec346905ed
commit e672eade8b

View File

@ -1,69 +1,67 @@
# knowledge_design.md # mindnet Knowledge Design
## Ziel & Anspruch ## 1. Gesamtziel, Anspruch & Nutzen
Dieses Dokument definiert die Wissensarchitektur von **mindnet**. Ziel ist eine persönliche Wissensbasis, die langfristig tragfähig ist (eigene Gedanken, Erfahrungen, Pläne, Erlebnisse) und ist zugleich so strukturiert, dass Tools (Obsidian, Dataview, Parser, Vektorsuche/Qdrant, Agenten) es **maschinenlesbar** nutzen können.
Ziele:
- Persönliches Wissen, Erfahrungen, Pläne und Ideen konsistent speichern.
- Vernetzung durch Backlinks und Wikilinks, auch bei noch nicht vorhandenen Zielen.
- LLM-fähige Abfragen durch semantische Vektoren und strukturierte Graph-Kanten.
- Vollständiger Roundtrip: Markdown ↔ Qdrant ↔ Markdown.
## YAML-Frontmatter-Schema **Anspruch an die Struktur:**
**Pflichtfelder** - **Stabil**: robuste IDs, deterministische Dateinamen, konsistente Feldnamen
- `id`: eindeutige Note-ID - **Atomar**: ein Kerninhalt pro Datei (keine Sammelcontainer)
- `title`: kurzer Titel - **Erweiterbar**: neue Typen (z. B. `milestone`, `manifesto`) jederzeit möglich
- `type`: z. B. `concept`, `plan`, `journal` - **Portabel**: reines Markdown + YAML → funktioniert in Obsidian, Git und Parsern
- `created`: ISO-Datum - **Vernetzbar**: systematische Links/Backlinks erzeugen ein sinnvoll navigierbares Netz
- `updated`: ISO-Datum - **Parser-freundlich**: wiederkehrende Abschnittsüberschriften; Felder/Enums klar definiert
**Optionale Felder** **Späterer Nutzen / Einsatzzwecke:**
- `status`, `area`, `project`, `tags`, `lang`, `slug`, `aliases`, `priority`, `effort_min`, `due`, `people`, `depends_on`, `assigned_to` - **Schnelles Wiederfinden**: Dataview-Abfragen, Filter, Dashboards
- **LLM-gestütztes Arbeiten**: Frage-Antwort mit Kontext-Zitaten aus den Chunks
- **Agenten**: Vorschläge für neue Verbindungen/Strukturierung; Auflösen von „unresolved links“
- **Projektnavigation**: Aufgabenbeziehungen, Abhängigkeiten (leichtes PM)
- **Lebenslaufende Struktur**: persönliche Werte, Wendepunkte, Kinderentwicklung, Lernpfade
- **Automatisierung**: Vektor-Index (Qdrant), Embeddings, LLM-Q&A, Agenten-Workflows
- **Langfristiges Gedächtnis**: eigene Lebens-/Projektchronik reproduzierbar pflegen
- **Aufgaben-/Projektsteuerung**: im selben System, vernetzt mit Kontextwissen
## Dateinamen-Konvention ---
- Format: `YYYY-MM-DD_title.md` oder `slug.md`
- Pfade relativ zum Vault, z. B. `area/project/note.md`
## Tagging-Regeln ## 2. YAML-Frontmatter-Schema
- Tags im Frontmatter als YAML-Liste (`tags: [#karate, #projektX]`).
- Im Text: `#Tag` erlaubt, aber nicht für die Kantenbildung verwendet.
## Link-Regeln > **Pflichtfelder:** `title`, `id`, `type`, `status`, `created`, `tags`
- Wikilinks: `[[note-id]]` oder `[[Titel|note-id]]` → erzeugen Edges. > **Empfohlen:** `updated`, `area`, `project`, `priority`, `aliases` (u. a.)
- Forwardlinks (references): Chunk-Scope.
- Backlinks: Note-Scope, automatisch generiert.
- Unresolved-Links: bleiben als Edge mit `status=unresolved` bestehen, bis Zielnote existiert.
## Edge-Typen ### 2.1 Feldübersicht
- **belongs_to**: Chunk → Note | Feld | Typ | Bedeutung |
- **references**: Chunk → Note (aus Wikilinks im Text) |--------------------|-------------------------------|---------------------------------------------------------------------------|
- **backlink**: Note → Note (automatisch, invers von references) | `title` | string | Menschlich lesbarer Titel |
- **prev / next**: Chunk → Chunk (symmetrisch) | `id` | string (slug/identifier) | **Stabile** ID; referenzierbar über Wikilinks |
- **unresolved**: Edge mit `status=unresolved`, wenn Ziel fehlt | `type` | enum | Notiz-Typ (`concept`, `thought`, `experience`, `task`, `project`, `journal`, …) |
- **weitere (Tasks/Projekte)**: `depends_on`, `assigned_to`, `related`, etc. | `status` | enum | `draft` \| `active` \| `done` \| `archived` |
| `created` | date | Erstellungsdatum (ISO) |
| `updated` | date | Letzte Änderung (ISO) |
| `area` | string | Themen-/Lebensbereich |
| `project` | string | Projekt-/Arbeitskontext |
| `tags` | list<string> | Taxonomische Tags (präfixiert, s. Abschnitt 4) |
| `aliases` | list<string> | Alternative IDs/Titel (Slug-Resolver) |
| `lang` | string | Sprache, optional |
| `priority` | enum/int | Priorität, optional |
| `due`, `effort_min`| date/int | Für Aufgaben/Projekte |
| `people` | list<string> | Beteiligte Personen/IDs |
| `depends_on` | list<string> | Abhängigkeiten auf andere IDs |
| `source` | string | Quelle (Artikel, Buch, Video, …) |
**Optional:** `references:note` (Note-Scope-References), standardmäßig deaktiviert; aktivierbar via ENV/Flag. ### 2.2 Konventionen
- `id` ist **menschenlesbar** (Slug), eindeutig im Vault; `aliases` dienen als Fallback für Resolver.
- Datumsformat ISO `YYYY-MM-DD`.
- Keine duplizierten Tags; Präfixe nutzen (`area/…`, `type/…`, `topic/…`).
## Qdrant-Ablage ### 2.3 Minimalbeispiel Frontmatter
- Collections: `{prefix}_notes`, `{prefix}_chunks`, `{prefix}_edges` ```yaml
- Vektoren: title: "Gedanke: YAML-Standards"
- Notes: Nullvektor oder Zentroid (optional) id: thought-yaml-standards
- Chunks: 384-d Embeddings type: thought
- Edges: 1-d Dummy-Vektor status: draft
- IDs: deterministisch via UUIDv5 (idempotent) created: 2025-09-02
updated: 2025-09-02
## Payload-Indizes (Performance) area: mindnet
- Notes: `note_id` project: project-mindnet
- Chunks: `note_id`, `chunk_index` tags: [area/mindnet, type/thought, topic/yaml]
- Edges: `note_id`, `kind`, `scope`, `source_id`, `target_id` aliases: [yaml-gedanken]
## Backlink-Sektion im Markdown
Jede Note kann am Ende eine Sektion **„Mögliche Verbindungen“** enthalten. Diese ist optional, wird chunked, erzeugt aber keine Kanten dient nur als Inspirationsquelle.
## Graph-Layer (optional)
Für Multi-Hop-Queries kann zusätzlich eine SQL-Tabelle `nodes/edges/aliases` gepflegt werden. Der Importer schreibt parallel in Qdrant und SQL (UPSERT).
→ Vorteil: effiziente Abfragen wie „2-Hop Pfade“, „Top-Hubs“, Community-Erkennung.
## Nutzen
- Speicherung und Vernetzung persönlicher Wissensressourcen.
- LLM kann mit Hybrid-Retrieval (Vektor + Graph) antworten.
- Neue Inhalte können vom Agenten semantisch eingeordnet und durch vorgeschlagene Edges ergänzt werden.