Архитектура

Публичный обзор архитектуры

Десять архитектурных surface — multi-tenant isolation, RAG pipeline, LLM provider abstraction, channel adapters, streaming response, sub-processor data flow, deployment topology, disaster recovery, eval pipeline и observability. Engineering-side trust signal в паре с security controls, compliance posture и sub-processor list.

Изоляция данных между арендаторами

Каждый арендатор получает строгий ключ партиционирования ClientId, применяемый на каждом уровне хранения. Таблицы SQL Server (SLAtech.Db) и наши коллекции векторного поиска привязаны к ClientId с фильтрами уровня строк и уровня коллекций, применяемыми на уровне запросов. Паттерн репозитория отклоняет любой запрос без ClientId на этапе компиляции через правило статического анализатора (SLATECH001). Проекты Sentry, журналы аудита и blob-контейнеры — все сохраняют ту же дисциплину партиционирования. Межарендаторские данные — структурная невозможность, а не проверка во время выполнения.

Конвейер извлечения RAG

Приём → фрагментация → векторизация → upsert: документы (PDF, DOCX, извлечённый HTML, пары вопрос-ответ FAQ) разбиваются на фрагменты по 200-500 токенов с перекрытием в 50 токенов. Фрагменты векторизуются через нашу модель эмбеддингов (векторы размерности 1536) и записываются в наш индекс векторного поиска с метаданными (ClientId, sourceUrl, chunkIndex). Путь запроса: вопрос векторизуется, выполняется поиск top-K по косинусному сходству с фильтрацией по ClientId, порог ScoreThreshold по умолчанию 0.5. Извлечённые фрагменты передаются в LLM со структурированными метаданными цитирования, так что ответ содержит Snippet для каждого источника. Сверка выполняется еженощно как фоновая служба Worker (BackgroundService).

Абстракция LLM-провайдера

Все вызовы LLM идут через ILlmProvider — тонкую абстракцию над несколькими провайдерами языковых моделей (основной провайдер, альтернатива уровня Enterprise для резервирования и опциональный провайдер переранжирования). Выбор провайдера для каждого арендатора задаётся конфигурацией; при превышении лимита запросов или ошибке 5xx трафик автоматически переключается на резервный маршрут. Использование токенов и стоимость сообщаются по каждому вызову в теле ответа — арендаторы могут отслеживать расходы в реальном времени. Смена провайдера не требует миграции на стороне клиента — абстракция изолирует прикладной код.

Паттерн адаптера каналов

Каждый канал (веб-виджет, Telegram, WhatsApp Business, Instagram DM, электронная почта) реализует IChannelAdapter — общий контракт, транслирующий нативные для канала конверты сообщений в единую доменную модель Conversation. Паттерн адаптера позволяет основному конвейеру запросов работать независимо от канала; форматирование под конкретный канал (inline-клавиатуры Telegram, шаблонные сообщения WhatsApp) находится внутри адаптера. Добавление канала не затрагивает конвейер запросов.

Конвейер потоковых ответов

Потоковая передача на основе SSE через эндпоинт /v1/query/ask-stream. Первое событие — sources-early — отправляет метаданные цитирования до начала потоковой передачи ответа LLM (виджеты рендерят всплывающие карточки «по данным», пока ответ ещё стримится). Последующие события — фрагменты токенов; финальное событие — done с агрегированными метаданными (всего токенов, общая стоимость, ID журнала разговора). Сокращает воспринимаемую задержку примерно на 70% по сравнению с синхронным ответом.

Поток данных субпроцессоров

Запрос клиента → входящий трафик Kestrel → SLAtech.Api → вызов векторизации к нашему провайдеру модели (США, SCC 2021/914) → векторный поиск в нашем поисковом движке → вызов LLM к нашему провайдеру языковой модели с извлечёнными фрагментами → ответ к Kestrel → SSE обратно к виджету. Sentry получает очищенные конверты ошибок (PII вычищается до отправки). SendGrid обрабатывает транзакционную электронную почту (США, SCC 2021/914). Cloudflare WAF и CDN глобально на границе сети. Полный список субпроцессоров — на /ru/sub-processors/.

Топология развёртывания

Azure App Service (Linux) для SLAtech.Api, SLAtech.Web, SLAtech.AdminUI, SLAtech.Business + 8 вертикальных хабов. Azure SQL Database для реляционного хранилища с ежедневным резервным копированием и восстановлением на момент времени в пределах 24 часов. Наш движок векторного поиска на Azure VM с коллекциями для каждого арендатора. Azure Cache for Redis для сессий и корзины токенов для ограничения запросов. Azure Storage для blob-объектов документов. Cloudflare впереди для WAF / защиты от DDoS / CDN. Рабочие процессы GitHub Actions запускают продакшн-развёртывания при push в ветку production.

Готовность к аварийному восстановлению

RTO 4 часа, RPO 1 час. Ежедневные резервные копии Azure SQL с хранением 35 дней; восстановление на момент времени в пределах последних 24 часов. Наш движок векторного поиска снимается в снапшоты еженощно в Azure Storage. Многорегиональное переключение при отказе для высокой доступности. Регламент аварийного восстановления тестируется ежеквартально с имитацией отказа региона. Страница статуса на status.slatech.ai показывает аптайм в реальном времени + журнал инцидентов за последние 90 дней.

Конвейер оценки

Оценочный набор для каждой вертикали прогоняется еженощно против запечатанного набора из 200 тестовых вопросов (изолированного от циклов обучения/настройки). LLM-as-Judge оценивает фактологичность, галлюцинации и уверенность по каждому ответу. Агрегированные оценки по каждой вертикали выводятся на публичное табло на /ru/eval/. Регрессии оценки на ≥3 пункта запускают оповещение о ручной сортировке. Сам оценочный набор — открытый и доступен для скачивания как воспроизводимый шаблон — покупатели могут запустить его против своего арендатора SLAtech.

Стек наблюдаемости

Sentry на каждом бэкенд-сервисе с очисткой PII до отправки. Мониторинг синтетических транзакций с периодичностью 5 минут — 12 критических пользовательских сценариев. Инструментированные OpenTelemetry участки трассировки для таймингов конвейера запросов. Журнал аудита для каждого арендатора, экспортируемый на тарифе Enterprise. Панель аптайма в реальном времени на status.slatech.ai показывает 12 групп метрик, включая p95-задержку запросов, полноту извлечения и частоту ошибок по каждому каналу.

Нужны более глубокие architecture диаграммы?

Enterprise architecture deck и per-component sequence diagrams доступны под NDA.

Инструменты оценки покупателя

Четыре инструмента самообслуживания — tools для evaluating SLAtech (или любого AI chatbot vendor) без звонка с продавцами:

Scoreboard Eval 200-question per-vertical methodology TCO calculator Annual savings + payback period Сравнение вендоров Filter 16 vendors по 6 criteria Vendor checklist 30 procurement due-diligence вопросов