Привет, Habr! На связи Александр Сулейкин. к. т. н. и СЕО ИТ-компании “ДЮК Технологии”. Совместно с нашим экспертом по LLM-решениям Романом Бабенко подготовили новую статью по теме применения LLM для задачи сопоставления номенклатур товаров и поставщиков – типовой задачи, с которой часто сталкиваются менеджеры по закупкам. Статья подготовлена на базе реального Use Case пилотного внедрения в крупном ресторанном холдинге.

1. Актуальность
В современном ресторанном бизнесе правильное сопоставление номенклатур товаров между ресторанами и их поставщиками является критически важной задачей. Эффективное управление запасами и оптимизация закупок напрямую влияют на прибыльность бизнеса. С увеличением количества поставщиков и разнообразия продуктов, традиционные методы сопоставления становятся менее эффективными. В этом контексте использование специализированных цифровых ассистентов на основе больших языковых моделей (LLM) открывает новые горизонты для автоматизации и повышения качества сопоставления номенклатур товаров, и, более глобально – списка 1 со списком 2.
2. Описание Case Study
Наша команда разработала пилотный проект для одного крупного ресторанного холдинга, целью которого была автоматизация процесса сопоставления номенклатур товаров.
Описание целевой задачи: По заданному наименованию товара от клиента (ресторана) необходимо осуществлять автоматический поиск аналогов в общей базе товаров поставщиков.
Подбор аналога должен осуществляться по заданным критериям разделения товаров из базы на три категории:
-
Категория 1: точно подходящие позиции;
-
Категория 2: потенциально подходящие позиции;
-
Категория 3: не подходящие позиции.
Система должна сама формировать критерии разделения на категории исходя из полученного наименования товара и правил, учитывающих группу товара и требования ресторана.
В рамках разработки пилота были введены ограничения на осуществление ранжирования списков товаров по полученным от заказчика критериям для пяти групп продуктов: креветки, угорь, сыр пармезан, сыр творожный и масло сливочное.
Пример заданных критериев для классификации номенклатур в списке креветок представлен в таблице 1.
Таблица 1 — Пример критериев для отнесения номенклатуры списка креветок к одной из трех категорий
Категория |
Критерии |
Категория-1 (точно подходящие позиции) – выделяются зеленым цветом |
Критерии: – бренд Парменте / Parmente |
Категория-2 (потенциально подходящие позиции) – выделяются желтым цветом |
Критерии (все): – Все позиции, которые в своем названии не содержат “сыр мягкий”; – Все позиции, которые в своем названии не содержат упоминания таких стран, как Швейцария и Италия, так как это априори будет считаться импортом; – Все позиции, которые в названии не содержат слова “голова” либо имеют вес от 4,5 кг и более; – Все позиции, которые в названии не содержат такие слова как “Премиум”/ “Эксклюзив”. |
Категория-3 (не подходящие позиции) – выделяются красным цветом |
Все остальные позиции |
3. Популярные классические методы решения задачи сопоставления
Традиционные методы сопоставления товаров обычно включают:
-
Ручное сопоставление: требует значительных временных затрат и подвержено человеческим ошибкам.
-
Алгоритмы на основе правил: использование заранее заданных правил для сопоставления, что может быть неэффективно в условиях разнообразия и изменчивости данных.
-
Машинное обучение: применение моделей, обученных на исторических данных, однако они часто требуют большого объема размеченных данных и могут не справляться с новыми номенклатурами товаров. Процесс обучения также может быть трудоемким.
4. Архитектура решения с помощью LLM-модели и системы DUC SmartSearch
При разработке различных ИИ-ассистентов мы используем платформу продукта DUC SmartSearch на базе Danswer/ Flowise. Подробнее о возможностях системы SmartSearch можно узнать на сайте: https://duc-technologies.ru/smartsearch.
Мы уже реализовали множество ИИ-ассистентов в разных сферах, примеры проектов можно также найти на Habr – https://habr.com/ru/articles/850998/ – ИИ-ассистент для форматирования резюме в HR-Tech, https://habr.com/ru/articles/829022/ – чат-бот помощник на базе “Карты знаний” и др.
Верхнеуровневая схема архитектуры пилота системы для ранжирования списка товаров по заданным критериям представлена на рисунке 1.

Работа пользователя с системой реализована через интерфейс мессенджера Telegram. Бот принимает на вход для обработки файлы таблиц Excel в формате .xlsx. Список номенклатур продуктов должен находиться на первом листе, в первом столбце начиная с первой строки.
В результате обработки система добавит во второй столбец номер категории (1, 2 или 3) для каждой номенклатуры из списка. Проведет сортировку всего списка по возрастанию номера категории и выполнит заливку строк цветом:
-
Категория 1: зеленый цвет;
-
Категория 2: желтый цвет;
-
Категория 3: красный цвет.
На рисунке 2 представлен пример результата ранжирования списка товаров одной из групп после обработки моделью:

Общий процесс классификации наименований товаров на категории представлен на рисунке 3.

