Taris: Der KI-Assistent, bei dem Daten beim Kunden bleiben
Taris: Der KI-Assistent, bei dem Daten beim Kunden bleiben
TL;DR. Taris ist ein KI-Assistent, bei dem die Daten des Kunden nicht zum Anbieter wandern. Grundprinzip: das Modell ist ein Plugin hinter einer stabilen Schnittstelle — nicht das Zentrum der Architektur. Innen: Vendor-Neutral LLM-Dispatcher, hybrides RAG (BM25 + Dense + RRF + Cross-Encoder Rerank), Multi-Tenant Postgres mit pgvector, optional lokale Modelle via Ollama. Dieser Artikel beschreibt, wie Taris aufgebaut ist, warum es so aufgebaut ist — und wo das für KMU in der EU und der GUS Vorteile bringt.
1. Das Problem: „Nehmen wir GPT-4 — und vergessen den Rest"
Wenn ein Kleinunternehmer fragt „welchen KI-Assistenten sollen wir einsetzen?", bekommt er üblicherweise eine von zwei Extremantworten:
- „Nehmen Sie ChatGPT / Copilot Studio / Microsoft 365 — da ist alles drin." Bequem, aber: Daten gehen zum Anbieter, Anpassungsmöglichkeiten sind begrenzt, Preise wachsen intransparent, Migration auf eine andere Plattform ist ein kompletter Umzug.
- „Wir bauen Ihnen das von Grund auf mit LangChain." Langsam, teuer — und ein Jahr später stellt sich heraus, dass 60 % des Codes Migrations-Glue für Modellwechsel ist, den niemand mag.
Taris ist der dritte Weg: eine produktisierte Basis (Modell-Dispatcher, hybrides RAG, Multi-Tenant Postgres, Kanal-Adapter), die wir für den Kunden einsetzen und beim Kunden belassen. Kein SaaS. Kein „von Grund auf bauen." Ein Halbprodukt, das sich klar anpassen lässt.
2. Für wen das relevant ist
- KMU-Teams mit 10–500 Mitarbeitern, die bereits Dokumente, Vorschriften und Kundendaten angehäuft haben — aber keine KI-Spezialisten.
- Regulierte Branchen (Gesundheitswesen, Arbeitssicherheit, Rechtsberatung) — wo „Daten gehen zu OpenAI" = „Bußgeld."
- GUS-Unternehmen mit EU-Präsenz: Sie brauchen eine Lösung für zwei Jurisdiktionen.
- Startups, die eine gemeinsame Assistentenbasis für mehrere interne Anwendungsfälle benötigen.
3. Der häufige Fehler
Was wir in 70 % der „Pilots" sehen, die vor uns begonnen wurden:
- Eine API angeschlossen. Als der Anbieter die Preise erhöhte — war niemand bereit zu migrieren.
- Alles in einen großen Prompt gesteckt. „Lost in the Middle" schlägt zu (Liu et al., 2023) — das Modell „vergisst" die Mitte.
- RAG nur auf Embeddings gebaut — exakte Codes und Kennzeichen werden nicht gefunden.
- Kein Eval-Set. Unmöglich zu sagen, ob es nach der letzten „Prompt-Verbesserung" besser geworden ist.
- Kundendokumente liegen in jemandes Cloud ohne DPA. Rechtsprüfung aufgeschoben.
4. Der technische Ansatz: Was in Taris steckt
Architektur — vier unabhängige Schichten:
flowchart LR
subgraph Kanäle
TG[Telegram Bot]
WEB[Web UI / PWA]
VOICE[Sprache]
API[REST API]
end
subgraph Kern
GW[FastAPI Gateway]
ORCH[Agenten-Orchestrator]
DISP[LLM Dispatcher]
KB[KB Service]
AUTH[Auth + RBAC]
end
subgraph Speicher
PG[(Postgres + pgvector)]
OBJ[(MinIO / S3)]
LOG[(Audit-Log)]
end
subgraph Modelle
LOCAL[Ollama / llama.cpp]
CLOUD[OpenAI / Anthropic / Gemini / YandexGPT]
end
TG --> GW
WEB --> GW
VOICE --> GW
API --> GW
GW --> AUTH --> ORCH
ORCH --> KB --> PG
ORCH --> DISP
DISP --> LOCAL
DISP --> CLOUD
ORCH --> LOG
Jede Schicht ist ersetzbar — das ist der Kernpunkt. Kanäle sind Adapter. Das Modell ist ein Plugin. Speicher ist ein Backend. Der Orchestrator ist der einzige Ort, wo Geschäftslogik lebt. Wenn OpenAI morgen seine Preise verdreifacht, wechselt eine Taris-Installation mit einer einzigen Konfigurationsdatei.
4.1. LLM-Dispatcher
class LLMProvider(Protocol):
async def complete(
self,
messages: list[ChatMessage],
*,
max_tokens: int,
temperature: float,
tools: list[Tool] | None = None,
) -> ChatCompletion: ...
Sieben konkrete Anbieter: OpenAI, Anthropic, Gemini, YandexGPT, OpenRouter, Ollama, llama.cpp. Routing über YAML:
default: openrouter:openai/gpt-4o-mini
routes:
- match: { task: rerank }
use: ollama:bge-reranker-base
- match: { task: summary, locale: ru }
use: yandexgpt:latest
- match: { sensitive: true }
use: ollama:llama3.1:8b
fallback:
- openrouter:anthropic/claude-3-5-sonnet
- ollama:llama3.1:8b
4.2. Hybrides RAG mit RRF
Retrieval — drei Durchgangsstufen:
- Lexikalisch (BM25) — Postgres FTS mit sprachbewusstem Analyzer für RU/EN/DE/SL.
- Dense — pgvector Cosinus, Standard
text-embedding-3-small, für On-Prem —bge-m3. - Metadaten-Boost — exakte Übereinstimmung bei Tags (
product,section,last_updated).
Fusion — Reciprocal Rank Fusion:
$$ \text{score}(d) = \sum_{i \in \text{retrievers}} \frac{1}{k + \text{rank}_i(d)}, \quad k = 60 $$
Dann Cross-Encoder Rerank (bge-reranker-base) auf Top-5. Empirischer Gewinn auf unserem internen Arbeitssicherheits-Golden-Set: Recall@5 0,71 → 0,88 (RRF vs. Pure Dense), Grounding-Rate +0,07 nach Rerank. Das ist kein „etwas besser" — das ist der Unterschied zwischen „verwendbar" und „dem Kunden Geld zurückgeben."
4.3. Multi-Tenant Postgres mit RLS
CREATE POLICY tenant_isolation ON chunks
USING (tenant_id = current_setting('app.tenant_id')::int);
Jede Verbindung setzt vor der Abfrage SET app.tenant_id = $1. Es ist unmöglich, versehentlich Daten eines anderen Kunden zu lesen: die Datenbank erzwingt das selbst.
5. Tabelle: Welche Komponenten sind ersetzbar
| Schicht | Standard | Alternative | Wechselkosten |
|---|---|---|---|
| Embedding | text-embedding-3-small |
bge-m3 |
Config + Neuindizierung |
| Reranker | bge-reranker-base |
mxbai-rerank |
Config |
| Vektorspeicher | pgvector | Qdrant | docker-compose + Migration |
| LLM | gpt-4o-mini |
claude-3-5-sonnet, llama3.1:8b |
Config |
| Kanal | Telegram | Web / VK / Slack / WhatsApp | Adapter ~200 Zeilen |
| Dateispeicher | MinIO | S3 / Nextcloud | Config |
| Deployment | Docker Compose | Kubernetes / Nomad | Manifeste |
6. SINTARIS-Minicase
Das Produkt Worksafety Superassistant ist ein Beispiel für Taris im realen Einsatz. Aufgabe:
- Interner Assistent für Arbeitsschutzvorschriften (~3000 PDF-Seiten).
- Telegram-Chatbot für Produktionsmitarbeiter (RU + DE).
- Vollständiges On-Prem (Anforderung des DPO).
Technische Umsetzung:
- Taris in OpenClaw-Konfiguration, zwei Server: Primär (Ubuntu 24.04, 64 GB RAM, RTX 4090) + Backup.
- Embedding:
bge-m3, Generierung:llama3.1:8b-instruct(ausreichend für RU/DE), Fallbackqwen2.5:14b. - Telegram-Bot mit lokalem NAT — keine Cloud.
- Golden-Set: 120 Fragen mit Referenz-Zitierungen.
Metriken nach 90 Tagen:
- Recall@5: 0,86 auf dem Golden-Set.
- Zitierungsgenauigkeit: 92 %.
- Medianlatenz: 1,9 Sek.
- LLM-Kosten: 0 EUR (alles lokal).
- Infrastrukturkosten: ~120 EUR/Monat für Strom + Abschreibung.
Details: Worksafety § 6 RAG pipeline und OpenClaw § 8 AI dispatch.
7. Checkliste (15 Punkte) bei der Auswahl eines KI-Assistenten für KMU
- Vendor-Lock-In geprüft: Können Sie den LLM-Anbieter in einer Woche wechseln?
- Daten — wo werden Kundendokumente physisch gespeichert?
- Embeddings — wo werden sie gespeichert? (oft vergessen: sie sind auch PII-Ableitungen)
- DPA unterzeichnet mit jedem LLM-Anbieter, den Sie nutzen.
- Eval-Set — haben Sie eines, und wie viele Fragen sind darin?
- Zitierung — generiert das System Quellenverweise?
- Grounding-Rate — wird sie gemessen? (wenn nicht — weiß niemand, ob das Modell lügt)
- Retrieval-Regression nach jeder Prompt-Änderung getestet?
- Multi-Tenant-Sicherheit — RLS auf DB-Ebene, nicht nur „im Code abgesprochen"?
- Lokale Modelle verfügbar — gibt es einen Plan B, wenn die Cloud ausfällt?
- Kosten pro Token — in Echtzeit überwacht?
- DSAR + Löschung — als Code implementiert, nicht als manuelle Prozedur?
- Audit-Log — vorhanden, unveränderlich, mit erforderlicher Aufbewahrungsfrist?
- Kanäle — ist das Hinzufügen eines neuen Kanals < 500 Zeilen oder ein Kern-Rewrite?
- Dokumentation — in welcher Sprache, für wen, wie oft aktualisiert?
8. Risiken
- Versuchung von Frontier-Modellen. Das Team gewöhnt sich an Sonnet, dann verlangt der Kunde On-Prem — und das System muss auf 8B umgeschult werden. Lösung: von Anfang an auf 8B testen, Frontier nur dort einsetzen, wo der Gewinn nachgewiesen wurde.
- Dispatcher-Komplexität. Je mehr Anbieter unterstützt werden, desto mehr Grenzfälle. Unsere Regel: Ein neuer Anbieter kommt nur, wenn ein Kunde ihn fordert.
- Embeddings ≠ portierbar. Bei einem Wechsel des Embedding-Modells muss neu indiziert werden. Zeit einplanen.
- Mehrsprachige Qualität.
bge-m3ist gut für EU und RU, aber in DE/SL ist die Qualität schlechter als in EN. Am eigenen Golden-Set prüfen.
9. Was als Nächstes zu tun ist
Wenn Sie bereits einen KI-Assistenten haben und es Zeit ist, ihn zu ersetzen — wir machen einen KI-Audit für €900–4500. Wenn Sie Taris ausprobieren möchten — gibt es einen KI-Pilot über 4–8 Wochen für €3000–12000 mit festem Umfang. −25 % für slowenische Unternehmen vom 1. bis 30. Juni 2026 — siehe Pakete.
Wenn Sie zuerst lesen möchten — schauen Sie in die KB-Kapitel Taris (vollständige Beschreibung) und OpenClaw (On-Prem-Topologie).
10. Quellen
- Lewis, P. et al. (2020). Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks. arXiv:2005.11401.
- Karpukhin, V. et al. (2020). Dense Passage Retrieval for Open-Domain Question Answering. arXiv:2004.04906.
- Cormack, G., Clarke, C., Buettcher, S. (2009). Reciprocal Rank Fusion outperforms Condorcet and individual rank learning methods. SIGIR '09.
- Liu, N. F. et al. (2023). Lost in the Middle: How Language Models Use Long Contexts. arXiv:2307.03172.
- BAAI (2024). BGE-M3: One-stop multi-lingual, multi-functionality, multi-granularity text embeddings.
- pgvector — https://github.com/pgvector/pgvector
- Ollama — https://ollama.com
Sintaris führt KI-Prozessaudits, KI-Pilots und Taris-Implementierungen für KMU in der EU und der GUS durch. Discovery-Call — kostenlos, 30 Minuten.