SINTARIS
ЯзыкENDESLRU
Связаться
← Все статьи

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

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

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. Распространённый неправильный подход

Что мы часто видим в «пилотах», начатых до нашего прихода:

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 / OpenRouter]
  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, OpenRouter, Ollama, llama.cpp. Маршрутизация задаётся в YAML:

default: openrouter:openai/gpt-4o-mini
routes:
  - match: { task: rerank }
    use:   ollama:bge-reranker-base
  - 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, по умолчанию 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 / 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-аудит процессов. Если хотите попробовать Taris, есть AI-пилот на 4–8 недель с фиксированным объёмом работ. Объём и стоимость согласуем после вводного звонка (см. пакеты).

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

10. Источники


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