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 |
L: | Lichtquelle und Qualität | L:<top_left_warm> |
D: | Tiefenwirkung | D:<d> (deep) oder D:<f> (flat) |
O: | Objekte | O:flower,stem,background |
Z: | Räumliche Relationen | Z:flower-front-of-stem |
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) | 4.558 |
| T7 | Korrekturen + Widerspruch | 1.238 |
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.