docs/mindnet_functional_architecture.md aktualisiert
All checks were successful
Deploy mindnet to llm-node / deploy (push) Successful in 3s
All checks were successful
Deploy mindnet to llm-node / deploy (push) Successful in 3s
This commit is contained in:
parent
5d8e96372f
commit
fcb90db2d0
|
|
@ -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:
|
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.
|
In `config/prompts.yaml` wird die Persona definiert.
|
||||||
* **System Prompt:** Definiert die Rolle ("Ich bin dein digitales Gedächtnis...").
|
* **System Prompt:** Definiert die Rolle ("Ich bin dein digitales Gedächtnis...").
|
||||||
* **Werte im Prompt:** Pragmatismus, Transparenz (kein Halluzinieren), Vernetztes Denken.
|
* **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]`).
|
* **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")
|
### 6.2 Strategische Persönlichkeit (Ausblick WP06)
|
||||||
Ein echter KI-Zwilling spiegelt nicht nur den Stil, sondern die **Werte** des Users wider. Dies wird durch **Strategic Retrieval** erreicht:
|
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 – auch wenn diese textlich nicht direkt zur Frage passen (Re-Ranking).
|
* **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.
|
* **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.
|
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):**
|
1. **Suche (Situation):**
|
||||||
Wenn ein Nutzer eine Anfrage stellt, loggt Mindnet die "Situation":
|
Wenn ein Nutzer eine Anfrage stellt, loggt Mindnet die "Situation":
|
||||||
* Den Query-Text.
|
* 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:
|
Der Retriever kann Edges gewichten:
|
||||||
- **provenance**: *explicit* > *rule*
|
- **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.
|
- `references` – „Nutzt/erwähnt“; neutral, aber stützend für Kontext.
|
||||||
- `related_to` – Ähnlichkeit/Verwandtschaft (symmetrisch interpretierbar).
|
- `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**:
|
Frontmatter-Eigenschaften (Properties) bleiben **minimiert**:
|
||||||
- **type** – steuert Typ-Defaults via Registry (Pflicht für differenziertes Verhalten).
|
- **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).
|
- 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.
|
- 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)**
|
**Markdown (Auszug)**
|
||||||
# Relations Showcase
|
# 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`.
|
- Import-Pipeline & Registry-Auflösung: `scripts/import_markdown.py`.
|
||||||
- Kantenbildung (V2-Logic): `app/core/derive_edges.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.
|
Aktueller Implementierungsstand der Module.
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user