Стажировка по проекту
Создание ИИ-системы помощи в сопровождении на платформе Trafory
Компания: ООО "АлгоФьюжн"

Суть проекта
Задача
этапы реализации
Основные выводы
Создать интеллектуального ассистента на базе локальных больших языковых моделей (LLM) и векторного поиска для помощи пользователям платформы Trafory в навигации, предоставлении информации, ссылок на инструкции и базу знаний, включая автоматизацию поддержки пользователей платформы, обеспечение мгновенного доступа к базе знаний Trafory, упрощение навигации по платформе путем предоставления ссылок и инструкций, использование локальных языковых моделей для обработки естественного языка, внедрение векторного поиска и RAG, а также снижение нагрузки на службу поддержки и ускорение ответов на частые вопросы.


  1. Реализовать поиск информации по базе знаний
  2. Внедрить механизм RAG (Retrieval-Augmented Generation - генерация с использованием извлеченной информации)
  3. Провести исследование и выбор подходящих локальных LLM и решений для векторного поиска
  4. Собрать, структурировать и подготовить тексты базы знаний платформы Trafory
  5. Собрать и подготовить вопросы, объединить списки и очистить их от дубликатов, а также сформировать эталонные ответы на вопросы
  6. Интегрировать систему в веб-чат на платформе Trafory
  7. Разработать систему сбора статистики и логирования диалогов
  8. Провести тестирование скорости и корректности ответов ассистента
  9. Выполнить оптимизацию инфраструктуры и параметров модели
  10. Разработать API для взаимодействия с ассистентом
  11. Подготовить базу для контейнеризации приложения с использованием Docker
  12. Провести работу над модульной архитектурой системы
  13. Обсудить и реализовать механизмы обработки неоднозначных запросов
  14. Учитывать вопросы безопасности данных, разграничения доступа и использования локальных решений для сохранения данных внутри инфраструктуры заказчика
  1. Анализ и подготовка
  2. Работы с базой знаний
  3. Исследования и разработки поисковых механизмов и RAG
  4. Исследования и выбора языковых моделей
  5. Разработка системы и интеграции
  6. Тестирование и оптимизация
  7. Подготовка к передаче заказчику
Ключевые задачи
  1. Качество и структура базы знаний оказывают критическое влияние на релевантность и точность ответов ассистента. Требуется либо доработка со стороны команды, либо корректировка самой базы знаний заказчиком
  2. Гибридные подходы к поиску данных более эффективны, чем использование только векторного или полнотекстового поиска
  3. Локальные LLM требуют значительных вычислительных ресурсов, в то время как API модели могут быть ограничены стоимостью и политиками безопасности (особенно при работе с персональными данными)
  4. Существует компромисс между скоростью ответа, стоимостью и качеством, который требует тщательного балансирования при выборе окончательной архитектуры и моделей
  5. Реализованная модульная архитектура обеспечивает гибкость в выборе и замене компонентов (поисковых движков, моделей)
  6. Контейнеризация с использованием Docker является важным шагом для стандартизации и упрощения развертывания, но требует изучения и решения технических нюансов.
  7. Для снижения нагрузки на LLM и ускорения ответа на типовые запросы может быть эффективно использование статической базы "вопрос-ответ"
  1. Исследование и тестирование моделей: Проведен обширный анализ и тестирование различных локальных LLM (Saiga, DeepSeek, Mistral, Vicuna, Gemma и др.) и API моделей (OpenAI, Anthropic, Yandex, Mistral, Gigachat, DeepSeek, Qwen), определены наиболее подходящие кандидаты с учетом качества, скорости и стоимости
  2. Разработка поисковых механизмов: Разработаны и протестированы различные подходы к поиску информации в базе знаний, включая векторный поиск (с использованием Faiss, Qdrant), полнотекстовый поиск (TF-IDF, BM25) и гибридный поиск, сочетающий различные методы (векторы, теги, заголовки, ключевые слова) для повышения релевантности
  3. Обработка базы знаний: Созданы инструменты для парсинга Markdown файлов базы знаний, фильтрации нерелевантных фрагментов и подготовки данных для векторизации. Проведена работа по проверке и обновлению ссылок в базе знаний. Обсуждались рекомендации по улучшению структуры БЗ
  4. Реализация RAG-системы: Разработана базовая структура RAG-пайплайна, включающая поиск релевантных документов и генерацию ответа LLM на их основе
  5. Создание API: Разработан прототип и рабочая версия API для взаимодействия с интеллектуальным ассистентом на базе FastAPI, включающая различные хендлеры
  6. Логирование и метрики: Внедрено детальное логирование всех этапов работы RAG-системы для отладки и сбора аналитики. Разработан метод оценки качества ответов моделей с использованием GPT-4o. Разработаны скрипты для автоматизированного тестирования API. Реализован расчет примерной стоимости запросов к API моделям
  7. Пользовательские интерфейсы: Разработан прототип веб-виджета чата и Telegram-бот, оба взаимодействующие с API ассистента. Подготовлена демонстрационная версия бота (в формате Telegram) для заказчика
  8. Подготовка к развертыванию: Созданы основы для контейнеризации приложения с использованием Docker и успешно развернуты некоторые компоненты в Docker-контейнерах на сервере заказчика. Получен доступ к серверу заказчика и тестовый тенант на платформе Trafory
  9. Нагрузочное тестирование: Проведено нагрузочное тестирование ассистента для оценки производительности на локальной машине и сервере заказчика
