Methodological note: MRCR-Recall of 1.00 is confirmed by 60 end-to-end runs at needle depths 5, 10 and 20. Depths 50 and 100 are validated by retrieval unit tests (rank #1, cosine distance 0.34); full end-to-end benchmarks at those depths are still pending. See section 4.3.
Kommerzielle Sprachmodelle (GPT-4o: 128k, Claude 3.5: 200k) bieten große native Kontextfenster, erzwingen jedoch Cloud-Abhängigkeit und Token-basierte Kosten. Lokale Modelle (7B–14B Parameter) sind datenschutzkonform und kostenlos betreibbar, haben jedoch native Kontextfenster von 4.096–32.768 Token — unzureichend für projektbegleitende Konversationen, die Wochen oder Monate umspannen.
Das Kontextfenster-Problem ist für lokale LLMs strukturell: Eine Erhöhung über 32k Token führt quadratisch steigendem VRAM-Bedarf durch den KV-Cache. Eine 7B-Modell auf 8 GB VRAM kann realistisch nicht über 16k Token verarbeiten.
These: Das Kontextfenster ist kein Modellproblem, sondern ein Infrastrukturproblem. Verdrängte Gesprächsrunden müssen nicht verloren gehen — sie können als Vektoren extern gespeichert und bei Bedarf semantisch abgerufen werden.
Die letzten n Turns verbatim im LLM-Context. Kein Verlust, sofortiger Zugriff.
Session-DauerVerdrängte Turns als nomic-embed-text-Vektoren in ChromaDB. Numpy-Cosine-Ranking on-demand.
Konfigurierbares TTLNeo4j-Wissensgraph: dauerhafte Entitäten und Fakten. Abfrage via GraphRAG-Cypher.
Dauerhaft
Wenn eine Konversation das Hot-Window überschreitet (default_max_turns),
werden verdrängte Turns asynchron in ChromaDB eingebettet. Jeder Turn wird mit
Metadaten gespeichert: session_id, user_id, team_id,
scope, keywords, expire_at.
store_turns(session_id, evicted_turns, user_id=uid, team_id=tid, scope="private", ttl_hours=168)
Das Retrieval folgt einer Fallback-Kaskade, die sicherstellt, dass auch numerische Fakten, Eigennamen und seltene Codes zuverlässig gefunden werden:
Zwei Bugs verhinderten korrekte Recalls bei tiefen Needle-Depths:
| Bug | Symptom | Fix |
|---|---|---|
| Session-Count-Bug | collection.count() gab Gesamtzahl aller Sessions zurück (z.B. 450 statt 22). HNSW wurde für kleine Sessions aktiviert. |
len(collection.get(where={"session_id": sid})) |
| HNSW-Approximation | Bei Zahlen-Nadeln und Personennamen: HNSW-Graph bevorzugt hochgradige "Hub"-Vektoren, selten injizierte Fakten wurden gemisst. | Numpy-direktes Cosine-Ranking für alle Session-Größen. HNSW nur als letzter Fallback bei fehlenden Embeddings. |
Das MRCR-lite-v2-Benchmark (Multi-turn Recall Comprehension Recall) injiziert einen Fakt ("Nadel") in eine synthetische Konversation, schiebt ihn durch Füll-Turns gezielt aus dem Hot-Window und misst, ob das System ihn korrekt abruft.
[depth × Füll-Turns] ← vor Nadel (aus Hot-Window verdrängt) [Nadel: "Meine Glückszahl ist 7342."] [5 × aktuelle Füll-Turns] ← bleiben im Hot-Window RECALL-FRAGE: "Was ist meine Glückszahl?"
A/B-Design: with_prepopulation (ChromaDB vorbesetzt) vs. without_prepopulation (Baseline).
| Nadel-Typ | Pre-Fix WITH SM | Post-Fix WITH SM | WITHOUT SM (Baseline) |
|---|---|---|---|
| Zahl (7342) | 0,20 | 1,00 | 0,00 |
| Name (SOVEREIGN-AMBER) | 1,00 | 1,00 | 0,00 |
| Technisch (URL/Port) | 1,00 | 1,00 | 0,00 |
| Datum (14. Nov. 2026) | 1,00 | 1,00 | 0,00 |
| Person (Dr. K. Breitfeld) | 0,40 | 1,00 | 0,00 |
| Gesamt | 0,72 | 1,00 | 0,00 |
| Depth | WITHOUT Semantic Memory | WITH Semantic Memory (Post-Fix) | Status |
|---|---|---|---|
| 5 | 0.000 | 1.000 * | ✓ 60-run benchmark confirmed |
| 10 | 0.000 | 1.000 | ✓ 60-run benchmark confirmed |
| 20 | 0.000 | 1.000 | ✓ 60-run benchmark confirmed |
| 50 | 0.000 | ~1.000 (retrieval unit test ✓) | End-to-end pending |
| 100 | 0.000 | ~1.000 (retrieval unit test ✓, rank #1, dist. 0.34) | End-to-end pending |
* 2 of 10 depth=5 WITH-pop runs failed due to a transient AIHUB outage (0.0 instead of 1.0); the failure is attributable to infrastructure, not the Semantic Memory logic. Corrected overall WITH score: 1.000.
Tested April 2026, 60 runs (5 needles × 3 depths × 2 conditions × 2 reps),
template moe-memory-aihub-hybrid, embedding nomic-embed-text 768-dim.
Retrieval method: direct numpy cosine ranking (no HNSW approximation error).
For the same prompt set (10 prompts, 5 categories), two call paths are compared:
claude-sonnet-4-6 via CHEXT endpointmoe-memory-aihub-hybrid (Planner → Expert → Judge)Prompt tokens, completion tokens and latency are measured. Overhead factor = MoE total / Direct total.
| Category | Direct (P+C) | MoE (P+C) | Overhead factor | Avg. prompt Δ |
|---|---|---|---|---|
| reasoning | ~1,750 | ~16,000 | 14.76× | +10,404 |
| knowledge | ~4,640 | ~29,450 | 6.35× | +12,710 |
| coding | ~1,880 | ~18,950 | 10.36× | +11,332 |
| math | ~1,270 | ~15,400 | 12.48× | +10,216 |
| instruction following | ~460 | ~18,700 | 42.66× | +10,725 |
| Overall | ~2,011 | ~19,844 | 17.32× | +11,077 |
The absolute prompt overhead is nearly constant at ~11,000 tokens across all categories. It represents the fixed cost of the Planner/Expert/Judge cycle: system prompts, routing instructions, expert context, and judge fusion. This overhead is model-independent — it arises from the MoE architecture itself, not from the underlying models.
The relative overhead factor varies widely (6.35× to 42.66×) because it depends on the denominator (direct completion tokens): short direct answers (instruction following: ~241 tokens) are more strongly amplified than long ones (knowledge: ~4,500 tokens). Users who ask complex, knowledge-intensive questions pay the lowest relative overhead.
| System | Natives Fenster | Effektives Fenster | Privacy | Kosten |
|---|---|---|---|---|
| GPT-4o (OpenAI) | 128.000 Token | 128.000 Token | ☁ Cloud | per Token |
| Claude 3.5 Sonnet | 200.000 Token | 200.000 Token | ☁ Cloud | per Token |
| Lokales 7B-Modell (ohne SM) | 4.000–32.000 | 4.000–32.000 | 🔒 Lokal | 0 |
| MoE Sovereign + Tier-2 SM | 4.000–32.000 (Modell) | > 1.000.000 (Infra) | 🔒 Lokal | 0 |
Kernaussage: Das effektive Kontextfenster ist keine Modelleigenschaft mehr, sondern eine Infrastruktureigenschaft. Ein Upgrade von 7B auf 70B erhöht die Recall-Tiefe nicht. Das Aktivieren von Tier-2 Semantic Memory erhöht sie — für jedes Modell.
Über die Session-Grenzen hinaus ermöglicht MoE Sovereign ein Cross-Session-Gedächtnis mit dreistufiger Zugriffshierarchie:
| Scope | Sichtbar für | Wann verwendet |
|---|---|---|
private | Nur der Eigentümer (user_id) | Standard — alle Turns |
team | Team-Mitglieder (team_id) | User aktiviert "Mit Team teilen" |
shared | Team + verknüpfte Mandanten | Explizite Admin-Freigabe |
Nutzer steuern ihr Verhalten über zwei Einstellungen im User-Portal:
Fresh Start (kein Cross-Session-Zugriff) und
Mit Team teilen (Turns werden als scope=team gespeichert).
Tier-2 Semantic Memory ist vollständig OpenAI-API-kompatibel. Kein Client-Code muss geändert werden.
| Client | Kompatibel | Hinweis |
|---|---|---|
| Open WebUI | ✓ | Session-ID aus Konversations-Header |
| Claude Code | ✓ | Via X-Session-Id-Header oder Fingerprint |
| OpenAI Python SDK | ✓ | extra_headers={"X-Session-Id": "..."} |
| curl / httpie | ✓ | -H "X-Session-Id: <uuid>" |
| Beliebiger OpenAI-kompatibler Client | ✓ | Session wird automatisch per Fingerprint abgeleitet |
{
"enable_semantic_memory": true,
"semantic_memory_n_results": 8,
"semantic_memory_ttl_hours": 168,
"enable_cross_session_memory": true,
"cross_session_scopes": ["private", "team"],
"cross_session_ttl_days": 30
}
| Komponente | Anforderung | Enthalten in MoE Sovereign |
|---|---|---|
| ChromaDB | HttpClient, Port 8001 | ✓ Docker-Service |
| Embedding-Modell | Ollama: nomic-embed-text (768 Dim.) empfohlen | Manuell via Ollama konfigurieren |
| VRAM für Embedding | ~500 MB (nomic-embed-text) | Läuft auf jedem GPU-Node |
| Disk für Vektoren | ~2 KB pro gespeichertem Turn | ChromaDB-Volume |
| Latenz-Overhead | ~50–100 ms pro Request (Embedding + Retrieval) | Asynchron, blockiert nicht |