Taris: AI-ассистент, где данные остаются у клиента

2026-06-26 · Sintaris · taris, rag, on-prem, ollama, vendor-neutral, smb, ai-platform

Taris: AI-ассистент, где данные остаются у клиента

TL;DR. Taris — это AI-ассистент, у которого данные клиента не уходят к вендору. Базовая позиция: модель — это плагин за стабильным интерфейсом, а не центр архитектуры. Внутри — vendor-neutral диспетчер LLM, гибридный RAG (BM25 + dense + RRF + cross-encoder rerank), мультитенантный Postgres с pgvector, опционально локальные модели через Ollama. Эта статья — про то, как Taris устроен, почему он так устроен, и где это даёт выигрыш для SMB в EU и СНГ.

1. Конфликт: «возьмём GPT-4 — и забудем»

Когда руководитель малого бизнеса спрашивает «какой AI-ассистент нам поставить», ему обычно отвечают одной из двух крайностей:

Taris — это третий путь: продуктизованная база (диспетчер моделей, гибридный RAG, мультитенантный Postgres, адаптеры каналов), которую мы внедряем под клиента и оставляем клиенту. Не SaaS. Не «соберём с нуля». Полу-продукт, который понятно адаптировать.

2. Кому это касается

3. Распространённый неправильный подход

Что мы видим в 70% «пилотов», начатых до нас:

4. Инженерный подход: что внутри Taris

Архитектура — четыре независимых слоя:

flowchart LR
  subgraph Channels[Каналы]
    TG[Telegram Bot]
    WEB[Web UI / PWA]
    VOICE[Голос]
    API[REST API]
  end
  subgraph Core[Ядро]
    GW[FastAPI Gateway]
    ORCH[Оркестратор агентов]
    DISP[LLM Dispatcher]
    KB[KB Service]
    AUTH[Auth + RBAC]
  end
  subgraph Storage[Хранилище]
    PG[(Postgres + pgvector)]
    OBJ[(MinIO / S3)]
    LOG[(Audit log)]
  end
  subgraph Models[Модели]
    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

Каждый слой заменяем. Это — ключевая точка. Каналы — это адаптеры. Модель — это плагин. Хранилище — это бэкенд. Оркестратор — это единственное место, где живёт бизнес-логика. Если завтра OpenAI поднимет цены втрое, Taris-инсталляция переключается одним конфиг-файлом.

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: ...

Семь конкретных провайдеров: OpenAI, Anthropic, Gemini, YandexGPT, OpenRouter, Ollama, llama.cpp. Маршрутизация — через 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. Гибридный RAG с RRF

Извлечение — в три проходных стадии:

  1. Lexical (BM25) — Postgres FTS с language-aware analyzer для RU/EN/DE/SL.
  2. Dense — pgvector cosine, default text-embedding-3-small, для on-prem — bge-m3.
  3. Metadata boost — точное совпадение по тегам (product, section, last_updated).

Слияние — Reciprocal Rank Fusion:

$$ \text{score}(d) = \sum_{i \in \text{retrievers}} \frac{1}{k + \text{rank}_i(d)}, \quad k = 60 $$

Затем cross-encoder rerank (bge-reranker-base) до top-5. Эмпирический выигрыш на нашем внутреннем golden-сете охраны труда: recall@5 0.71 → 0.88 (RRF vs pure dense), grounding-rate +0.07 после rerank. Это не «слегка лучше», это разница между «можно использовать» и «вернуть деньги клиенту».

4.3. Мультитенантный Postgres с RLS

CREATE POLICY tenant_isolation ON chunks
  USING (tenant_id = current_setting('app.tenant_id')::int);

Каждое соединение перед запросом делает SET app.tenant_id = $1. Невозможно случайно прочитать данные другого клиента: на это ругается сама БД.

5. Диаграмма + таблица: какие компоненты заменяемы

Слой По умолчанию Альтернатива Стоимость переключения
Embedding text-embedding-3-small bge-m3 конфиг + переиндексация
Reranker bge-reranker-base mxbai-rerank конфиг
Vector store pgvector Qdrant docker-compose + миграция
LLM gpt-4o-mini claude-3-5-sonnet, llama3.1:8b конфиг
Канал Telegram Web / VK / Slack / WhatsApp адаптер ~200 строк
Хранилище файлов MinIO S3 / Nextcloud конфиг
Деплой Docker Compose Kubernetes / Nomad манифесты

6. Sintaris mini-case

Продукт Worksafety Superassistant — пример Taris в реальном деплое. Задача:

Техническая реализация (см. Worksafety Superassistant KB и OpenClaw architecture KB):

Метрики через 90 дней:

Подробности — Worksafety § 6 RAG pipeline и OpenClaw § 8 AI dispatch.

7. Чек-лист (15 пунктов) при выборе AI-ассистента для SMB

  1. Vendor lock-in проверен: можете ли вы за неделю сменить LLM-провайдера?
  2. Данные клиента — где физически хранятся документы?
  3. Эмбеддинги — где хранятся? (часто забывают: они тоже PII-производные)
  4. DPA подписан с каждым LLM-провайдером, который вы используете.
  5. Eval-сет — есть ли он, и сколько в нём вопросов?
  6. Цитирование — генерирует ли система ссылки на источники?
  7. Грундинг-rate — измерен ли он? (если нет — значит, никто не знает, врёт модель или нет)
  8. Тестируется ли регрессия retrieval после каждого изменения промпта?
  9. Multi-tenant безопасность — RLS на уровне БД, не "договариваемся в коде"?
  10. Локальные модели доступны — есть ли план B, если облако упало?
  11. Цена за токен — мониторится ли в реальном времени?
  12. DSAR + erasure — реализованы ли как код, а не как ручная процедура?
  13. Audit log — есть, иммутабельный, нужного срока хранения?
  14. Каналы — добавление нового канала это <500 строк или переписывание ядра?
  15. Документация — на каком языке, для кого, как часто обновляется?

8. Риски

9. Что делать дальше

Если у вас уже есть AI-ассистент и его пора менять — мы делаем AI-Audit за €900–4500. Если хотите попробовать Taris — есть AI-Pilot на 4–8 недель за €3000–12000 с фиксированным scope. Скидка −25% для словенских компаний с 1 по 30 июня 2026 — см. пакеты.

Если хотите сначала почитать — посмотрите KB-главы Taris (полное описание) и OpenClaw (on-prem топология).

10. Источники


Sintaris делает AI-аудиты процессов, AI-пилоты и внедрения Taris для SMB в EU и СНГ. Дискавери-звонок — бесплатно, 30 минут.