WP25a #20
|
|
@ -2,8 +2,8 @@
|
|||
doc_type: glossary
|
||||
audience: all
|
||||
status: active
|
||||
version: 2.9.3
|
||||
context: "Zentrales Glossar für Mindnet v2.9.3. Enthält Definitionen zu Hybrid-Cloud Resilienz, WP-14 Modularisierung, WP-15b Two-Pass Ingestion, WP-15c Multigraph-Support, WP-25 Agentic Multi-Stream RAG und Mistral-safe Parsing."
|
||||
version: 3.0.0
|
||||
context: "Zentrales Glossar für Mindnet v3.0.0. Enthält Definitionen zu Hybrid-Cloud Resilienz, WP-14 Modularisierung, WP-15b Two-Pass Ingestion, WP-15c Multigraph-Support, WP-25 Agentic Multi-Stream RAG, WP-25a Mixture of Experts (MoE) und Mistral-safe Parsing."
|
||||
---
|
||||
|
||||
# Mindnet Glossar
|
||||
|
|
@ -55,3 +55,8 @@ context: "Zentrales Glossar für Mindnet v2.9.3. Enthält Definitionen zu Hybrid
|
|||
* **Deep-Link / Section-basierter Link:** Ein Link wie `[[Note#Section]]`, der auf einen spezifischen Abschnitt innerhalb einer Note verweist. Seit v2.9.1 wird dieser in `target_id="Note"` und `target_section="Section"` aufgeteilt, um "Phantom-Knoten" zu vermeiden und Multigraph-Support zu ermöglichen.
|
||||
* **Atomic Section Logic (v3.9.9):** Chunking-Verfahren, das Sektions-Überschriften und deren Inhalte atomar in Chunks hält (Pack-and-Carry-Over). Verhindert, dass Überschriften über Chunk-Grenzen hinweg getrennt werden.
|
||||
* **Registry-First Profiling (v2.13.12):** Hierarchische Auflösung des Chunking-Profils: Frontmatter > types.yaml Typ-Config > Global Defaults. Stellt sicher, dass Note-Typen automatisch das korrekte Profil erhalten.
|
||||
* **Mixture of Experts (MoE) - WP-25a:** Profilbasierte Experten-Architektur, bei der jede Systemaufgabe (Synthese, Ingestion-Validierung, Routing, Kompression) einem dedizierten Profil zugewiesen wird, das Modell, Provider und Parameter unabhängig von der globalen Konfiguration definiert.
|
||||
* **LLM-Profil:** Zentrale Definition in `llm_profiles.yaml`, die Provider, Modell, Temperature und Fallback-Profil für eine spezifische Aufgabe festlegt (z.B. `synthesis_pro`, `tech_expert`, `ingest_validator`).
|
||||
* **Fallback-Kaskade (WP-25a):** Rekursive Fallback-Logik, bei der bei Fehlern automatisch auf das `fallback_profile` umgeschaltet wird, bis der terminale Endpunkt (`identity_safe`) erreicht wird. Schutz gegen Zirkel-Referenzen via `visited_profiles`-Tracking.
|
||||
* **Pre-Synthesis Kompression (WP-25a):** Asynchrone Verdichtung überlanger Wissens-Streams vor der Synthese, um Token-Verbrauch zu reduzieren und die Synthese zu beschleunigen. Nutzt `compression_profile` (z.B. `compression_fast`).
|
||||
* **Profilgesteuerte Validierung (WP-25a):** Semantische Kanten-Validierung in der Ingestion erfolgt zwingend über das MoE-Profil `ingest_validator` (Temperature 0.0 für Determinismus), unabhängig von der globalen Provider-Konfiguration.
|
||||
|
|
@ -1,10 +1,10 @@
|
|||
---
|
||||
doc_type: concept
|
||||
audience: architect, product_owner
|
||||
scope: ai, router, personas, resilience, agentic_rag
|
||||
scope: ai, router, personas, resilience, agentic_rag, moe
|
||||
status: active
|
||||
version: 2.9.3
|
||||
context: "Fachkonzept der hybriden KI-Persönlichkeit, Agentic Multi-Stream RAG, Provider-Kaskade und kognitiven Resilienz (Deep Fallback)."
|
||||
version: 3.0.0
|
||||
context: "Fachkonzept der hybriden KI-Persönlichkeit, Agentic Multi-Stream RAG, WP-25a Mixture of Experts (MoE), Provider-Kaskade und kognitiven Resilienz (Deep Fallback)."
|
||||
---
|
||||
|
||||
# Konzept: KI-Persönlichkeit & Router
|
||||
|
|
@ -59,13 +59,45 @@ Jeder Treffer wird mit `stream_origin` markiert, um Feedback-Optimierung pro Wis
|
|||
|
||||
---
|
||||
|
||||
## 2. Die hybride LLM-Landschaft (Resilienz-Kaskade)
|
||||
## 2. Mixture of Experts (MoE) Architektur (WP-25a)
|
||||
|
||||
Ein intelligenter Zwilling muss jederzeit verfügbar sein. Mindnet v2.8.1 nutzt eine **dreistufige Kaskade**, um Intelligenz, Kosten und Verfügbarkeit zu optimieren:
|
||||
Seit WP-25a nutzt MindNet eine **profilbasierte Experten-Steuerung** statt einer globalen Provider-Konfiguration. Jede Systemaufgabe wird einem dedizierten Profil zugewiesen, das Modell, Provider und Parameter unabhängig definiert.
|
||||
|
||||
1. **Stufe 1: Cloud-Speed (Turbo-Mode):** Primäre Wahl für komplexe Extraktionsaufgaben und schnelle RAG-Antworten mittels OpenRouter (Mistral-7B) oder Google Gemini (2.5-flash-lite).
|
||||
### 2.1 Experten-Profile
|
||||
|
||||
**Zentrale Registry (`llm_profiles.yaml`):**
|
||||
* **`synthesis_pro`:** Hochwertige Synthese für Chat-Antworten (Cloud)
|
||||
* **`tech_expert`:** Fachspezialist für Code & Technik (Claude 3.5 Sonnet)
|
||||
* **`compression_fast`:** Schnelle Kompression & Routing (Mistral 7B)
|
||||
* **`ingest_validator`:** Deterministische Validierung (Temperature 0.0)
|
||||
* **`identity_safe`:** Lokaler Anker (Ollama/Phi-3) für maximale Privacy
|
||||
|
||||
**Vorteile:**
|
||||
* **Aufgabenspezifische Optimierung:** Jede Aufgabe nutzt das optimale Modell
|
||||
* **Hardware-Optimierung:** Lokaler Anker für kleine Hardware-Umgebungen
|
||||
* **Wartbarkeit:** Zentrale Konfiguration statt verstreuter ENV-Variablen
|
||||
|
||||
### 2.2 Rekursive Fallback-Kaskade
|
||||
|
||||
Die Profile implementieren eine **automatische Fallback-Logik**:
|
||||
|
||||
1. **Primäres Profil:** System versucht das angeforderte Profil (z.B. `synthesis_pro`)
|
||||
2. **Fallback-Level 1:** Bei Fehler → `fallback_profile` (z.B. `synthesis_backup`)
|
||||
3. **Fallback-Level 2:** Bei weiterem Fehler → nächster Fallback (z.B. `identity_safe`)
|
||||
4. **Terminaler Endpunkt:** `identity_safe` hat keinen Fallback (lokales Modell als letzte Instanz)
|
||||
|
||||
**Schutzmechanismen:**
|
||||
* **Zirkuläre Referenzen:** `visited_profiles`-Tracking verhindert Endlosschleifen
|
||||
* **Background-Semaphore:** Parallele Tasks werden gedrosselt
|
||||
|
||||
### 2.3 Die hybride LLM-Landschaft (Legacy & MoE)
|
||||
|
||||
Ein intelligenter Zwilling muss jederzeit verfügbar sein. Seit WP-25a wird die Resilienz durch die **MoE Fallback-Kaskade** gewährleistet:
|
||||
|
||||
1. **Stufe 1: Cloud-Experten:** Spezialisierte Profile für verschiedene Aufgaben (z.B. `synthesis_pro`, `tech_expert`)
|
||||
2. **Stufe 2: Quoten-Resilienz:** Erkennt das System eine Drosselung durch Cloud-Provider (HTTP 429), pausiert es kontrolliert (`LLM_RATE_LIMIT_WAIT`), führt automatisierte Retries durch und schützt so den laufenden Prozess.
|
||||
3. **Stufe 3: Deep Fallback & lokale Souveränität (Ollama):** * **Technischer Fallback:** Schlagen alle Cloud-Versuche fehl, übernimmt das lokale Modell (Phi-3).
|
||||
3. **Stufe 3: Lokale Souveränität (Ollama):**
|
||||
* **Technischer Fallback:** Schlagen alle Cloud-Versuche fehl, übernimmt das lokale Modell (Phi-3) via `identity_safe` Profil.
|
||||
* **Kognitiver Fallback (v2.11.14):** Liefert die Cloud zwar technisch eine Antwort, verweigert aber inhaltlich die Verarbeitung (Silent Refusal/Policy Violation), wird ein **Deep Fallback** erzwungen, um die Datenintegrität lokal zu retten.
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,10 +1,10 @@
|
|||
---
|
||||
doc_type: technical_reference
|
||||
audience: developer, architect
|
||||
scope: backend, chat, llm_service, traffic_control, resilience, agentic_rag
|
||||
scope: backend, chat, llm_service, traffic_control, resilience, agentic_rag, moe
|
||||
status: active
|
||||
version: 2.9.3
|
||||
context: "Technische Implementierung des FastAPI-Routers, des hybriden LLMService (v3.4.2), WP-25 Agentic Multi-Stream RAG und WP-20 Resilienz-Logik."
|
||||
version: 3.0.0
|
||||
context: "Technische Implementierung des FastAPI-Routers, des hybriden LLMService (v3.5.2), WP-25 Agentic Multi-Stream RAG, WP-25a Mixture of Experts (MoE) und WP-20 Resilienz-Logik."
|
||||
---
|
||||
|
||||
# Chat Backend & Agentic Multi-Stream RAG
|
||||
|
|
@ -28,7 +28,31 @@ Der Router nutzt einen **Hybrid-Modus** mit Keyword-Fast-Path und LLM-Slow-Path:
|
|||
* Wenn unklar: Anfrage an `DecisionEngine._determine_strategy()` zur LLM-basierten Klassifizierung.
|
||||
* Nutzt `intent_router_v1` Prompt aus `prompts.yaml`.
|
||||
|
||||
### 1.2 Prompt-Auflösung (Bulletproof Resolution)
|
||||
### 1.2 Mixture of Experts (MoE) Architektur (WP-25a)
|
||||
|
||||
Seit WP-25a nutzt MindNet eine **profilbasierte Experten-Steuerung** statt einer globalen Provider-Konfiguration. Jede Systemaufgabe wird einem dedizierten Profil zugewiesen:
|
||||
|
||||
**Profil-Registry (`llm_profiles.yaml`):**
|
||||
* **`synthesis_pro`:** Hochwertige Synthese für Chat-Antworten
|
||||
* **`tech_expert`:** Fachspezialist für Code & Technik
|
||||
* **`compression_fast`:** Schnelle Kompression & Routing
|
||||
* **`ingest_validator`:** Deterministische Validierung (Temperature 0.0)
|
||||
* **`identity_safe`:** Lokaler Anker (Ollama/Phi-3) für maximale Privacy
|
||||
|
||||
**Rekursive Fallback-Kaskade:**
|
||||
Der `LLMService` (v3.5.2) implementiert eine automatische Fallback-Logik:
|
||||
1. Versucht primäres Profil (z.B. `synthesis_pro`)
|
||||
2. Bei Fehler → `fallback_profile` (z.B. `synthesis_backup`)
|
||||
3. Bei weiterem Fehler → nächster Fallback (z.B. `identity_safe`)
|
||||
4. Schutz gegen Zirkel-Referenzen via `visited_profiles`-Tracking
|
||||
|
||||
**Integration:**
|
||||
* **Intent-Routing:** Nutzt `router_profile` (z.B. `compression_fast`)
|
||||
* **Stream-Kompression:** Nutzt `compression_profile` pro Stream
|
||||
* **Synthese:** Nutzt `llm_profile` aus Strategie-Konfiguration
|
||||
* **Ingestion:** Nutzt `ingest_validator` für binäre Validierungen
|
||||
|
||||
### 1.3 Prompt-Auflösung (Bulletproof Resolution)
|
||||
|
||||
Um Kompatibilitätsprobleme mit verschachtelten YAML-Prompts zu vermeiden, nutzt der Router die Methode `llm.get_prompt()`. Diese implementiert eine **Provider-Kaskade**:
|
||||
* **Spezifischer Provider:** Das System sucht zuerst nach einem Prompt für den aktiv konfigurierten Provider (z.B. `openrouter`).
|
||||
|
|
@ -36,7 +60,7 @@ Um Kompatibilitätsprobleme mit verschachtelten YAML-Prompts zu vermeiden, nutzt
|
|||
* **Basis-Fallback:** Als letzte Instanz wird das `ollama`-Template geladen.
|
||||
* **String-Garantie:** Die Methode garantiert die Rückgabe eines Strings (selbst bei verschachtelten YAML-Dicts), was 500-Fehler bei String-Operationen wie `.replace()` oder `.format()` verhindert.
|
||||
|
||||
### 1.2 Multi-Stream Retrieval (WP-25)
|
||||
### 1.4 Multi-Stream Retrieval (WP-25)
|
||||
|
||||
Anstelle einer einzelnen Suche führt die `DecisionEngine` nun **parallele Abfragen** in spezialisierten Streams aus:
|
||||
|
||||
|
|
@ -57,7 +81,22 @@ Anstelle einer einzelnen Suche führt die `DecisionEngine` nun **parallele Abfra
|
|||
* **Stream-Tracing:** Jeder Treffer wird mit `stream_origin` markiert für Feedback-Optimierung.
|
||||
* **Fehlerbehandlung:** Einzelne Stream-Fehler blockieren nicht die gesamte Anfrage.
|
||||
|
||||
### 1.3 Wissens-Synthese (WP-25)
|
||||
### 1.5 Pre-Synthesis Kompression (WP-25a)
|
||||
|
||||
Wissens-Streams, die den Schwellenwert (`compression_threshold`) überschreiten, werden **asynchron verdichtet**, bevor sie die Synthese erreichen:
|
||||
|
||||
**Kompression-Logik:**
|
||||
* **Schwellenwert:** Konfigurierbar pro Stream (z.B. 2500 Zeichen für Values Stream)
|
||||
* **Profil:** Nutzt `compression_profile` (z.B. `compression_fast` für schnelle Zusammenfassung)
|
||||
* **Parallelisierung:** Mehrere Streams können gleichzeitig komprimiert werden
|
||||
* **Fehlerbehandlung:** Kompressions-Fehler blockieren nicht die Synthese (Original-Content wird verwendet)
|
||||
|
||||
**Vorteile:**
|
||||
* Reduziert Token-Verbrauch bei langen Streams
|
||||
* Beschleunigt Synthese durch kürzere Kontexte
|
||||
* Erhält Relevanz durch intelligente Zusammenfassung
|
||||
|
||||
### 1.6 Wissens-Synthese (WP-25/25a)
|
||||
|
||||
Die Zusammenführung der Daten erfolgt über spezialisierte Templates in der `prompts.yaml`:
|
||||
|
||||
|
|
@ -66,20 +105,29 @@ Die Zusammenführung der Daten erfolgt über spezialisierte Templates in der `pr
|
|||
* **Pre-Initialization:** Alle möglichen Stream-Variablen werden vorab initialisiert (verhindert KeyErrors).
|
||||
* **Provider-spezifische Templates:** Separate Versionen für Ollama, Gemini und OpenRouter.
|
||||
|
||||
**Synthese-Strategien:**
|
||||
* **FACT_WHAT/FACT_WHEN:** Kombiniert Fakten, Biographie und Technik.
|
||||
* **DECISION:** Wägt Fakten gegen Werte ab, evaluiert Risiken.
|
||||
* **EMPATHY:** Fokus auf Biographie und Werte.
|
||||
* **CODING:** Technik und Fakten.
|
||||
**Synthese-Strategien (Profil-gesteuert):**
|
||||
* **FACT_WHAT/FACT_WHEN:** Nutzt `synthesis_pro` - Kombiniert Fakten, Biographie und Technik.
|
||||
* **DECISION:** Nutzt `synthesis_pro` - Wägt Fakten gegen Werte ab, evaluiert Risiken.
|
||||
* **EMPATHY:** Nutzt `synthesis_pro` - Fokus auf Biographie und Werte.
|
||||
* **CODING:** Nutzt `tech_expert` - Spezialisiertes Modell für Code & Technik.
|
||||
|
||||
### 1.4 RAG Flow (Technisch)
|
||||
**Profil-Auflösung:**
|
||||
Jede Strategie kann ein individuelles `llm_profile` definieren. Fehlt diese Angabe, wird `synthesis_pro` als Standard verwendet.
|
||||
|
||||
### 1.7 RAG Flow (Technisch - WP-25a)
|
||||
|
||||
Wenn der Intent nicht `INTERVIEW` ist, wird folgender Flow ausgeführt:
|
||||
|
||||
1. **Intent Detection:** Hybrid Router klassifiziert die Anfrage.
|
||||
1. **Intent Detection:** Hybrid Router klassifiziert die Anfrage via `router_profile` (z.B. `compression_fast`).
|
||||
2. **Multi-Stream Retrieval:**
|
||||
* Parallele Abfragen in spezialisierten Streams via `DecisionEngine._execute_parallel_streams()`.
|
||||
* Jeder Stream nutzt individuelle Filter, Edge-Boosts und Query-Templates.
|
||||
3. **Pre-Synthesis Kompression (WP-25a):**
|
||||
* Streams über `compression_threshold` werden via `compression_profile` verdichtet.
|
||||
* Parallelisierung über `asyncio.gather()` für mehrere Streams gleichzeitig.
|
||||
4. **Wissens-Synthese:**
|
||||
* Strategie-spezifisches `llm_profile` (z.B. `tech_expert` für CODING) steuert die finale Antwortgenerierung.
|
||||
* Fallback-Kaskade bei Fehlern (automatisch via LLMService).
|
||||
3. **Context Formatting:**
|
||||
* Stream-Ergebnisse werden in formatierte Kontext-Strings umgewandelt.
|
||||
* **Ollama Context-Throttling:** Kontext wird auf `MAX_OLLAMA_CHARS` begrenzt (Standard: 10.000).
|
||||
|
|
|
|||
|
|
@ -1,10 +1,10 @@
|
|||
---
|
||||
doc_type: technical_reference
|
||||
audience: developer, admin
|
||||
scope: configuration, env, registry, scoring, resilience, modularization, agentic_rag
|
||||
scope: configuration, env, registry, scoring, resilience, modularization, agentic_rag, moe
|
||||
status: active
|
||||
version: 2.9.3
|
||||
context: "Umfassende Referenztabellen für Umgebungsvariablen (inkl. Hybrid-Cloud & WP-76), YAML-Konfigurationen, Edge Registry Struktur und WP-25 Multi-Stream RAG unter Berücksichtigung von WP-14."
|
||||
version: 3.0.0
|
||||
context: "Umfassende Referenztabellen für Umgebungsvariablen (inkl. Hybrid-Cloud & WP-76), YAML-Konfigurationen, Edge Registry Struktur, WP-25 Multi-Stream RAG und WP-25a Mixture of Experts (MoE) unter Berücksichtigung von WP-14."
|
||||
---
|
||||
|
||||
# Konfigurations-Referenz
|
||||
|
|
@ -329,6 +329,80 @@ Alle möglichen Stream-Variablen werden vorab initialisiert (verhindert KeyError
|
|||
**Provider-spezifische Templates:**
|
||||
Separate Versionen für Ollama, Gemini und OpenRouter.
|
||||
|
||||
---
|
||||
|
||||
## 6. LLM Profile Registry (`llm_profiles.yaml` v1.3.0)
|
||||
|
||||
Seit WP-25a nutzt MindNet eine **Mixture of Experts (MoE)** Architektur mit profilbasierter Experten-Steuerung. Jede Systemaufgabe (Synthese, Ingestion-Validierung, Routing, Kompression) wird einem dedizierten Profil zugewiesen, das Modell, Provider und Parameter unabhängig von der globalen Konfiguration definiert.
|
||||
|
||||
### 6.1 Profil-Struktur
|
||||
|
||||
Jedes Profil definiert:
|
||||
* **`provider`:** Cloud-Provider (`openrouter`, `gemini`, `ollama`)
|
||||
* **`model`:** Spezifisches Modell (z.B. `mistralai/mistral-7b-instruct:free`)
|
||||
* **`temperature`:** Kreativität/Determinismus (0.0 = deterministisch, 1.0 = kreativ)
|
||||
* **`fallback_profile`:** Optional: Name des Fallback-Profils bei Fehlern
|
||||
* **`dimensions`:** Optional: Für Embedding-Profile (z.B. 768 für nomic-embed-text)
|
||||
|
||||
**Beispiel:**
|
||||
```yaml
|
||||
synthesis_pro:
|
||||
provider: "openrouter"
|
||||
model: "gemini-1.5-mistralai/mistral-7b-instruct:free"
|
||||
temperature: 0.7
|
||||
fallback_profile: "synthesis_backup"
|
||||
```
|
||||
|
||||
### 6.2 Verfügbare Experten-Profile
|
||||
|
||||
| Profil | Provider | Modell | Temperature | Fallback | Zweck |
|
||||
| :--- | :--- | :--- | :--- | :--- | :--- |
|
||||
| **`synthesis_pro`** | openrouter | gemini-1.5-mistralai/mistral-7b-instruct:free | 0.7 | `synthesis_backup` | Hochwertige Synthese (Chat-Antworten) |
|
||||
| **`synthesis_backup`** | openrouter | mistralai/mistral-large | 0.5 | `identity_safe` | Backup-Cloud-Experte (Resilienz) |
|
||||
| **`tech_expert`** | openrouter | anthropic/claude-3.5-sonnet | 0.3 | `synthesis_pro` | Fachspezialist für Code & Technik |
|
||||
| **`compression_fast`** | openrouter | mistralai/mistral-7b-instruct:free | 0.1 | `identity_safe` | Schnelle Kompression & Routing |
|
||||
| **`ingest_extractor`** | openrouter | mistralai/mistral-7b-instruct:free | 0.2 | `synthesis_backup` | Extraktion komplexer Datenstrukturen |
|
||||
| **`ingest_validator`** | openrouter | mistralai/mistral-7b-instruct:free | 0.0 | `compression_fast` | Binäre Prüfungen (YES/NO, deterministisch) |
|
||||
| **`identity_safe`** | ollama | phi3:mini | 0.2 | *(kein Fallback)* | Lokaler Anker & Privacy (terminaler Endpunkt) |
|
||||
| **`embedding_expert`** | ollama | nomic-embed-text | - | - | Embedding-Modell (dimensions: 768) |
|
||||
|
||||
### 6.3 Fallback-Kaskade (WP-25a)
|
||||
|
||||
Die Profile implementieren eine **rekursive Fallback-Kaskade**:
|
||||
|
||||
1. **Primäres Profil:** System versucht das angeforderte Profil (z.B. `synthesis_pro`)
|
||||
2. **Fallback-Level 1:** Bei Fehler → `fallback_profile` (z.B. `synthesis_backup`)
|
||||
3. **Fallback-Level 2:** Bei weiterem Fehler → nächster Fallback (z.B. `identity_safe`)
|
||||
4. **Terminaler Endpunkt:** `identity_safe` hat keinen Fallback (lokales Modell als letzte Instanz)
|
||||
|
||||
**Schutzmechanismen:**
|
||||
* **Zirkuläre Referenzen:** `visited_profiles`-Tracking verhindert Endlosschleifen
|
||||
* **Background-Semaphore:** Parallele Tasks werden gedrosselt (konfigurierbar via `BACKGROUND_LIMIT`)
|
||||
|
||||
### 6.4 Integration in Decision Engine
|
||||
|
||||
Die `decision_engine.yaml` referenziert Profile über:
|
||||
* **`router_profile`:** Profil für Intent-Erkennung (z.B. `compression_fast`)
|
||||
* **`llm_profile`:** Profil für Strategie-spezifische Synthese (z.B. `tech_expert` für CODING)
|
||||
* **`compression_profile`:** Profil für Stream-Kompression (z.B. `compression_fast`)
|
||||
|
||||
**Stream-Konfiguration:**
|
||||
```yaml
|
||||
values_stream:
|
||||
llm_profile: "identity_safe" # Lokales Modell für Privacy
|
||||
compression_profile: "identity_safe"
|
||||
compression_threshold: 2500
|
||||
```
|
||||
|
||||
### 6.5 Environment-Variablen
|
||||
|
||||
| Variable | Default | Beschreibung |
|
||||
| :--- | :--- | :--- |
|
||||
| `MINDNET_LLM_PROFILES_PATH` | `config/llm_profiles.yaml` | Pfad zur Profil-Registry |
|
||||
|
||||
**Hinweis:** Die `.env` Variablen `MINDNET_LLM_PROVIDER`, `MINDNET_LLM_MODEL` etc. dienen nur noch als Fallback, wenn kein Profil angegeben wird.
|
||||
|
||||
---
|
||||
|
||||
Auszug aus der decision_engine.yaml
|
||||
```yaml
|
||||
|
|
|
|||
|
|
@ -1,10 +1,10 @@
|
|||
---
|
||||
doc_type: technical_reference
|
||||
audience: developer, devops
|
||||
scope: backend, ingestion, smart_edges, edge_registry, modularization
|
||||
scope: backend, ingestion, smart_edges, edge_registry, modularization, moe
|
||||
status: active
|
||||
version: 2.13.12
|
||||
context: "Detaillierte technische Beschreibung der Import-Pipeline, Two-Pass-Workflow (WP-15b) und modularer Datenbank-Architektur (WP-14). Integriert Mistral-safe Parsing und Deep Fallback."
|
||||
version: 2.14.0
|
||||
context: "Detaillierte technische Beschreibung der Import-Pipeline, Two-Pass-Workflow (WP-15b), modularer Datenbank-Architektur (WP-14) und WP-25a profilgesteuerte Validierung. Integriert Mistral-safe Parsing und Deep Fallback."
|
||||
---
|
||||
|
||||
# Ingestion Pipeline & Smart Processing
|
||||
|
|
@ -50,9 +50,11 @@ Der Prozess ist **asynchron**, **idempotent** und wird nun in zwei logische Durc
|
|||
* Bei Änderungen löscht `purge_artifacts()` via `app.core.ingestion.ingestion_db` alle alten Chunks und Edges der Note.
|
||||
* Die Namensauflösung erfolgt nun über das modularisierte `database`-Paket.
|
||||
10. **Chunking anwenden:** Zerlegung des Textes basierend auf dem ermittelten Profil (siehe Kap. 3).
|
||||
11. **Smart Edge Allocation & Semantic Validation (WP-15b):**
|
||||
11. **Smart Edge Allocation & Semantic Validation (WP-15b / WP-25a):**
|
||||
* Der `SemanticAnalyzer` schlägt Kanten-Kandidaten vor.
|
||||
* **Validierung:** Jeder Kandidat wird durch das LLM semantisch gegen das Ziel im **LocalBatchCache** geprüft.
|
||||
* **Validierung (WP-25a):** Jeder Kandidat wird durch das LLM semantisch gegen das Ziel im **LocalBatchCache** geprüft.
|
||||
* **Profilgesteuerte Validierung:** Nutzt das MoE-Profil `ingest_validator` (Temperature 0.0 für maximale Determinismus).
|
||||
* **Fallback-Kaskade:** Bei Fehlern erfolgt automatischer Fallback via `fallback_profile` (z.B. `compression_fast` → `identity_safe`).
|
||||
* **Traffic Control:** Nutzung der neutralen `clean_llm_text` Funktion zur Bereinigung von Steuerzeichen (<s>, [OUT]).
|
||||
* **Deep Fallback (v2.11.14):** Erkennt "Silent Refusals". Liefert die Cloud keine verwertbaren Kanten, wird ein lokaler Fallback via Ollama erzwungen.
|
||||
12. **Inline-Kanten finden:** Parsing von `[[rel:...]]` und Callouts.
|
||||
|
|
@ -60,7 +62,9 @@ Der Prozess ist **asynchron**, **idempotent** und wird nun in zwei logische Durc
|
|||
* Jede Kante wird via `EdgeRegistry` normalisiert (z.B. `basiert_auf` -> `based_on`).
|
||||
* Unbekannte Typen werden in `unknown_edges.jsonl` protokolliert.
|
||||
14. **Default- & Strukturkanten:** Anwendung der `edge_defaults` und Erzeugung von Systemkanten (`belongs_to`, `next`, `prev`).
|
||||
15. **Embedding (Async):** Generierung der Vektoren via `nomic-embed-text` (768 Dimensionen).
|
||||
15. **Embedding (Async - WP-25a):** Generierung der Vektoren via `embedding_expert` Profil aus `llm_profiles.yaml`.
|
||||
* **Profil-Auflösung:** Das `EmbeddingsClient` lädt Modell und Dimensionen direkt aus dem Profil (z.B. `nomic-embed-text`, 768 Dimensionen).
|
||||
* **Konsolidierung:** Entfernung der Embedding-Konfiguration aus der `.env` zugunsten zentraler Profil-Registry.
|
||||
16. **Database Sync (WP-14):** Batch-Upsert aller Points in die Collections `{prefix}_chunks` und `{prefix}_edges` über die zentrale Infrastruktur.
|
||||
|
||||
---
|
||||
|
|
@ -189,4 +193,6 @@ Kanten werden nach Vertrauenswürdigkeit (`provenance`) priorisiert. Die höhere
|
|||
|
||||
**2. Mistral-safe Parsing:** Automatisierte Bereinigung von LLM-Antworten in `ingestion_validation.py`. Stellt sicher, dass semantische Entscheidungen ("YES"/"NO") nicht durch technische Header verfälscht werden.
|
||||
|
||||
**3. Profilgesteuerte Validierung (WP-25a):** Die semantische Kanten-Validierung erfolgt zwingend über das MoE-Profil `ingest_validator` (Temperature 0.0 für Determinismus). Dies gewährleistet konsistente binäre Entscheidungen (YES/NO) unabhängig von der globalen Provider-Konfiguration.
|
||||
|
||||
**3. Purge Integrity:** Validierung, dass vor jedem Upsert alle assoziierten Artefakte in den Collections `{prefix}_chunks` und `{prefix}_edges` gelöscht wurden, um Daten-Duplikate zu vermeiden.
|
||||
|
|
@ -1,10 +1,10 @@
|
|||
---
|
||||
doc_type: operations_manual
|
||||
audience: admin, devops
|
||||
scope: deployment, maintenance, backup, edge_registry
|
||||
scope: deployment, maintenance, backup, edge_registry, moe
|
||||
status: active
|
||||
version: 2.7.0
|
||||
context: "Installationsanleitung, Systemd-Units und Wartungsprozesse für Mindnet v2.7."
|
||||
version: 3.0.0
|
||||
context: "Installationsanleitung, Systemd-Units und Wartungsprozesse für Mindnet v3.0.0 inklusive WP-25a Mixture of Experts (MoE) Konfiguration."
|
||||
---
|
||||
|
||||
# Admin Operations Guide
|
||||
|
|
@ -46,7 +46,7 @@ Um Abstürze der Vektordatenbank bei einer hohen Anzahl an Collections (z. B. du
|
|||
Hintergrund: Qdrant öffnet für jedes Segment einer Collection mehrere Dateien. Ohne diese Erhöhung führt das Standard-Linux-Limit (1024) zum Absturz mit dem Fehler os error 24 (Too many open files).
|
||||
|
||||
### 1.3 Ollama (Modelle)
|
||||
**Wichtig:** Seit v2.4 ist `nomic-embed-text` Pflicht für Embeddings.
|
||||
**Wichtig:** Seit v2.4 ist `nomic-embed-text` Pflicht für Embeddings. Seit WP-25a wird die Modell-Konfiguration zentral über `llm_profiles.yaml` gesteuert.
|
||||
|
||||
```bash
|
||||
# Modelle laden
|
||||
|
|
@ -57,6 +57,14 @@ ollama pull nomic-embed-text
|
|||
curl http://localhost:11434/api/generate -d '{"model": "phi3:mini", "prompt":"Hi"}'
|
||||
```
|
||||
|
||||
**WP-25a: LLM-Profil-Konfiguration**
|
||||
Die LLM-Steuerung erfolgt nun primär über `config/llm_profiles.yaml` statt ENV-Variablen:
|
||||
* **Zentrale Registry:** Alle Experten-Profile (Synthese, Validierung, Kompression) sind in einer Datei definiert
|
||||
* **Fallback-Kaskade:** Automatische Resilienz bei Provider-Fehlern
|
||||
* **ENV-Variablen:** `MINDNET_LLM_PROVIDER`, `MINDNET_LLM_MODEL` etc. dienen nur noch als Fallback
|
||||
|
||||
Siehe [Konfigurations-Referenz](../03_Technical_References/03_tech_configuration.md#6-llm-profile-registry-llm_profilesyaml-v130) für Details.
|
||||
|
||||
---
|
||||
|
||||
## 2. Deployment (Systemd Services)
|
||||
|
|
|
|||
|
|
@ -393,13 +393,24 @@ Mindnet lernt nicht durch Training (Fine-Tuning), sondern durch **Konfiguration*
|
|||
edge_defaults: ["blocks"] # Automatische Kante
|
||||
detection_keywords: ["gefahr", "risiko"]
|
||||
```
|
||||
2. **Strategie (`config/decision_engine.yaml` v3.1.6, WP-25):**
|
||||
2. **Strategie (`config/decision_engine.yaml` v3.2.2, WP-25/25a):**
|
||||
```yaml
|
||||
DECISION:
|
||||
use_streams: ["values_stream", "facts_stream", "risk_stream"] # WP-25: Multi-Stream
|
||||
llm_profile: "synthesis_pro" # WP-25a: MoE-Profil für Synthese
|
||||
inject_types: ["value", "risk"] # Legacy: Fallback für nicht-Stream-Typen
|
||||
```
|
||||
*Ergebnis (WP-25):* Wenn der Intent `DECISION` erkannt wird, führt das System parallele Abfragen in Values, Facts und Risk Streams aus und synthetisiert die Ergebnisse.
|
||||
*Ergebnis (WP-25/25a):* Wenn der Intent `DECISION` erkannt wird, führt das System parallele Abfragen in Values, Facts und Risk Streams aus, komprimiert überlange Streams via `compression_profile` und synthetisiert die Ergebnisse mit dem `synthesis_pro` Profil.
|
||||
|
||||
3. **LLM-Profil (`config/llm_profiles.yaml` v1.3.0, WP-25a):**
|
||||
```yaml
|
||||
synthesis_pro:
|
||||
provider: "openrouter"
|
||||
model: "gemini-1.5-mistralai/mistral-7b-instruct:free"
|
||||
temperature: 0.7
|
||||
fallback_profile: "synthesis_backup"
|
||||
```
|
||||
*Ergebnis (WP-25a):* Zentrale Steuerung von Provider, Modell und Temperature pro Aufgabe. Automatische Fallback-Kaskade bei Fehlern.
|
||||
|
||||
### Workflow B: Graph-Farben ändern
|
||||
1. Öffne `app/frontend/ui_config.py`.
|
||||
|
|
|
|||
|
|
@ -194,7 +194,10 @@ Der bisherige WP-15 Ansatz litt unter Halluzinationen (erfundene Kantentypen), h
|
|||
3. **Self-Learning Loop:** Protokollierung unbekannter Kanten in `unknown_edges.jsonl`.
|
||||
|
||||
### WP-25: Agentic Multi-Stream RAG Orchestration
|
||||
**Status:** ✅ Fertig (v2.9.3)
|
||||
**Status:** ✅ Fertig (v3.0.0)
|
||||
|
||||
### WP-25a: Mixture of Experts (MoE) & Fallback-Kaskade
|
||||
**Status:** ✅ Fertig (v3.0.0)
|
||||
|
||||
**Ergebnis:** Transformation von Mindnet von einer klassischen, linearen RAG-Architektur zu einer **Agentic Multi-Stream Engine**. Das System agiert nun als intelligenter Orchestrator, der Nutzeranfragen analysiert, in parallele Wissens-Streams aufteilt und diese zu einer kontextreichen, wertebasierten Antwort synthetisiert.
|
||||
|
||||
|
|
@ -212,8 +215,26 @@ Der bisherige WP-15 Ansatz litt unter Halluzinationen (erfundene Kantentypen), h
|
|||
- decision_engine.yaml v3.1.6: Multi-Stream Konfiguration
|
||||
- prompts.yaml v3.1.2: Stream-Templates
|
||||
|
||||
**Ausblick (WP-25a):**
|
||||
- Pre-Synthesis: LLM-basierte Komprimierung überlanger Streams
|
||||
**Ergebnis (WP-25a):** Transformation von MindNet von einer provider-basierten Steuerung auf eine **profilbasierte Experten-Architektur (Mixture of Experts)**. Jede Systemaufgabe wird einem dedizierten Profil zugewiesen, das Modell, Provider und Parameter unabhängig definiert.
|
||||
|
||||
**Kern-Features:**
|
||||
1. **Experten-Steuerung:** Zentrale Profile-Registry (`llm_profiles.yaml`) für alle LLM-Aufgaben
|
||||
2. **Rekursive Fallback-Kaskade:** Automatische Resilienz bei Provider-Fehlern mit Schutz gegen Zirkel-Referenzen
|
||||
3. **Pre-Synthesis Kompression:** Asynchrone Verdichtung überlanger Wissens-Streams vor der Synthese
|
||||
4. **Profilgesteuerte Ingestion:** Deterministische Validierung via `ingest_validator` (Temperature 0.0)
|
||||
5. **Embedding-Konsolidierung:** Zentrale Steuerung des Embedding-Modells über `embedding_expert` Profil
|
||||
6. **Startup-Schutz:** Validierung der YAML-Konfigurationen beim Booten
|
||||
|
||||
**Technische Details:**
|
||||
- LLM Service v3.5.2: Rekursive Fallback-Kaskade
|
||||
- Decision Engine v1.2.1: Profile-Driven Orchestration
|
||||
- Ingestion Processor v2.14.0: Profilgesteuerte Validierung
|
||||
- Embeddings Client v2.6.0: Profil-basierte Modell-Auflösung
|
||||
- llm_profiles.yaml v1.3.0: Zentrale Experten-Registry
|
||||
- decision_engine.yaml v3.2.2: Decoupled MoE Logic
|
||||
|
||||
**Ausblick (WP-25b):**
|
||||
- Prompt-Orchestration & Model-Specific Tuning
|
||||
- Kontext-Budgeting: Intelligente Token-Verteilung
|
||||
- Stream-specific Provider: Unterschiedliche KI-Modelle pro Wissensbereich
|
||||
---
|
||||
|
|
|
|||
103
docs/99_Archive/WP25a_merge_commit.md
Normal file
103
docs/99_Archive/WP25a_merge_commit.md
Normal file
|
|
@ -0,0 +1,103 @@
|
|||
# Branch Merge Commit: WP-25a
|
||||
|
||||
**Branch:** `WP25a`
|
||||
**Target:** `main`
|
||||
**Version:** v3.1.0
|
||||
**Date:** 2026-01-02
|
||||
|
||||
---
|
||||
|
||||
## Commit Message
|
||||
|
||||
```
|
||||
feat: Mixture of Experts (MoE) & Fallback-Kaskade (v3.0.0)
|
||||
|
||||
### Mixture of Experts (MoE) Architektur
|
||||
- Übergang von provider-basierter zu profilbasierter Experten-Steuerung
|
||||
- Zentrale Experten-Registry (`llm_profiles.yaml` v1.3.0)
|
||||
- Aufgabenspezifische Profile: synthesis_pro, tech_expert, compression_fast, ingest_validator, identity_safe, embedding_expert
|
||||
- Hardware-Optimierung: Lokaler Anker (Ollama/Phi-3) für maximale Privacy
|
||||
|
||||
### Rekursive Fallback-Kaskade
|
||||
- Implementierung in `app/services/llm_service.py` (v3.5.2)
|
||||
- Automatische Fallback-Logik bei Provider-Fehlern
|
||||
- Schutz gegen Zirkel-Referenzen via `visited_profiles`-Tracking
|
||||
- Background-Semaphore für parallele Tasks
|
||||
|
||||
### Pre-Synthesis Kompression (Module A)
|
||||
- Asynchrone Verdichtung überlanger Wissens-Streams
|
||||
- Konfigurierbare Schwellenwerte pro Stream (`compression_threshold`)
|
||||
- Profil-gesteuerte Kompression via `compression_profile`
|
||||
- Parallelisierung über `asyncio.gather()`
|
||||
|
||||
### Profilgesteuerte Ingestion
|
||||
- Semantische Kanten-Validierung via `ingest_validator` (Temperature 0.0)
|
||||
- Embedding-Konsolidierung über `embedding_expert` Profil
|
||||
- Entfernung der Embedding-Konfiguration aus `.env`
|
||||
|
||||
### Startup-Schutz & Audit-Fixes
|
||||
- Validierung von `llm_profiles.yaml` und `decision_engine.yaml` beim Booten
|
||||
- Behebung der Sicherheitslücke in `DecisionEngine` (Fallback-Aufrufe nutzen nun `profile_name`)
|
||||
- Circular Import Fix: Ingestion-Module nutzen neutrale `app.core.registry`
|
||||
|
||||
### Code-Komponenten
|
||||
- `app/services/llm_service.py`: v3.5.2 (Rekursive Fallback-Kaskade)
|
||||
- `app/core/retrieval/decision_engine.py`: v1.2.1 (Profile-Driven Orchestration)
|
||||
- `app/core/ingestion/ingestion_processor.py`: v2.14.0 (Profilgesteuerte Validierung)
|
||||
- `app/core/ingestion/ingestion_validation.py`: v2.13.0 (MoE-Profil Integration)
|
||||
- `app/services/embeddings_client.py`: v2.6.0 (Profil-basierte Modell-Auflösung)
|
||||
- `app/main.py`: v1.1.0 (Startup-Validierung)
|
||||
|
||||
### Konfiguration
|
||||
- `config/llm_profiles.yaml`: v1.3.0 (Zentrale Experten-Registry)
|
||||
- `config/decision_engine.yaml`: v3.2.2 (Decoupled MoE Logic, compression_thresholds)
|
||||
|
||||
### Dokumentation
|
||||
- `03_tech_configuration.md`: llm_profiles.yaml Dokumentation
|
||||
- `03_tech_chat_backend.md`: MoE Architektur und Fallback-Kaskade
|
||||
- `02_concept_ai_personality.md`: Mixture of Experts Konzept
|
||||
- `03_tech_ingestion_pipeline.md`: Profilgesteuerte Validierung
|
||||
- `00_glossary.md`: Neue Begriffe (MoE, Profile, Fallback-Kaskade)
|
||||
- `05_developer_guide.md`: Teach-the-AI mit Profilen
|
||||
- `04_admin_operations.md`: Konfigurations-Updates
|
||||
- `06_active_roadmap.md`: WP25a als abgeschlossen markiert
|
||||
|
||||
### Breaking Changes
|
||||
- Keine Breaking Changes für Endbenutzer
|
||||
- ENV-Variablen `MINDNET_LLM_PROVIDER`, `MINDNET_LLM_MODEL` etc. dienen nur noch als Fallback
|
||||
- Neue Konfigurationsdatei `llm_profiles.yaml` ist erforderlich (Startup-Validierung)
|
||||
|
||||
### Migration
|
||||
- Administratoren müssen `config/llm_profiles.yaml` erstellen
|
||||
- System startet nicht, wenn `llm_profiles.yaml` fehlt oder ungültig ist
|
||||
- ENV-Variablen bleiben als Fallback erhalten
|
||||
|
||||
---
|
||||
|
||||
**Status:** ✅ WP-25a ist zu 100% implementiert und audit-geprüft.
|
||||
**Nächster Schritt:** WP-25b (Prompt-Orchestration & Model-Specific Tuning).
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Zusammenfassung
|
||||
|
||||
Dieser Merge führt die **Mixture of Experts (MoE) Architektur** in MindNet ein. Das System nutzt nun eine profilbasierte Experten-Steuerung statt einer globalen Provider-Konfiguration. Jede Systemaufgabe wird einem dedizierten Profil zugewiesen, das Modell, Provider und Parameter unabhängig definiert.
|
||||
|
||||
**Kern-Features:**
|
||||
- Zentrale Experten-Registry (`llm_profiles.yaml`)
|
||||
- Rekursive Fallback-Kaskade mit Schutz gegen Zirkel-Referenzen
|
||||
- Pre-Synthesis Kompression für überlange Wissens-Streams
|
||||
- Profilgesteuerte Ingestion mit deterministischer Validierung
|
||||
- Startup-Schutz und Audit-Fixes
|
||||
|
||||
**Technische Integrität:**
|
||||
- Alle LLM-Aufrufe nutzen nun die Profilsteuerung
|
||||
- Startup-Validierung verhindert fehlerhafte Konfigurationen
|
||||
- Circular Import Fix verbessert Wartbarkeit
|
||||
|
||||
**Dokumentation:**
|
||||
- Vollständige Aktualisierung aller relevanten Dokumente
|
||||
- Neue Begriffe im Glossar
|
||||
- Konfigurations-Referenz erweitert
|
||||
- Developer Guide aktualisiert
|
||||
186
docs/99_Archive/WP25a_release_notes.md
Normal file
186
docs/99_Archive/WP25a_release_notes.md
Normal file
|
|
@ -0,0 +1,186 @@
|
|||
# MindNet v3.0.0 - Release Notes: WP-25a
|
||||
|
||||
**Release Date:** 2026-01-02
|
||||
**Type:** Feature Release - Mixture of Experts (MoE) & Fallback-Kaskade
|
||||
**Version:** 3.1.0 (WP-25a)
|
||||
|
||||
---
|
||||
|
||||
## 🎯 Überblick
|
||||
|
||||
Mit WP-25a wurde MindNet von einer provider-basierten Steuerung auf eine **profilbasierte Experten-Architektur (Mixture of Experts)** umgestellt. Jede Systemaufgabe (Synthese, Ingestion-Validierung, Routing, Kompression) wird nun einem dedizierten Profil zugewiesen, das Modell, Provider und Parameter unabhängig von der globalen Konfiguration definiert.
|
||||
|
||||
Diese Version markiert einen fundamentalen Architektur-Sprung: Von einer monolithischen LLM-Konfiguration hin zu einer modularen, aufgabenspezifischen Experten-Steuerung mit automatischer Resilienz.
|
||||
|
||||
---
|
||||
|
||||
## ✨ Neue Features
|
||||
|
||||
### 1. Mixture of Experts (MoE) Architektur
|
||||
|
||||
**Zentrale Experten-Steuerung (`llm_profiles.yaml` v1.3.0):**
|
||||
* Einführung von Experten-Profilen für spezifische Aufgaben:
|
||||
* `synthesis_pro`: Hochwertige Synthese für Chat-Antworten
|
||||
* `tech_expert`: Fachspezialist für Code & Technik (Claude 3.5 Sonnet)
|
||||
* `compression_fast`: Schnelle Kompression & Routing (Mistral 7B)
|
||||
* `ingest_validator`: Deterministische Validierung (Temperature 0.0)
|
||||
* `identity_safe`: Lokaler Anker (Ollama/Phi-3) für maximale Privacy
|
||||
* `embedding_expert`: Zentrale Steuerung des Embedding-Modells
|
||||
|
||||
**Vorteile:**
|
||||
* **Aufgabenspezifische Optimierung:** Jede Aufgabe nutzt das optimale Modell
|
||||
* **Hardware-Optimierung:** Lokaler Anker für kleine Hardware-Umgebungen
|
||||
* **Wartbarkeit:** Zentrale Konfiguration statt verstreuter ENV-Variablen
|
||||
|
||||
### 2. Rekursive Fallback-Kaskade
|
||||
|
||||
**Implementierung (`app/services/llm_service.py` v3.5.2):**
|
||||
* Automatische Fallback-Logik bei Provider-Fehlern:
|
||||
1. Versucht primäres Profil (z.B. `synthesis_pro`)
|
||||
2. Bei Fehler → `fallback_profile` (z.B. `synthesis_backup`)
|
||||
3. Bei weiterem Fehler → nächster Fallback (z.B. `identity_safe`)
|
||||
4. Terminaler Endpunkt: `identity_safe` hat keinen Fallback (lokales Modell)
|
||||
|
||||
**Schutzmechanismen:**
|
||||
* **Zirkuläre Referenzen:** `visited_profiles`-Tracking verhindert Endlosschleifen
|
||||
* **Background-Semaphore:** Parallele Tasks werden gedrosselt (konfigurierbar via `BACKGROUND_LIMIT`)
|
||||
|
||||
### 3. Pre-Synthesis Kompression (Module A)
|
||||
|
||||
**Implementierung (`app/core/retrieval/decision_engine.py` v1.2.1):**
|
||||
* Wissens-Streams, die den Schwellenwert (`compression_threshold`) überschreiten, werden **asynchron verdichtet**, bevor sie die Synthese erreichen
|
||||
* **Konfigurierbar pro Stream:** Z.B. 2500 Zeichen für Values Stream, 3500 für Facts Stream
|
||||
* **Profil-gesteuert:** Nutzt `compression_profile` (z.B. `compression_fast` für schnelle Zusammenfassung)
|
||||
* **Parallelisierung:** Mehrere Streams können gleichzeitig komprimiert werden
|
||||
|
||||
**Vorteile:**
|
||||
* Reduziert Token-Verbrauch bei langen Streams
|
||||
* Beschleunigt Synthese durch kürzere Kontexte
|
||||
* Erhält Relevanz durch intelligente Zusammenfassung
|
||||
|
||||
### 4. Profilgesteuerte Ingestion (Wissens-Gatekeeper)
|
||||
|
||||
**Implementierung:**
|
||||
* `app/core/ingestion/ingestion_processor.py` v2.14.0
|
||||
* `app/core/ingestion/ingestion_validation.py` v2.13.0
|
||||
|
||||
**Features:**
|
||||
* Semantische Kanten-Validierung erfolgt zwingend über das MoE-Profil `ingest_validator` (Temperature 0.0 für Determinismus)
|
||||
* **Embedding-Konsolidierung:** Der `EmbeddingsClient` (v2.6.0) bezieht Modellvorgaben und Dimensionen direkt aus dem Profil `embedding_expert`
|
||||
* Entfernung der Embedding-Konfiguration aus der `.env` zugunsten zentraler Profil-Registry
|
||||
|
||||
### 5. Startup-Schutz & Audit-Fixes
|
||||
|
||||
**Implementierung (`app/main.py` v1.1.0):**
|
||||
* Verifiziert beim Booten die Existenz und Validität von `llm_profiles.yaml` und `decision_engine.yaml`
|
||||
* **Audit-Fix:** Behebung einer Sicherheitslücke in der `DecisionEngine`, durch die Fallback-Aufrufe bei Template-Fehlern die Profilsteuerung umgangen hätten
|
||||
* **Circular Import Fix:** Ingestion-Module nutzen nun die neutrale `app.core.registry` für Text-Bereinigung und Registry-Lookups
|
||||
|
||||
---
|
||||
|
||||
## 🔧 Technische Änderungen
|
||||
|
||||
### Konfigurationsdateien
|
||||
|
||||
**Neue Datei:**
|
||||
* `config/llm_profiles.yaml` v1.3.0: Zentrale Experten-Registry
|
||||
|
||||
**Aktualisierte Dateien:**
|
||||
* `config/decision_engine.yaml` v3.2.2: Decoupled MoE Logic, Integration von `compression_thresholds`
|
||||
|
||||
### Code-Komponenten
|
||||
|
||||
| Komponente | Version | Änderungen |
|
||||
| :--- | :--- | :--- |
|
||||
| `app/services/llm_service.py` | v3.5.2 | Rekursive Fallback-Kaskade, Profil-Auflösung |
|
||||
| `app/core/retrieval/decision_engine.py` | v1.2.1 | Profile-Driven Orchestration, Pre-Synthesis Kompression |
|
||||
| `app/core/ingestion/ingestion_processor.py` | v2.14.0 | Profilgesteuerte Validierung |
|
||||
| `app/core/ingestion/ingestion_validation.py` | v2.13.0 | MoE-Profil `ingest_validator` |
|
||||
| `app/services/embeddings_client.py` | v2.6.0 | Profil-basierte Modell-Auflösung |
|
||||
| `app/main.py` | v1.1.0 | Startup-Validierung der YAML-Dateien |
|
||||
|
||||
### Environment-Variablen
|
||||
|
||||
**Neue Variable:**
|
||||
* `MINDNET_LLM_PROFILES_PATH`: Pfad zur Profil-Registry (Default: `config/llm_profiles.yaml`)
|
||||
|
||||
**Legacy (nur noch Fallback):**
|
||||
* `MINDNET_LLM_PROVIDER`, `MINDNET_LLM_MODEL`, etc. dienen nur noch als Fallback, wenn kein Profil angegeben wird
|
||||
|
||||
---
|
||||
|
||||
## 🐛 Behobene Probleme
|
||||
|
||||
- ✅ **Behoben:** Sicherheitslücke in der `DecisionEngine` - Fallback-Aufrufe nutzen nun korrekt `profile_name`
|
||||
- ✅ **Behoben:** Circular Import zwischen Ingestion-Modulen und Registry
|
||||
- ✅ **Behoben:** Fehlende Startup-Validierung der YAML-Konfigurationen
|
||||
|
||||
---
|
||||
|
||||
## 📚 Dokumentation
|
||||
|
||||
**Aktualisierte Dokumente:**
|
||||
- ✅ `03_tech_configuration.md`: llm_profiles.yaml Dokumentation
|
||||
- ✅ `03_tech_chat_backend.md`: MoE Architektur und Fallback-Kaskade
|
||||
- ✅ `02_concept_ai_personality.md`: Mixture of Experts Konzept
|
||||
- ✅ `03_tech_ingestion_pipeline.md`: Profilgesteuerte Validierung
|
||||
- ✅ `00_glossary.md`: Neue Begriffe (MoE, Profile, Fallback-Kaskade)
|
||||
- ✅ `05_developer_guide.md`: Teach-the-AI mit Profilen
|
||||
- ✅ `04_admin_operations.md`: Konfigurations-Updates
|
||||
- ✅ `06_active_roadmap.md`: WP25a als abgeschlossen markiert
|
||||
|
||||
---
|
||||
|
||||
## 🚀 Migration & Upgrade
|
||||
|
||||
### Für Administratoren
|
||||
|
||||
1. **Neue Konfigurationsdatei erstellen:**
|
||||
```bash
|
||||
cp config/llm_profiles.yaml.example config/llm_profiles.yaml
|
||||
# Anpassen nach Bedarf
|
||||
```
|
||||
|
||||
2. **Startup-Validierung prüfen:**
|
||||
```bash
|
||||
# System startet nicht, wenn llm_profiles.yaml fehlt oder ungültig ist
|
||||
python3 -m app.main
|
||||
```
|
||||
|
||||
3. **ENV-Variablen (optional):**
|
||||
Die `.env` Variablen `MINDNET_LLM_PROVIDER`, `MINDNET_LLM_MODEL` etc. dienen nur noch als Fallback. Die primäre Steuerung erfolgt über `llm_profiles.yaml`.
|
||||
|
||||
### Für Entwickler
|
||||
|
||||
**API-Änderungen:**
|
||||
* `LLMService.generate_raw_response()` unterstützt nun `profile_name` Parameter
|
||||
* Fallback-Kaskade erfolgt automatisch bei Fehlern
|
||||
* `visited_profiles`-Tracking verhindert Zirkel-Referenzen
|
||||
|
||||
**Konfiguration:**
|
||||
* Neue Profile können in `llm_profiles.yaml` definiert werden
|
||||
* `decision_engine.yaml` referenziert Profile über `router_profile`, `llm_profile`, `compression_profile`
|
||||
|
||||
---
|
||||
|
||||
## 🔮 Ausblick (WP-25b: Prompt-Orchestration & Model-Specific Tuning)
|
||||
|
||||
- Pre-Synthesis: LLM-basierte Komprimierung überlanger Streams (✅ bereits implementiert)
|
||||
- Kontext-Budgeting: Intelligente Token-Verteilung
|
||||
- Stream-specific Provider: Unterschiedliche KI-Modelle pro Wissensbereich
|
||||
- Prompt-Orchestration: Dynamische Prompt-Anpassung basierend auf Profil und Kontext
|
||||
|
||||
---
|
||||
|
||||
## 📊 Metriken & Performance
|
||||
|
||||
**Erwartete Verbesserungen:**
|
||||
* **Resilienz:** Automatische Fallback-Kaskade reduziert Ausfallzeiten
|
||||
* **Token-Effizienz:** Pre-Synthesis Kompression reduziert Token-Verbrauch bei langen Streams
|
||||
* **Determinismus:** Profilgesteuerte Validierung (Temperature 0.0) erhöht Konsistenz
|
||||
* **Wartbarkeit:** Zentrale Profil-Registry vereinfacht Konfigurations-Management
|
||||
|
||||
---
|
||||
|
||||
**Status:** ✅ WP-25a ist zu 100% implementiert und audit-geprüft.
|
||||
**Nächster Schritt:** WP-25b (Prompt-Orchestration & Model-Specific Tuning).
|
||||
Loading…
Reference in New Issue
Block a user