ML System Design Doc - [RU]
Дизайн ML системы сервиса PostFinder
1. Цели и предпосылки
1.1. Зачем идем в разработку продукта?
Бизнес-цель:
Улучшение доступа к информации в телеграм-каналах через автоматизированный поиск ответов с помощью чат-бота.
Проблематика:
Накопление повторных вопросов от пользователей, перегружающих поддержку.
Недостаточная видимость старых, но релевантных постов для пользователей.
Долгий процесс поиска и отсутсвие хорошей системы поиска внутри телеграмма.
Преимущества использования ML:
Использование современных LLM для автоматизации семантического поиска в большом объеме текстовой информации.
Суммаризация и предоставление релевантных ответов без необходимости ручного поиска.
Критерии успеха:
Интеграция бота в активные телеграм-каналы и обеспечение пользователей ответами на вопросы с помощью бота.
Пользователи находят ответы на свои вопросы в нашем телеграм боте.
Пользовательские потребности (исходя из USM и CJM):
Разрешение пользовательской необходимости в быстром и точном поиске информации внутри телеграм-каналов.
Уменьшение количества повторных вопросов, загружающих поддержку, и предоставление пользователю возможности самостоятельного поиска нужной информации.
Поддержание вовлеченности пользователя за счет удобства и быстроты обнаружения релевантной информации.
USER STORY MAPPING:
CUSTOMER JOURNAY MAP
Ожидаемый пользовательский опыт:
Пользователи смогут легко и интуитивно задавать вопросы и получать ответы, что улучшит их общее впечатление от использования телеграм-каналов.
Ответы будут предоставлены в формате, который легко ассимилируется и понимается пользователями.
1.2. Бизнес-требования и ограничения
Краткое описание бизнес требований
Разработка интуитивно понятного интерфейса для задавания вопросов в чате.
Создание системы для автоматического отвечания на вопросы на основе данных из социальных сетей.
Интеграция с основными социальными платформами с акцентом на экономию времени и повышение вовлеченности пользователей.
Соблюдение правил конфиденциальности и данных, включая GDPR.
Бизнес-ограничения
Разработка и тестирование в рамках бюджета и сроков проекта.
Обеспечение конфиденциальности и соответствие требованиям GDPR.
Управление зависимостями от сторонних API и поддержание модели в рамках финансовых ограничений.
Итерации проекта
Первая итерация:
Прототипирование основного функционала для демонстрации возможности системы.
Вторая итерация:
Разработка MVP для тестирования в контролируемой среде и проведение нагрузочных тестов. Бот должен уметь строить диалоги и искать в определенных телеграм каналов. А так-же реализована система мониторинга аккаунтов.
Третья итерация:
Оценка производительности на реальных данных и масштабирование. Добавление антифрода аккаунтов и запросов. Сообщения об ошибках, систему лайков и интента команд.
Четвертая итерация:
Доработка системы на основе пользовательской обратной связи и оптимизация производительности. Создание системы подписок и ограничение пользовательских функций и чарн рейт.
Описание бизнес-процесса пилота
Интеграция и тестирование системы на выбранных платформах.
Сбор и анализ обратной связи для последующих улучшений системы.
Критерии успеха и возможные пути развития проекта
Снижение числа повторных вопросов и повышение качества ответов.
Развитие: расширение функциональности, поддержка новых платформ, улучшение алгоритмов.
1.3. Что входит в скоуп проекта/итерации, что не входит
Какие БТ будут покрыты с технической точки зрения за первую итерацию:
Интеграция с API для анализа и классификации запросов пользователей на естественном языке.
Реализация базы данных для хранения и извлечения данных с использованием chroma db.
Разработка и тестирование алгоритма поиска для эффективного нахождения релевантных ответов.
Что не будет закрыто:
Ограниченная интеграция с социальными платформами, сосредоточенная только на основных платформах.
Итерационная оптимизация производительности: начальные версии могут не поддерживать полный объем запросов.
Неполная асинхронность обработки запросов и масштабирование системы.
Какие БТ будут покрыты с технической точки зрения за вторую итерацию:
Создание диалоговой системы, чат-бота с RAG и Memory
Ассинхронность запросов
Ручной фрод аккаунтов (Админка)
Какие БТ будут покрыты с технической точки зрения за третью итерацию:
Интент комманды
Поиск без указания канала или ресурса
Автоматический фрод аккаунтов или запросов
Описание результата с точки зрения качества кода и воспроизводимости
Код
Соответствие стандартам чистого кода и PEP8, использование Numpy Docstring для документирования.
Применение pre-commit-hooks для автоматической проверки кода RUFF.
Все тесты в GitHub actions должны быть пройдены.
RUFF ✅
Успешная установка зависимостей через Poetry и сборка виртуального окружения. ✅
Отсутствие конфликтов среды и пакетов, корректная сборка Dockerfile. ❌
Проведение нагрузочных тестов и асинхронная работа кода, проверка функциональности бота, подключения к API и работоспособности баз данных. ❌
Все изменения кода подвергаются code review перед слиянием в основную ветку. ✅
Последовательность проверки кода:
Выбора задачи в todoist
Cоздания ветки в Git для этой задачи и ее выполнения
Pull request в Main с коротким описанием изменений
Код проверяет более опытный товарищ и после мерджит в Main или пишет какие коррективы стоит еще внести
Задача закрывается как выполненая в todoist
Описание планируемого технического долга
Рассмотрение возможности интеграции с дополнительными API, включая OpenAI, для улучшения функциональности и качества ответов. ❌
Исследование альтернативных сервисов социальных сетей и способов интеграции. ✅
Эксперименты с различными запросами и промптами для обучения модели, а так-же токенайзерами и разбиением больших файлов. ❌
1.4. Предпосылки решения
Для создания системы, которая отвечает на потребности бизнеса и пользователей, учитываем следующие предпосылки:
Используемые данные: Взаимодействие с пользовательскими запросами и историческими данными постов в телеграм-каналах. Данные будут содержать текст запросов и контекст, в котором они были сделаны.
Горизонт прогноза: Система будет ориентирована на немедленный ответ без прогнозирования долгосрочных трендов.
Гранулярность модели: Ответы на вопросы будут генерироваться на уровне каждого запроса с использованием контекстно-зависимой обработки естественного языка.
Обоснование выбора данных и технологий: Выбор базируется на способности LLM обрабатывать и понимать естественный язык, а также их способности обобщать и извлекать информацию из большого массива текста.
2. Методология Data Scientist
Data Scientist
2.1. Постановка задачи
Решаемая техническая задача – разработка чат бот системы на основе LLM для автоматического ответа на вопросы пользователей, используя исторические данные постов телеграм и или других сервисов. Система включает элементы рекомендательной системы и поисковика аномалий в пользовательских запросах для предотвращения спама и нерелевантных запросов.
2.2. Блок-схема решения
Блок-схема будет включать следующие ключевые этапы:
Подготовка данных: Препроцессинг запросов и исторических данных постов.
Разработка модели: Прототипирование и настройка LLM для интерпретации запросов и поиска ответов.
Оптимизация: Тонкая настройка и рефакторинг для улучшения точности и скорости ответов.
Тестирование: Валидация системы на реальных пользователях и сбор обратной связи.
Закрытие технического долга: Работа над известными проблемами и улучшение инфраструктуры.
Подготовка пилота: Интеграция системы с тестовыми каналами и начальные испытания.
2.3. Этапы решения задачи Data Scientist
Data Scientist
При обращении к боту выполняется регистрация/аутентификация пользователя. Информация о пользователях хранится в базе данных PostgreSQL, имеющей следующую структуру:
user_id
telegram_id username first_name last_name registered_at
type_id
type_name montly_price
subscription_id
user_id type_id valid_from valid_to
user
user_id
telegram_id username first_name last_name registered_at
subscription_type
type_id
type_name montly_price
user_subscription
subscription_id
user_id type_id valid_from valid_to
Этап 1 – Подготовка данных: Загрузка, предобработка и векторизация постов целевого канала* для обучения модели, сохранение полученных эмбеддингов, например, в Chroma DB. На выходе — набор эмбеддингов постов целевого канала*. *Целевой канал: для автора – канал, к которому он подключает чат-бота, для пользователя – канал, который он выбирает для поиска информации.
Этап 2 – Обработка запроса пользователя: Получение, предобработка и векторизация запроса пользователя, передача его в систему семантического поиска. На выходе — эмбеддинг запроса пользователя.
Этап 3 – Семантический поиск: Определение схожести* запроса пользователя и информации в постах канала. На выходе — набор постов целевого канала, соответствующих запросу пользователя и отсортированных в порядке значимости согласно выбранному алгоритму. *Возможные варианты определения схожести: косинусное сходство, расстояние Жаккара, предварительно обученные языковые модели (BERT, GPT и др.) для измерения сходства эмбеддингов. Необходимо тестирование для определения оптимального варианта с учетом обрабатываемого объема информации, доступных вычислительных ресурсов и качества получаемого результата.
Этап 4 – Получение обратной связи: Оценка пользователем качества выданных чат-ботом ответов. Это необходимо для оценки работы алгоритма и выбора направлений для улучшения качества выдачи.
Этап 5 – Адаптация модели: Добавление системы отслеживания метрик эффективности, например, точности и полноты ответов. Здесь же может быть фиксация изменений качества при выборе на этапе 3 различных API.
Этап 6 – Формирование отчета: Описание используемых методов и параметров, достигнутых показателей эффективности, полученных данных для анализа и дальнейших доработок и улучшения чат
3. Подготовка пилота
3.1. Способ оценки пилота
Для оценки пилота сервиса PostFinder будет использован подход A/B тестирования, где одна группа пользователей продолжит использовать телеграм-канал без интегрированной системы PostFinder, а другая группа получит доступ к сервису. Оценка эффективности будет проводиться на основе следующих параметров:
Время на поиск ответа: Измерение времени, которое потребуется пользователям на нахождение информации с помощью PostFinder по сравнению с традиционным способом.
Точность ответов: Анализ релевантности предоставляемых ответов, основанный на отзывах пользователей и их взаимодействии с ботом.
Удовлетворенность пользователей: Опросы пользователей для сбора данных о их удовлетворенности сервисом.
Количество повторных запросов: Сравнение количества повторных вопросов в чате с и без сервиса PostFinder.
LTV: Количество пользователей который остаются и уходят от нашего продукта
DAU: Количество уникальных пользователей которые ежедневно приходят к нам
3.2. Что считаем успешным пилотом
Пилот считается успешным, если наблюдается статистически значимое улучшение в следующих областях:
Снижение времени на поиск ответа: Значительное уменьшение времени, которое пользователи тратят на поиск ответов на свои вопросы.
Повышение точности ответов: Увеличение процента точных и релевантных ответов, полученных пользователями.
Улучшение удовлетворенности пользователей: Позитивная динамика в отзывах пользователей и оценках удовлетворенности сервисом.
Сокращение повторных запросов: Уменьшение количества повторных вопросов на одни и те же темы, что свидетельствует об улучшении доступности информации.
3.3. Подготовка пилота
Анализ нагрузки: Оценка максимального количества запросов, которые модель сможет обработать в реальном времени.
Оценка ресурсов: Расчет необходимого объема вычислительных ресурсов для обработки пользовательских запросов.
Определение бюджета: Установление бюджета, доступного для проведения пилота, и соответствующего распределения ресурсов.
Экспериментальные ограничения: В случае ограниченных ресурсов, определение максимального количества пользователей, которое может быть включено в пилот.
В процессе эксперимента с бейзлайном может быть уточнена вычислительная сложность, и, соответственно, скорректированы параметры пилота с учетом полученных данных.
4. Внедрение для production систем, если требуется
для production систем, если требуется
4.1. Архитектура решения
4.1. Архитектура решения
Для внедрения в production система PostFinder будет развернута в соответствии с моделью, которая предусматривает масштабируемость, отказоустойчивость и быстрый отклик. Архитектура системы разделена на следующие компоненты:
Веб-интерфейс или API для пользовательских запросов: Будет обрабатывать входящие запросы от пользователей и возвращать ответы.
Сервис обработки естественного языка (NLP): Использует модели LLM для интерпретации запросов и поиска соответствующих ответов в базе данных.
База данных: Хранит информацию о постах и исторические данные запросов пользователей.
Система управления сессиями: Поддерживает состояние взаимодействия с пользователем.
Балансировщик нагрузки: Распределяет запросы по серверам для оптимизации производительности и предотвращения перегрузки.
Блок схема архитектуры доступна по ссылке
4.2. Описание инфраструктуры и масштабируемости
Описание инфраструктуры и масштабируемости
Инфраструктура решения будет построена на облачной платформе с использованием контейнеризации и оркестрации для обеспечения масштабируемости и эластичности. Возможности автоматического масштабирования и самовосстановления системы будут включены для обработки колебаний нагрузки.
CI/CD
GitHub Actions
TimeWeb/Selectel/YandexCloud/MtsCloud
AirFlow/Dagster
Docker
4.3. Требования к работе системы
Система будет разработана с учетом следующих требований:
Отказоустойчивость: Реализация нескольких уровней резервирования и быстрого восстановления работы в случае сбоев.
Отклик: Система нацелена на предоставление ответов в рамках ~1ms, что обеспечивает почти мгновенный отклик на пользовательские запросы.
4.4. Безопасность данных
Внедрение системы будет включать строгие меры безопасности для защиты данных пользователей и обеспечения соответствия нормативным требованиям, таким как GDPR.
Разработка включает:
**Шифрование данных: Все данные, передаваемые и хранимые системой, будут зашифрованы.
**Управление доступом: Строгая политика управления доступом для предотвращения неавторизованного доступа к информации. [Антифрод запросов, аккаунтов, телеграм каналов]
4.5. Риски
В процессе внедрения системы учитываются следующие риски:
Отключение API сервисов: Разработка альтернативных механизмов взаимодействия с данными в случае изменения условий использования API сторонних сервисов.
Атаки на сервис: Реализация системы мониторинга и средств обнаружения вторжений для своевременного реагирования на угрозы безопасности. [Антифрод]
Проблемы с масштабированием: Планирование архитектуры системы с учетом возможности легкого горизонтального масштабирования для поддержания высокой производительности при увеличении числа пользователей.
Внедрение системы будет проводиться этапами, начиная с ограниченного пилотного запуска и постепенно расширяясь до полноценной интеграции в production, что позволит минимизировать риски и гарантировать постоянное качество обслуживания пользователей
5. Контрибьюторы
6. Благодарности
7. Допольнительные документы
Last updated