Model Summary
Ein LoRA-Adapter für Ministral-3-3B-Instruct-2512-BF16, trainiert auf
deutschsprachigen Vision-Language Dialogen aus dem TAD66K Datensatz.
Das Modell empfängt strukturierte Bildbeschreibungen im Schema-Format
und antwortet atmosphärisch auf Deutsch — ohne das Schema zu kommentieren.
Kassandra ist nicht als alleinstehendes Modell gedacht, sondern als
Stimme einer modularen Pipeline. Die Pipeline übernimmt das Denken,
Kassandra übernimmt die Sprache.
Konzept: Pipeline-Architektur (v6)
Kassandra funktioniert nicht allein. Das Konzept besteht aus einer
mehrstufigen Pipeline in der jede Komponente genau eine Aufgabe hat:
Foto / Dokument / Frage
│
▼ Stufe 1: Ministral 3 3B (Base Vision, kein LoRA)
│ → Strukturierte Bildanalyse im kompakten Schema-Format (~80 Tokens)
│
▼ Stufe 2: Logik-Einheit (Ministral 3 3B Base, kein LoRA)
│ → Zerlegt die Anfrage in YAML: Thema, Einheiten, Typ, Hypothesen
│ → Basismodell verhindert Stil-Kontamination durch Kassandra LoRA
│
▼ Stufe 3: Router (deterministisch, kein LLM)
│ → Entscheidet anhand des YAML welche Stufen nötig sind
│ → typ: meinung/beschreibung → direkt zu Kassandra
│ → typ: berechnung/faktenfrage → Observer + Tools
│
▼ Stufe 4: Prefetch (parallel zur Logik, deterministisch)
│ → Schlagwort-Erkennung im User-Text
│ → Tools vorab aufrufen: astro, weather
│ → Läuft parallel zur Logik-Stufe — reduziert Latenz
│
▼ Stufe 5: Observer (Ministral 3 3B Base, kein LoRA)
│ → Tool-Calls: date_diff, date_info, calculate, convert_unit, astro, weather
│ → Gibt rohe Tool-Ergebnisse strukturiert weiter — formuliert nicht
│ → Validator: Plausibilitätsprüfung (confidence: high / medium / low)
│ → Wird übersprungen wenn keine Tools nötig sind
│
▼ Stufe 6: Kassandra (Kassandra LoRA)
│ → Atmosphärische Antwort auf Deutsch
│ → Formuliert aus Tool-Ergebnissen und YAML-Analyse
│ → Rechnet nicht, schätzt nicht
│
▼ Stufe 7: Memory (optional, --memory)
→ Graph-basiertes InMemory RAG
→ BGE-M3 Embeddings + SQLite :memory:
→ Automatische Cluster-Erkennung bei Themenwechsel
→ BGE-Reranker-v2-M3 filtert irrelevante Erinnerungen
→ Novelty-Filter: kein Memory bei Themenwechsel
Designprinzip: Die Intelligenz liegt in der Pipeline, nicht im Modell.
Jede Stufe hat genau eine Aufgabe. Das SLM muss nur noch seinen engen
Aufgabenbereich gut ausführen — formulieren, nicht denken.
Warum Basismodell für Logik und Observer?
Das Kassandra LoRA ist auf atmosphärische, poetische Sprache trainiert.
Bei langen Gesprächen überwältigt dieser Stil den System-Prompt — die
Logik-Stufe beginnt Poesie statt YAML zu produzieren.
Das Basismodell ist davon unberührt und liefert zuverlässig strukturiertes
YAML und saubere Tool-Calls. Kassandra LoRA kommt nur dort zum Einsatz
wo es trainiert wurde: atmosphärische Antworten auf Deutsch.
Das Eingabeformat für Bildanalyse ist ein kompaktes, maschinenlesbares Schema:
Table with columns: Feld, Bedeutung, Beispiel| Feld | Bedeutung | Beispiel |
|---|
F: | Fokus / Hauptmotiv | F:garden_landscape |
G: | Grid 3x3, Objekte mit Hex-Farbe und Tiefe | G:flower#ff69b4@fg |
P: | Farbpalette (Hex-Codes) | P:#ff69b4,#2d5a1b,#87ceeb |
|
Tiefenebenen in G:: @fg (Vordergrund), @mg (Mittelgrund), @bg (Hintergrund).
Kassandra API (v6)
Die vollständige Pipeline ist als FastAPI-Service verfügbar.
Kommunikation mit vLLM über Unix-Sockets für minimale Latenz.
scripts/
├── kassandra_api_main.py # Entry Point (--logging, --memory)
├── kassandra_api_config.py # Konstanten, Prompts, Socket-Pfade
├── kassandra_api_cache.py # LRU Schema-Cache + Wetter-Cache (TTL)
├── kassandra_api_tools.py # Tool-Definitionen + Formatter + Validator
├── kassandra_api_validator.py # Plausibilitätsprüfung (high/medium/low)
├── kassandra_api_pipeline.py # Router → Prefetch → Observer → Kassandra
├── kassandra_api_endpoints.py # FastAPI Routes (/v1/chat/completions)
└── kassandra_api_memory.py # Graph-basiertes InMemory RAG (optional)
Eine detaillierte Installationsanleitung findet sich in INFERENCE.md.
Graph-Memory
Das optionale Memory-System speichert Gesprächsinhalte als Graphen:
- Jede Erinnerung ist ein Knoten mit BGE-M3 Embedding
- Ähnliche Erinnerungen werden durch Kanten verbunden
- Themenwechsel erzeugen automatisch neue Cluster
- BGE-Reranker-v2-M3 filtert irrelevante Erinnerungen vor der Übergabe
- Novelty-Filter: bei Similarity < 0.3 wird kein Memory übergeben
Das System erkennt Themenwechsel und verhindert dass alte Gesprächsinhalte
neue Antworten färben.
Datensatz
Trainiert auf sebelsn/tad66k-vision-de:
- Basis: TAD66K (Shuai1995, Apache 2.0) — 66k handverlesene Bilder, 47 Themen
- Beschreibungen: Ministral 3 14B generiert strukturierte Schemas
- Dialoge: Ministral 3 14B generiert tiefe Multi-Turn Dialoge auf Deutsch
- Destillation: Knowledge Distillation vom 14B Lehrer zum 3B Schüler
Table with columns: Tranche, Typ, Beispiele| Tranche | Typ | Beispiele |
|---|
| T1 | Tiefe Dialoge (~10 Turns) | 14.997 |
| T2 | Kreativ + Analytisch (3 Turns) | 15.002 |
| T3 | Vergleichspaare (2 Turns) | 9.987 |
| T4 | Instruktions-Tasks (1 Turn) | 6.888 |
| T5 | Ästhetik + Bewertung (2 Turns) | 4.995 |
| T6 | Farbwissenschaft + Geometrie (2 Turns) |
Modell-Details
- Entwickelt von: Sebastian Elsner
- Modelltyp: LoRA Adapter (PEFT)
- Sprache: Deutsch
- Lizenz: MIT
- Basis-Modell: mistralai/Ministral-3-3B-Instruct-2512-BF16
- Training: QLoRA FP8 weight-only (torchao), 2 Epochen, Cosine LR
- LoRA Rank: 32 — LoRA Alpha: 64
- Ziel-Module: q_proj, v_proj, down_proj
- Loss: ~0.845 final
Eigenschaften
Unter den empfohlenen Inferenz-Parametern (temperature=0.1, top_p=1.0):
- Atmosphärische, bildhafte Sprache aus strukturierten Daten
- Assoziativer Stil — geht über das Schema hinaus
- Natürliches Deutsch ohne Übersetzungsstrukturen
- Kohärente Dialoge über viele Turns
- Philosophische Tiefe bei abstrakten Fragen
Einschränkungen
- Funktioniert am besten mit dem Schema-Format und der Kassandra API
- Faktenwissen für Berechnungen, Datum, Wetter und Astronomie kommt aus
deterministischen Tools — nicht aus dem Modell
- Allgemeinwissen stammt aus Ministral 3 3B und kann fehlerhaft sein
- Memory ist flüchtig — API-Neustart löscht alle Erinnerungen
- Observer-LoRA in Entwicklung — Tool-Calling läuft aktuell über Basismodell
Was dieses Modell nicht ist
- Kein Benchmark-optimiertes Modell
- Kein Ersatz für größere Vision-Language Modelle
- Keine Bilderkennungs-KI
- Kein allgemeiner Assistent
Final Note
Dieser Adapter wurde nicht darauf trainiert, mehr zu wissen,
sondern natürlicher zu klingen.
Alles, was er sagt, war bereits im Basismodell enthalten —
er findet nur einen anderen Weg dorthin.