Taris: UI asistent, kjer podatki ostanejo pri stranki
Taris: UI asistent, kjer podatki ostanejo pri stranki
TL;DR. Taris je UI asistent, pri katerem podatki stranke ne odidejo k ponudniku. Osnovno načelo: model je vtičnik za stabilnim vmesnikom — ne center arhitekture. Znotraj: nevtralni LLM-razpošiljatelj, hibridni RAG (BM25 + gosta + RRF + prečni encoder rerank), večnajemniški Postgres s pgvector, po želji lokalni modeli prek Ollame. Ta članek opisuje, kako je Taris zgrajen, zakaj je tako zgrajen — in kje to prinaša prednosti za MSP v EU in SND.
1. Problem: „Vzamemo GPT-4 — in pozabimo na vse"
Ko lastnik malega podjetja vpraša „kateri UI asistent naj namestimo?", navadno dobi enega od dveh skrajnih odgovorov:
- „Vzemite ChatGPT / Copilot Studio / Microsoft 365 — tam je vse." Priročno, ampak: podatki odidejo k ponudniku, prilagajanje je omejeno, cene nepregledno rastejo, selitev na drugo platformo je polna migracija.
- „Zgradili vam bomo iz nič z LangChain." Počasi, drago — in leto pozneje se izkaže, da je 60 % kode lepilo za selitvene modele, ki ga nihče ne mara.
Taris je tretja pot: produktizirana osnova (razpošiljatelj modelov, hibridni RAG, večnajemniški Postgres, adapterji kanalov), ki jo uvedemo za stranko in pustimo pri stranki. Ne SaaS. Ne „gradimo iz nič." Polprodukt, ki ga je jasno prilagoditi.
2. Za koga je to relevantno
- Ekipe MSP s 10–500 zaposlenimi, ki so že nakopičile dokumente, pravilnike in zgodovino strank — a nimajo strokovnjakov za UI.
- Regulirane panoge (zdravstvo, varnost pri delu, pravno svetovanje) — kjer „podatki odidejo k OpenAI" = „globa."
- Podjetja iz SND s prisotnostjo v EU: potrebujejo eno rešitev za dve jurisdikciji.
- Startupe, ki potrebujejo skupno osnovo asistentov za več internih primerov uporabe.
3. Pogosta napaka
Kar vidimo v 70 % „pilotov", začetih pred nami:
- Priključili en API. Ko je ponudnik dvignil cene — nihče ni bil pripravljen na migracijo.
- Vse stresel v en velik poziv. „Lost in the Middle" udari (Liu et al., 2023) — model „pozabi" sredino.
- RAG zgradili samo na vdelavah — točnih kod in identifikatorjev ni mogoče najti.
- Ni eval-seta. Nemogoče reči, ali se je kakovost izboljšala po zadnji „izboljšavi poziva."
- Dokumenti stranke ležijo v tujem oblaku brez DPA. Pravni pregled odložen.
4. Tehnični pristop: Kaj je v Tarisu
Arhitektura — štiri neodvisne plasti:
flowchart LR
subgraph Kanali
TG[Telegram Bot]
WEB[Spletni UI / PWA]
VOICE[Glas]
API[REST API]
end
subgraph Jedro
GW[FastAPI Gateway]
ORCH[Orkestrator agentov]
DISP[LLM Razpošiljatelj]
KB[Storitev KB]
AUTH[Overjanje + RBAC]
end
subgraph Shramba
PG[(Postgres + pgvector)]
OBJ[(MinIO / S3)]
LOG[(Revizijski dnevnik)]
end
subgraph Modeli
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
Vsaka plast je zamenljiva — to je ključna točka. Kanali so adapterji. Model je vtičnik. Shramba je zaledni sistem. Orkestrator je edino mesto, kjer živi poslovna logika. Če OpenAI jutri potroji cene, Taris-namestitev preklopi z eno konfiguracijsko datoteko.
4.1. LLM-razpošiljatelj
class LLMProvider(Protocol):
async def complete(
self,
messages: list[ChatMessage],
*,
max_tokens: int,
temperature: float,
tools: list[Tool] | None = None,
) -> ChatCompletion: ...
Sedem konkretnih ponudnikov: OpenAI, Anthropic, Gemini, YandexGPT, OpenRouter, Ollama, llama.cpp. Usmerjanje prek 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. Hibridni RAG z RRF
Pridobivanje — tri prehodne stopnje:
- Leksikalno (BM25) — Postgres FTS z jezikovno zavednim analizatorjem za RU/EN/DE/SL.
- Gosto — pgvector kosinus, privzeto
text-embedding-3-small, za on-prem —bge-m3. - Ojačanje metapodatkov — točno ujemanje pri oznakah (
product,section,last_updated).
Združevanje — Reciprocal Rank Fusion:
$$ \text{score}(d) = \sum_{i \in \text{retrievers}} \frac{1}{k + \text{rank}_i(d)}, \quad k = 60 $$
Nato prečni encoder rerank (bge-reranker-base) na top-5. Empirični dobiček na našem internem zlatem setu o varnosti pri delu: recall@5 0,71 → 0,88 (RRF v primerjavi z gosto samo), stopnja utemeljenosti +0,07 po rerankanju. To ni „malce boljše" — to je razlika med „uporabno" in „vrniti denar stranki."
4.3. Večnajemniški Postgres z RLS
CREATE POLICY tenant_isolation ON chunks
USING (tenant_id = current_setting('app.tenant_id')::int);
Vsaka povezava pred poizvedbo nastavi SET app.tenant_id = $1. Nemogoče je po naključju prebrati podatke drugega najemnika: baza podatkov to uveljavi sama.
5. Tabela: Katere komponente so zamenljive
| Plast | Privzeto | Alternativa | Stroški zamenjave |
|---|---|---|---|
| Vdelava | text-embedding-3-small |
bge-m3 |
konfiguracija + re-indeksiranje |
| Rerankator | bge-reranker-base |
mxbai-rerank |
konfiguracija |
| Vektorska shramba | pgvector | Qdrant | docker-compose + migracija |
| LLM | gpt-4o-mini |
claude-3-5-sonnet, llama3.1:8b |
konfiguracija |
| Kanal | Telegram | Splet / VK / Slack / WhatsApp | adapter ~200 vrstic |
| Shramba datotek | MinIO | S3 / Nextcloud | konfiguracija |
| Namestitev | Docker Compose | Kubernetes / Nomad | manifesti |
6. SINTARIS mini primer
Produkt Worksafety Superassistant je primer Taris v realni namestitvi. Naloga:
- Interni asistent o pravilnikih varnosti pri delu (~3000 strani PDF).
- Telegram chatbot za delavce v proizvodnji (RU + DE).
- Popolni on-prem (zahteva DPO).
Tehnična izvedba:
- Taris v konfiguraciji OpenClaw, dva strežnika: primarni (Ubuntu 24.04, 64 GB RAM, RTX 4090) + varnostna kopija.
- Vdelava:
bge-m3, generiranje:llama3.1:8b-instruct(zadostuje za RU/DE), rezervaqwen2.5:14b. - Telegram bot z lokalnim NAT — brez oblaka.
- Zlati set: 120 vprašanj z referenčnimi navedbami.
Metrike po 90 dneh:
- Recall@5: 0,86 na zlatem setu.
- Natančnost navedbe virov: 92 %.
- Mediana zakasnitve: 1,9 sek.
- Stroški LLM: 0 EUR (vse lokalno).
- Stroški infrastrukture: ~120 EUR/mesec za elektriko + amortizacijo.
Podrobnosti: Worksafety § 6 RAG pipeline in OpenClaw § 8 AI dispatch.
7. Kontrolni seznam (15 točk) pri izbiri UI asistenta za MSP
- Vezanost na ponudnika preverjena: ali lahko v tednu dni zamenjate ponudnika LLM?
- Podatki — kje so dokumenti stranke fizično shranjeni?
- Vdelave — kje so shranjene? (pogosto pozabljeno: so tudi izpeljanke osebnih podatkov)
- DPA podpisan z vsakim ponudnikom LLM, ki ga uporabljate.
- Eval-set — ali ga imate, in koliko vprašanj je v njem?
- Navajanje virov — ali sistem generira sklicevanja na vire?
- Stopnja utemeljenosti — ali je izmerjena? (Če ne — nihče ne ve, ali model laže)
- Regresija pridobivanja testirana po vsaki spremembi poziva?
- Večnajemniška varnost — RLS na ravni baze podatkov, ne „dogovorjeno v kodi"?
- Lokalni modeli na voljo — ali obstaja načrt B, ko oblak pade?
- Strošek na žeton — nadziran v realnem času?
- DSAR + izbris — implementirano kot koda, ne ročni postopek?
- Revizijski dnevnik — prisoten, nespremenljiv, z zahtevanim rokom hrambe?
- Kanali — je dodajanje novega kanala < 500 vrstic ali prepisovanje jedra?
- Dokumentacija — v katerem jeziku, za koga, kako pogosto posodobljena?
8. Tveganja
- Skušnjava mejnih modelov. Ekipa se navadi na Sonnet, nato stranka zahteva on-prem — in sistem je treba preusposobiti na 8B. Rešitev: od prvega dne testirati na 8B, mejni model uporabiti samo tam, kjer je dobiček dokazan.
- Kompleksnost razpošiljatelja. Več ponudnikov, ki jih podpirate, več robnih primerov. Naše pravilo: nov ponudnik pride samo, ko ga zahteva stranka.
- Vdelave ≠ prenosljive. Pri zamenjavi modela vdelave je treba re-indeksirati. Načrtujte čas.
- Večjezična kakovost.
bge-m3je dober za EU in RU, a v DE/SL je kakovost nižja kot v EN. Preverite na svojem zlatem setu.
9. Kaj storiti naprej
Če že imate UI asistenta in je čas za zamenjavo — izvajamo UI-revizijo za 900–4500 €. Če želite preizkusiti Taris — obstaja UI-pilot v 4–8 tednih za 3000–12000 € s fiksnim obsegom. −25 % za slovenska podjetja od 1. do 30. junija 2026 — glejte pakete.
Če želite najprej prebrati — oglejte si poglavja KB Taris (celoten opis) in OpenClaw (on-prem topologija).
10. Viri
- 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 izvaja UI-revizije procesov, UI-pilote in implementacije Taris za MSP v EU in SND. Odkrivalni klic — brezplačno, 30 minut.