Далее приведены инструкции (промпты) для большой языковой модели (LLM), осуществляющей двухэтапные проверки соответствия наименований товаров заданным критериям для каждой группы.
1) Креветки
Этап |
Критерии |
Проверка соответствия Категории 1 |
Роль: Ты цифровой помощник менеджера поставок продуктов ресторанного холдинга. Ты получаешь от пользователя наименование товара (креветок), которое необходимо проверить на соответствие всем заданным критериям и вывести результат. Словарь: с/м – свежемороженные; с/х – с хвостом; б/г – без головы. Задача: Выведи 1, если наименование товара соответствует всем критериям ниже: 1) указан размер из списка [“21/25”, “26/30”] + 2) указан текст из списка [“очищ”, “очищ.”, “очищен.”] + 3) указан текст из списка [“с хвостом”, “на хвосте”, “с/х”, “с/хв”, “н/хв”, “с хв.”]. Критерии могут быть указаны в наименовании товара в любом порядке. ВАЖНО чтобы наименование товара соответствовало всем выше перечисленным критериям. Выведи 0, если наименование не соответствует хотя бы одному из выше приведенных критериев. Наименование товара: {input} Если пользователь не передал наименование товара, относящееся к креветкам – выведи пустую строку “”. Ничего не выдумывай. |
Проверка соответствия Категории 2 или 3 |
Роль: Ты цифровой помощник ресторанного холдинга. Ты получаешь от пользователя наименование креветок, которое необходимо проверить на соответствие заданным критериям и вывести результат. Словарь: с/м – свежемороженные; с/х – с хвостом; б/х – без хвоста; б/г – без головы. Задача: Выведи 2, если наименование товара соответствует всем критериям ниже: 1) указан размер из списка [16/20, 21/25, 26/30] + 2) указан текст из списка [“очищенные с хвостом”, “очищ.”, “очищен.”, “очищ, с хв.”, “очищ. с/х”, “без головы”, “б/г.”] + 3) не указан текст из списка [“в (кокосовой) панировке”, “в/п”, “в панцире”, “панцирь”, “пресноводная”]. Выведи 3, если наименование не соответствует хотя бы одному из выше приведенных критериев. Если пользователь не передал наименование товара, относящееся к креветкам – выведи пустую строку “”. Ничего не выдумывай. Наименование товара: {input} |
В результате был разработан пилот системы, которая получает на вход от пользователя список номенклатур определенной группы товаров и наименование группы товаров, обрабатывает список по заданным критериям для каждой группы и на выходе предоставляет ранжированный список с определенной категорией в каждой строке.
4.1. Основные вызовы и подводные камни при использовании LLM в рамках Case Study
Несмотря на преимущества, использование LLM также связано с рядом вызовов:
-
Качество данных: неполные или некорректные данные могут негативно сказаться на результатах.
-
Обучение модели: требуется значительное количество данных для обучения, что может быть сложно собрать.
-
Интерпретируемость: LLM могут давать результаты, которые сложно интерпретировать для пользователей.
-
Зависимость от контекста: модели могут не всегда правильно понимать контекст, что приводит к ошибкам в сопоставлении.
Ниже описание “подводных камней” при обработке данных в рамках данного пилота:
-
Креветки: Easy Peel модель понимает как очищенные, но это не верно.
-
Пармезан: Палермо – это город в Италии. Модель если находит слово Палермо, считает что название содержит упоминание об Италии
-
Судя по валидационным данным указание целой головы или ее части влияет на выбор номера категории. Например, наименование, содержащее «1/2 голова» может быть в Категории 2.
-
Слово Deluxe модель ассоциирует со словами Премиум или Эксклюзив. Для исключения таких ассоциаций в промпт добавляется словарь с необходимыми разъяснениями для слова Deluxe.
-
Масло сливочное: Ранферли – это город в Зеландии. Модель, если находит слово Ренферли, считает, что название содержит упоминание о Зеландии (ошибочно присваивает 1 категорию).
Как правило, такие проблемы решаем через формирование словарей или промпты. Однако такие случаи выявляются только после тщательного тестирования всех сценариев работы. В этом, зачастую, и кроется большая часть трудоемкости внедрения, чтобы решение соответствовало заявленному качеству.
5. Результаты внедрения
Оценка метрики качества классификации на категории осуществлялась на основе расчета точности (Accuracy) — доли правильно классифицированных объектов среди всех объектов в каждой группе товаров.

Таблица 2 — Оценка качества классификации групп товаров согласно заданным критериям
Группа товара |
Accuracy |
Accuracy |
Креветки |
81 |
80 |
Угорь |
88 |
85 |
Сыр творожный |
99 |
96 |
Сыр пармезан |
96 |
77 |
Масло сливочное |
90 |
81 |
Среднее арифметическое |
90,8 |
83,8 |
6. Масштабирование решения до целевого
В целевом решении предлагается использовать LLM для определения критериев ранжирования списка товаров поставщиков из получаемого наименования товара от клиента (ресторана).
Для составления критериев на вход модели подается вся необходимая информация:
-
Наименование товара,
-
Правила составления критериев для определенной группы товаров,
-
Дополнительные требования от клиентов.
На выходе модель составляет критерии ранжирования, которые используются на следующем шаге другой моделью для классификации списка товаров на категории (данная модель как раз апробирована в пилоте).
При необходимости модели возможно дообучить на примерах составления критериев и классификации (обычно делаем только в случае, когда другие методы не работают).

Заключение
По многим прогнозам экспертов, 2025 год будет годом активного развития ИИ-агентов и внедрения LLM-решений в бизнес. Компании, внедрившие ИИ-агентов уже получают выгоды от автоматизации, повышение лояльности клиентов и оптимизацию расходов на персонал, выполнение рутинных задач и т.д.
Активное внедрение ИИ-агентов – время недалекого будущего, которое активно наступает, а задача сопоставления номенклатур товаров будет, на наш взгляд, одной из наиболее востребованных у бизнеса.
P. S. Больше новостей об ИТ, ИИ и наших кейсах в моем авторском телеграм-канале: t.me/dataundercontrol.
Больше о наших кейсах: https://duc-technologies.ru/cases
Автор: asuleykin