From fcb90db2d018f6ed0fd82df3a53bdf756408a4f2 Mon Sep 17 00:00:00 2001 From: Lars Date: Mon, 8 Dec 2025 17:47:28 +0100 Subject: [PATCH] docs/mindnet_functional_architecture.md aktualisiert --- docs/mindnet_functional_architecture.md | 81 ++++++++++++++++++++----- 1 file changed, 66 insertions(+), 15 deletions(-) diff --git a/docs/mindnet_functional_architecture.md b/docs/mindnet_functional_architecture.md index 0c65ea8..9c53d83 100644 --- a/docs/mindnet_functional_architecture.md +++ b/docs/mindnet_functional_architecture.md @@ -164,29 +164,80 @@ Die API gibt diese Analysen als menschenlesbare Sätze (`reasons`) und als Daten --- -## 6) Der RAG-Chat & Persönlichkeit (WP05/WP06) +## 6) Der RAG-Chat & Persönlichkeit (WP05) Seit WP-05 kann Mindnet nicht nur suchen, sondern als **KI-Zwilling** antworten. Die Persönlichkeit entsteht dabei auf zwei Ebenen: -### 6.1 Stil & Tonfall (WP05 - "Wie ich spreche") +### 6.1 Stil & Tonfall (System Prompt) In `config/prompts.yaml` wird die Persona definiert. * **System Prompt:** Definiert die Rolle ("Ich bin dein digitales Gedächtnis..."). * **Werte im Prompt:** Pragmatismus, Transparenz (kein Halluzinieren), Vernetztes Denken. * **Context Intelligence:** Dem LLM werden Metadaten (Typ, Score) injiziert, damit es komplexe Zusammenhänge erkennt (z.B. dass eine `[DECISION]` wichtiger ist als ein `[CONCEPT]`). -### 6.2 Strategische Persönlichkeit (WP06 - "Wie ich entscheide") -Ein echter KI-Zwilling spiegelt nicht nur den Stil, sondern die **Werte** des Users wider. Dies wird durch **Strategic Retrieval** erreicht: -* **Logik:** Bei komplexen Fragen oder Entscheidungen ("Soll ich X tun?") lädt das System gezielt Notizen vom Typ `[VALUE]` und `[PRINCIPLE]` in den Kontext – auch wenn diese textlich nicht direkt zur Frage passen (Re-Ranking). +### 6.2 Strategische Persönlichkeit (Ausblick WP06) +Ein echter KI-Zwilling spiegelt nicht nur den Stil, sondern die **Werte** des Users wider. +* **Logik:** Bei komplexen Fragen oder Entscheidungen ("Soll ich X tun?") lädt das System gezielt Notizen vom Typ `[VALUE]` und `[PRINCIPLE]` in den Kontext. * **Effekt:** Das System wägt die Fakten (aus der Suche) gegen die Werte (aus dem Profil) ab. -* **Beispiel:** Eine technisch perfekte Lösung wird abgelehnt, wenn sie gegen den Wert "Datensparsamkeit" verstößt. --- -## 7) Feedback & Lernen – WP04c +## 7) Erweiterbarkeit & Teaching (Context Intelligence) + +Mindnet lernt nicht durch klassisches Training (Fine-Tuning), sondern durch **Konfiguration**, **Vernetzung** und **Prompting**. Dies ist das **"Teach-the-AI" Paradigma**: Wenn du dem System ein neues Konzept beibringen willst, musst du an drei Stellen eingreifen. + +### A. Workflow: Einen neuen Typ implementieren (z. B. `type: risk`) + +1. **Physik definieren (`config/types.yaml`)** + Steuere, wie schwer der Inhalt wiegt und wie er vernetzt wird. + ```yaml + risk: + chunk_profile: short # Risiken sind prägnant + retriever_weight: 0.90 # Hohe Priorität im Ranking + edge_defaults: ["blocks"] # Automatische Kante zu verlinkten Projekten + ``` + *Effekt:* Der Retriever spült diese Notizen bei relevanten Anfragen nach oben. + +2. **Semantik erklären (`config/prompts.yaml`)** + Bringe dem LLM bei, wie es mit diesem Typ umgehen soll. + ```yaml + system_prompt: | + ... + REGELN FÜR TYPEN: + - [RISK]: Warnung! Wenn ein Chunk vom Typ 'risk' im Kontext ist, weise den User explizit darauf hin. + ``` + *Effekt:* Der Chatbot ignoriert das Risiko nicht nur, sondern "versteht" die Warnfunktion. + +### B. Workflow: Neue Beziehungen nutzen (z. B. `beeinflusst_von`) + +Beziehungen sind der Klebstoff für logische Schlussfolgerungen. + +1. **Erfassung im Vault (Markdown)** + Nutze die Inline-Syntax. Du musst nichts vorab definieren. + > "Die Entscheidung für Qdrant wurde [[rel:beeinflusst_von Budgetkürzung 2024]]." + +2. **Gewichtung justieren (`config/retriever.yaml`)** + Standardmäßig sind alle Kanten gleich `1.0`. Wenn Kausalität wichtiger ist als Ähnlichkeit, definiere dies hier: + ```yaml + retriever: + edge_weights: + beeinflusst_von: 1.5 # Starker Boost: Zieht Ursachen in den Kontext + related_to: 0.5 # Schwacher Boost: Nur "nice to know" + ``` + *Effekt:* Bei der Frage nach "Qdrant" landet die "Budgetkürzung" (Ursache) im Kontext, weil die Kante stark ist. + +3. **Interpretation (Prompting)** + Das LLM erkennt im RAG-Kontext: `Qdrant --[beeinflusst_von]--> Budgetkürzung`. + Es kann daraus den Satz formulieren: *"Die Wahl fiel vermutlich aufgrund der Budgetkürzung auf Qdrant."* + +**Fazit:** Nur wenn **Daten** (Vault), **Physik** (Config) und **Semantik** (Prompt) zusammenspielen, entsteht ein intelligenter Zwilling. + +--- + +## 8) Feedback & Lernen – WP04c Das System verfügt nun über ein **Kurzzeitgedächtnis für Interaktionen**, das die Basis für zukünftiges Lernen bildet. -### 7.1 Der Feedback-Loop +### 8.1 Der Feedback-Loop 1. **Suche (Situation):** Wenn ein Nutzer eine Anfrage stellt, loggt Mindnet die "Situation": * Den Query-Text. @@ -203,7 +254,7 @@ Das System verfügt nun über ein **Kurzzeitgedächtnis für Interaktionen**, da --- -## 8) Confidence & Provenance – wozu? +## 9) Confidence & Provenance – wozu? Der Retriever kann Edges gewichten: - **provenance**: *explicit* > *rule* @@ -215,7 +266,7 @@ Eine typische Gewichtung (konfigurierbar in `retriever.yaml`) ist: --- -## 9) Semantik ausgewählter `kind`-Werte +## 10) Semantik ausgewählter `kind`-Werte - `references` – „Nutzt/erwähnt“; neutral, aber stützend für Kontext. - `related_to` – Ähnlichkeit/Verwandtschaft (symmetrisch interpretierbar). @@ -227,7 +278,7 @@ Eine typische Gewichtung (konfigurierbar in `retriever.yaml`) ist: --- -## 10) Frontmatter-Eigenschaften – Rolle & Empfehlung +## 11) Frontmatter-Eigenschaften – Rolle & Empfehlung Frontmatter-Eigenschaften (Properties) bleiben **minimiert**: - **type** – steuert Typ-Defaults via Registry (Pflicht für differenziertes Verhalten). @@ -237,7 +288,7 @@ Frontmatter-Eigenschaften (Properties) bleiben **minimiert**: --- -## 11) Lösch-/Update-Garantien (Idempotenz) +## 12) Lösch-/Update-Garantien (Idempotenz) - Jede Note hat einen stabilen **note_id** (Frontmatter/Hash). - Vor einem Upsert können *alte Chunks/Edges einer Note* gefiltert gelöscht werden (`note_id`-Filter) – das hält Collections sauber bei Re-Imports. @@ -245,7 +296,7 @@ Frontmatter-Eigenschaften (Properties) bleiben **minimiert**: --- -## 12) Beispiel – Von Markdown zu Kanten (v2.2) +## 13) Beispiel – Von Markdown zu Kanten (v2.2) **Markdown (Auszug)** # Relations Showcase @@ -264,7 +315,7 @@ Frontmatter-Eigenschaften (Properties) bleiben **minimiert**: --- -## 13) Referenzen (Projektdateien & Leitlinien) +## 14) Referenzen (Projektdateien & Leitlinien) - Import-Pipeline & Registry-Auflösung: `scripts/import_markdown.py`. - Kantenbildung (V2-Logic): `app/core/derive_edges.py`. @@ -275,7 +326,7 @@ Frontmatter-Eigenschaften (Properties) bleiben **minimiert**: --- -## 14) Workpackage Status (v2.3.0) +## 15) Workpackage Status (v2.3.0) Aktueller Implementierungsstand der Module.