Рассказал как технически устроен RAG-pipeline в bids.do, тендерном агрегаторе с подбором тендеров по прайсам поставщика. Из уникального — оригинальный способ решения задачи экстремальной классификации (это когда классов сильно больше 10 000). Суть такая: — Есть товар из прайса поставщика. — Его нужно отнести к коду товарного классификатора. — Проблема: классов много, данные сильно несбалансированы. Для частых товаров модель обучается нормально, а для редких классов данных почти нет. — Поэтому классический ML и supervised-модели вроде BERT сработали плохо. — Вместо этого я обогащаю описание каждого класса: беру реальные техспеки, вытаскиваю из них атрибуты, значения, синонимы, типичные формулировки, позитивные и негативные признаки. — Всё это кладу в векторную базу. — Для нового товара запускается гибридный поиск: BM25 плюс векторный поиск. — На выходе получается список наиболее вероятных классов, который дальше можно ранжировать и проверять. — Главная фишка: LLM помогает создать богатое представление классов. Например, для ноутбуков модель/пайплайн вытаскивает признаки вроде типа устройства, видеокарты, диагонали, назначения, процессора и т.д. Потом эти признаки помогают отличать близкие категории: бюджетный ноутбук, мультимедийный, игровой, бизнес-ноутбук. Почему это важно: — работает даже там, где мало обучающих примеров; — лучше держит редкие классы; — проще переносится на другой классификатор; — можно улучшать систему итеративно: нашли плохую категорию, дообогатили её атрибутами и confusion set; — классификация становится ближе к RAG/retrieval-задаче, а не к классическому ML. По метрикам: Такой подход дал примерно 85% micro и 72% macro. Тогда как обучаемые модели могли давать нормальный micro-score, но сильно проваливались по macro из-за редких классов. То есть ценность подхода именно в покрытии “длинного хвоста” товарных категорий.