Результаты проекта
Участники
команды проекта
  • Николай кус
    Тимлид проекта
    • Осуществлял общее руководство проектом
    • Организовывал и модерировал еженедельные встречи, ставил задачи
    • Координировал работу команд, взаимодействовал с заказчиком по требованиям и результатам
    • Инициировал обсуждения ключевых технических и организационных вопросов
  • Владимир Сачко
    Помощник тимлида
    • Помогал тимлиду
    • Общался с заказчиком по вопросам API и серверной инфраструктуры
    • Провел презентацию системы управления знаниями Ontoloo
  • александр недовизин
    программист-разработчик
    • Возглавлял группу по векторному поиску
    • Работал над выбором моделей эмбеддингов и разработкой гибридного поиска
    • Подобрал модель, обученную на русском языке
  • владимир курочкин
    Инженер-программист АСУТП
    • Возглавлял группу разработки чата
    • Разработал и представил RAG-систему с API на FastAPI, логированием и поддержкой разных LLM
    • Реализовал модульную архитектуру на принципах ООП/SOLID. Разработал скрипт для парсинга Markdown файлов, разбиения их на чанки и сохранения метаданных
    • Работал с векторной базой данных Faiss. Исследовал и реализовал полнотекстовый поиск (TF-IDF, BM25) и гибридный поиск
    • Разработал фильтр для Markdown-файлов и скрипт для генерации вопросов к базе знаний
    • Провел тестирование локальных моделей (Saiga, Gemma) и занимался их оптимизацией (квантизация)
    • Упаковывал разработанные компоненты в Docker-контейнеры и столкнулся с трудностями при их развертывании на сервере заказчика
    • Провел нагрузочное тестирование своей RAG-системы
    • Работал над интеграцией ассистента с Telegram и виджетом.
  • дарья турышева
    банковский служащий
    • Возглавляла группу разработки БЗ
    • Проводила сравнительный анализ различных LLM (DeepSeek, Saiga, GPT, Qwen и др.) по скорости, качеству и стоимости (для API)
    • Тестировала различные embedding-модели
    • Работала над реализацией и тестированием гибридного поиска, сочетающего векторы с тегами и заголовками, для повышения релевантности чанков
    • Тестировала базу знаний в формате JSON, работала над постобработкой базы знаний
    • Предложила разработку кода для автоматического сравнения ответов моделей с эталонами
  • ольга кириенко
    Специалист по организации международных автомобильных перевозок
    • Работала над структурой базы знаний, предлагая улучшения и иерархию
    • Провела исследование токенизаторов и тестирование векторного поиска (MiniLM)
    • Проверила и обновила ссылки в базе знаний
    • Подготовила примеры различных форматов ответов
    • Тестировала модели эмбеддингов (intfloat, BGE) и методы улучшения поиска (TF-IDF, BM25, ReRanker)
  • евгений сокол
    Инженер системотехник. ООО"ПромТехснаб" зам.технического директора
    • Активно участвовал в сравнительном тестировании LLM и embedding-моделей (включая MiniLM, MPNet, E5-Large, RuBERT-tiny2, Mistral 7B, Saiga NeMo 12B, GPT-NeoX 3.6B, Qdrant, Saiga, Rubert)
    • Сравнивал векторные базы данных (FAISS, ChromaDB, Qdrant)
    • Тестировал гибридный поиск (BM25+FAISS)
    • Выразил готовность и начал реализацию скриптов для автоматизированного тестирования API
    • Разработал прототип виджета чата (HTML, CSS, JS) и Telegram-бота, обращающегося к API ассистента
    • Провел нагрузочное тестирование ассистента на сервере заказчика
    • Обсуждал архитектуру мультиязычного ассистента для другого проекта
    • Реализовал подсчет и отображение стоимости запросов к ассистенту
  • иван панченко
    Медицина, фриланс
    • Разработал и поддерживал ассистента на основе статической базы вопросов-ответов в Google Sheets/таблице
    • Настроил высокий порог релевантности для минимизации ошибок в своем ассистенте
    • Разработал механизм автоматического обновления своей статической базы знаний, читая лог-файл RAG-системы Владимира Курочкина, подтвердив его работоспособность на сервере
    • Участвовал в оценке качества ответов моделей, в том числе используя GPT-4o
    • Предлагал и обсуждал вопросы экономической целесообразности различных подходов
    • Обсуждал интеграцию своего статического ассистента с RAG-системой
    • Участвовал в дискуссиях о принципах проектирования ПО (ООП, SOLID) и роли ИИ
    • Реализовал комбинированный поиск, сочетающий поиск по ключевым словам и эмбеддингам
  • юрий миронов
    оператор ЧПУ
    • Провел обширное тестирование различных API моделей LLM (OpenAI, Anthropic, Yandex, Mistral, Gigachat, DeepSeek, Qwen, Сбер), представил подробные отчеты со сравнением по скорости, стоимости и качеству
    • Предложил консультационную помощь по Docker и поделился опытом
  • николай степанков
    разработчик, архитектор ПО, предприниматель
    • Представил драфт API с платформой Trafory и поднял важные вопросы интеграции (авторизация, контекст)
    • Готовил инструментарий для проведения нагрузочного тестирования
  • герман зенков
    Руководитель IT проектов
    • Участвовал в тестировании LLM
    • Участвовал в обсуждении нагрузочного тестирования
  • эльнара авсень
    Менеджер по продажам
    • Участвовала в тестировании и запуске моделей на своих ресурсах
  • Александр Авсиевич
    Представитель заказчика
    • Организовал предоставление серверных мощностей и демо-доступ к платформе Trafory
    • Подтвердил заинтересованность в локальных LLM и метриках оценки качества
    • Участвовал в улучшении Базы знаний
    • Участвовал в финальной презентации
  • Артем авсиевич
    Представитель заказчика
    • Представил компанию Trafory и платформу, описали ее назначение и разделы
    • Предоставил структурированную Базу Знаний, FAQ и API
  • Олег жеганов
    Представитель заказчика
    • Представил компанию Trafory и платформу, описали ее назначение и разделы
    • Предоставил структурированную Базу Знаний, FAQ и API