Иногда реальные результаты могут превысить ожидания 🍀
🚀 Недавно на хакатоне получилось занять первое место, хотя шел я туда, честно говоря, просто поизучать новую, интересную для себя технологию. Тем не менее, все получилось даже лучше, чем ожидалось. А теперь давайте расскажу поподробнее про технологию и наше решение.
Задача на хакатоне была сформулирована не суперчетко, но мы поняли её так: нужно как-то обработать большой список товаров и выделить их ключевые характеристики.
В таблицах, которые нам дали, было также поле с кодами ОКПД2 — это такой общероссийский классификатор, который присваивает каждому товару свою группу.
Но есть пара проблем:
1. ОКПД2 — это просто классификация товаров, никаких конкретных параметров типа размеров или веса он не содержит. Он просто говорит, что товар относится к определенной категории, и всё (пример кодов на картинке ниже).
2. Параметры товаров записаны в строках. В таблице было поле с параметрами, которое нам и нужно было как-то распарсить. Проблема в том, что эти параметры записаны в хаотичном виде.
Например, строка вроде "120х80 RPPD 20кг" — в ней можно увидеть, что у товара есть размеры и вес, но что такое RPPD? Известно только Богу (или читавшему ГОСТ, как мы поняли чуть позже) 🤷♂️
Так как хакатон был посвящен теме ИИ, первая идея — взять LLM и просто дать ей все эти строки. Но ведь LLM сама по себе не поймет, что такое, например, RPPD.
Из дополнительной информации: нам также дали несколько сайтов, которые содержат эти товары и могли бы помочь, если идти с идеей распарсинга данных.
Но это было бы долго и ненадежно: каждый сайт имеет свою разметку, а API предоставляют не все.
🎯 Наша идея
Зато в датасете мы нашли поле ГОСТ для каждого товара. И тут нас осенило! Ведь ГОСТы содержат в себе всю информацию о товаре, которая нам как раз и нужна.
Таким образом, наша идея заключалась в том, чтобы предоставить некий доступ к ГОСТам для LLM, чтобы она "знала" их и могла выдавать ответы, ориентируясь на эти данные.
Так мы решили подключить технологию RAG (Retrieval-Augmented Generation). О ней в следующем посте, но если коротко, то она позволяет передавать LLM нужный контекст на лету, не переобучая её.
Вот наш план:
1. Вытаскиваем из ГОСТов ключевые данные о товарах.
2. Передаем эти данные LLM — теперь она может понять контекст и работать более осмысленно.
3. Получаем ответ от LLM, который легко перевести в таблицу ведь ответ мы просим её сделать по шаблону, и данные становятся упорядоченными, готовыми для анализа.
Так мы сделали решение, которое было высоко оценено жюри, и его можно улучшать и масштабировать.
Вишенкой на торте стало то, что, чем больше другие команды будут улучшать обработку ГОСТов, добавлять функционал по парсингу или дорабатывать LLM, тем сильнее станет наш подход, ведь он гибок и может сочетать в себе все эти методы.
Подробности о том, что такое RAG и как мы решили использовать эту технологию — в следующем посте! 🎉
Post #31
273