1+ выигранный хакатон или как мы уничтожили TenderHack 💪Задача 😱
На основе названия товара выдать его характеристики пользователю.
Как это выглядит со стороны пользователя:
1️⃣ Пользовель вводит название товара: '15.6" Ноутбук Acer Aspire 3 A315-44P-R2DH серебристый' (не реклама если что). Сервис исправляет его запрос при необходимости.
2️⃣ Сервис выдаёт
- Модель/Производителя товара (Aspire/Acer)
- Категорию товара (Ноутбуки)
- Характеристику товара (60 Гц, 512 Гб, ...)
3️⃣ Пользователю предлагают исправить найденные характеристики, чтобы в дальнейшем предобучать модель
Решение 🧠
1️⃣ В первую очередь мы сделали вывод модели и производителя товара на основе LLM (Command-R) просто прописав ей промпт 🙈
2️⃣ Затем долго строили модель классификации, которая бы определяла бы категорию товара
- Я сразу сказал, что давайте строить на e5 с помощью ANN+cosine similarity, но результаты были ужасны... Precision@1 ~ 0.001. После этого я решил обучить модель (последний слой и LoRA) на Contrastive Learning (SimCSE), но лосс оказался настолько ужасным, что мне захотелось плакать, и я понял, что я вообще не сделал анализ данных 🤔
- После этого мой напарник бился всю ночь за е5, а после этого предложил немного поменять данные, на которых мы считаем эмбеддинги и взять Okapi BM25 + обучить токенизатор. И УРА! Оно очень хорошо работает! 🆒
- Вывод: делайте анализ данных и начинайте с наивных методов 🙈
3️⃣ Коррекция неправильного ввода пользователя делалась за счёт LLMки, просто промптонули её 🙈
4️⃣ Вывод категорий - здесь самое сложное, мы сделали RAG, где:
- Retrieval - это поиск в Яндексе различных сайтов и их парсинг
- Augment - Запихали всё в LLM (128к контекста) и промптонули её, чтобы она агрегировала инфу с разных доков
- Generation - она выдала свою ЛЛМ-базу, тем что агрегировала результаты и выдала текст
Здесь мы столкнулись с проблемой, что наш IP забанили на сайтах пока мы тестили, но по итогу мы накупили прокси и парсили через них 🙈
5️⃣ Бэк и фронт был написан гениальным человеком, который вывозил всё в соляново - Vue.js, FastAPI (Спасибо Данила) 👍
Итог 👀
Хакатон был топовый по задачам, по организации, по соперникам, по атомсфере. Были сильные решения от топ-5 команд, но зарешал фронт и технологии.
Оценка хакатона 🙏
5 Валериев Бабушкина из 5 Валериев Бабушкинов
😯 😯 😯 😯 😯 / 😯 😯 😯 😯 😯