Финальный проект по предмету "Введение в LLM"
Проект "Event-Assistant-Bot" направлен на создание интеллектуального ассистента для автоматизированного подбора собеседников на мероприятиях, таких как конференции, корпоративные встречи и массовые ивенты. Основная цель проекта — улучшение качества взаимодействия участников за счет использования системы рекомендаций, которая анализирует информацию о пользователях и предлагает наиболее подходящих собеседников для общения.
Создание системы с интерфейсом в виде Telegram-бота, поддерживающей формирование анкеты пользователя на основе информации из различных источников (текстовое описание, резюме, ссылка на социальные сети, диалоги из мессенджера), для выдачи ранжированного списка участников мероприятий со схожими интересами.
- Исследование и разработка методов создания профилей участников на основе различных типов данных: текстовое описание, ссылки на страницы в социальных сетях, диалоги и другие виды информации.
- Разработка алгоритмов подбора собеседников: разработка алгоритмов, которые будут использовать созданные профили для эффективного и контекстуально релевантного подбора собеседников на мероприятиях.
- Внедрение RAG: использование метода RAG совместно с разработанным алгоритмом подбора собеседников для улучшения качества мэтчинга.
- Создание интуитивного интерфейса: разработать удобный и простой в использовании интерфейс.
Одной из основных задач являлось формирование датасета, содержащего информацию о потенциальных пользователях бота в различном виде. Предполагалось, что будут использованы данные из открытых источников (тематические чаты, публичные аккаунты, форумы).
Наша команда приняла решение собирать информацию четырех видов: резюме, диалоги, ссылка на аккаунт в социальной сети, текстовое описание пользователя. Резюме были взяты из открытых чатов, в которых люди ищут работу в сфере IT. В качестве диалогов использовались сообщения из IT-топиков на Reddit, Текстовые описание пользователей брались из раздела "Summary" в резюме, в качестве аккаунтов в социальных сетях использовались аккаунты на linkedin.
Для сравнения версий приложения, качества используемых моделей и качества RAG-системы мы сформировали валидационную выборку, в которой содержалось по 5 файлов каждого типа данных (резюме, диалоги, текстовые описания, аккаунты в социальных сетях).
Flow валидации 📜
- Из каждого файла с помощью ChatGPT извлекается эталонный набор релевантных тегов.
- Из каждого файла с помощью локально развернутой модели производится извлечение тегов с использованием и без использования RAG.
- Для наборов, полученных с использованием и без использования RAG, рассчитываются значения Accuracy относительно эталонного набора, полученного с помощью ChatGPT.
Результаты 📈
Использование техники RAG повысило значение Accuracy с 0,489 до 0,546. Более подробно с результатами валидации можно ознакомиться по ссылке.
С помощью метода zero-shot и модели facebook/bart-base по данным от пользователя определяется наиболее релевантная профессия с целью дальнейшего извлечения соответствующих профессии навыков. С помощью модели mistralai/Mistral-7B-Instruct-v0.3 из текста выделяются теги, на основании которых строится список потенциальных собеседников с наиболее близкими профессиональным интересами.
Приложение было реализовано в виде Telegram-бота.
Пользователь имеет возможность создавать мероприятие, регистрироваться на существующее мероприятие по ключу доступа, добавлять данные о себе в различных форматах, получать ранжированный список других участников мероприятия со схожими интересами.
Ниже представлена демонстрация работы Telegram-бота.
- Через Telegram-бот пользователь вносит данные о себе в одном из следующуих форматов: текстовое описание, резюме в формате PDF, диалоги пользователя в формате JSON, гиперссылка на профиль в социальной сети.
- Данные преобразуются к текстовому формату для использования языковых моделей.
- С помощью zero-shot классификации и модели facebook/bart-base на основе полученных данных определяется наиболее релевантная профессия пользователя.
- Далее формируется запрос на портал easyoffer.ru с целью получения списка релевантных тегов для профессии.
- Выделенные теги добавляются к тексту, сформированному на основании данных от пользователя. Этот этап является ключевым, так как на нем применяется RAG.
- По тексту, содержащему релевантные полученной профессии теги, с помощью модели mistralai/Mistral-7B-Instruct-v0.3 выделяются теги.
- Выделенные теги присваиваются пользователю.
- При запросе пользователем выдачи потенциальных собеседников модель ранжирования с помощью косинусной близости возвращает список других пользователей с наиболее подходящими профессиональными интересами.
-
Убедитесь, что ваш Docker поддерживает исполнение контейнеров с GPU.
Windows + WSL2 - тык
Документация Docker - тык
-
Скачайте проект. Клонируйте репозиторий с исходным кодом на свой компьютер или скачайте архив с файлами.
git clone https://github.com/wilfordaf/Event-Assistant-Bot cd Event-Assistant-Bot -
В Dockerfile укажите тип API проекта.
Стандартно - Telegram Bot
Для REST API необходимо добавить флаг
--api -
docker-compose up
-
Пользуйтесь Telegram ботом, либо откройте браузер и перейдите по адресу: http://localhost:9090 при использовании API.
-
Создавайте мероприятия и находите единомышленников! 🎉🎉🎉
- ОС: Windows + WSL2, macOS, Linux.
- Docker - 4.34.2
- GPU - Nvidia с объёмом VRAM от 4GB








