Фишки и «грабли» использования машинного обучения от спикеров ML2Business

В среду 29 мая мы провели ML2Business — первую конференцию от Yandex Cloud, посвящённую кейсам применения GenAI, NLP, CV и других технологий ML в бизнесе.

Спикеры главного доклада анонсировали сразу несколько технологических новинок 

Все анонсы конференции кратко:

  • В Yandex Cloud открыли доступ к тестированию технологии генеративного ответа для бизнеса: этот механизм лежит в основе Нейро от Яндекса. С её помощью компании могут генерировать ёмкие ответы на вопросы пользователей по открытым данным сайтов и веб‑приложений компаний.

  • В Yandex SpeechSense появились новые возможности: теперь можно выгрузить данные из этого сервиса в свои продукты через API.

  • У YandexGPT появилось больше возможностей для классификации текстов: использовать по API отдельную версию генеративной модели может быть особенно полезно ритейлерам, стриминговым сервисам, банкам, другим онлайн‑платформам.

  • В Yandex DataSphere добавили функциональность для подключения дополнительных дисков для деплоя задач машинного обучения, а также использования повторяющихся заданий DataSphere Jobs для регулярного обучения моделей.

  • Запустили бесплатные образовательные курсы по ML: «ИИ для бизнеса», «ML‑сервисы: ключевые решения», курс по использованию Yandex SpeechSense.

Реальный опыт внедрения машинного обучения был представлен в двух треках: GenAI&NLP и GenAI&CV. Их программа была полностью посвящена историям использования ML в разных компаниях. В этой статье мы собрали инсайты спикеров из компаний «Инфосистемы Джет», «ВкусВилл» и Банки.ру, которые могут быть интересны техническим специалистам.

«Инфосистемы Джет»: автоматизация техподдержки на базе YandexGPT

Программу зала GenAI&CV открыл Антон Чикин, начальник отдела интеллектуального анализа в ИТ‑компании «Инфосистемы Джет».

Кратко о задаче. Компания внедрила решение на основе YandexGPT для автоматизации работы сервисного центра — подразделения, которое оказывает услуги техподдержки и ИТ‑аутсорсинга. В команде центра более 500 инженеров, они работают с десятками тысяч запросов от крупных компаний.

Выбранный компанией алгоритм на базе нейросети помогает определять тематику обращений, автоматически классифицировать их, готовить черновики ответов на запросы и тем самым оптимизировать загрузку сотрудников.

Как работает решение. Приложение использует внешнее хранилище документов, обращается к созданным источникам информации: базе знаний операторов сервисного центра и базе исторических данных системы управления заявками, — затем обрабатывает запросы по сценариям и генерирует релевантный ответ.

Во время пилотного проекта в распоряжении команды оказалось 13 000 запросов. На основе их анализа сотрудники центра машинного обучения предложили несколько вариантов автоматизации.

f916c47227e1e879f656ca14f6b519a8.png

  1. Для начала проанализировали всю выборку запросов и выделили 100 классов наиболее типовых случаев. Это позволило быстрее классифицировать обращения для их первичной маршрутизации.

  2. Для дообучения большой языковой модели на материалах базы знаний использовали метод Retrieval‑Augmented Generation (RAG).

  3. Сам запрос пользователя решили суммаризировать с помощью YandexGPT, чтобы с помощью промтов сразу извлечь из него сутевую часть.

В чём челлендж и выводы из него. При ближайшем рассмотрении задачи команда обнаружила сложности с качеством данных: в системе управления заявками было немало обращений, которые решены и закрыты без подробного описания или с очень общим описанием решения:

f80169c73e67b4b9e807411613c5ab26.png

База знаний с инструкциями также часто содержала не текстовые материалы, а множество скриншотов, которые были непригодны для дообучения языковой модели.

В процессе решения этих задач базу знаний проиндексировали с помощью эмбеддингов Yandex Cloud. Затем поиск релевантных документов в базе организовали на основе уже суммаризированного запроса пользователя — эксперименты показали, что стратегия с суммаризацией работает лучше, чем «голый» запрос.

После этого предусмотрено два варианта событий:

  • Если по запросу пользователя в базе знаний найден типовой кейс и для него уже подготовлена инструкция, то пользователь может сразу с ней ознакомиться, без привлечения сотрудников сервисного центра.

  • Если же поиск показывает, что никакая инструкция не подходит под запрос, но есть какие‑то похожие документы, то языковая модель помогает сформулировать «черновик» из релевантных фрагментов базы знаний. Оператор сервисного центра может сразу исправить или дополнить этот ответ и уже потом отправить его пользователю.

c1803f22877bb55b33e531821a94758b.png

В результате удалось автоматизировать обработку 30% из 13 000 запросов. Точность классификации составила 75%. Эта доля ответов была полностью автоматической и была одобрена специалистами без доработки.

Точность ответов дообученной языковой модели составила 80% — эта метрика показывает, насколько хорошо модель подбирала ответы по второму кейсу.

По наблюдениям команды, в некоторых случаях модель была склонна галлюцинировать, и в ходе пилота не всегда удавалось улучшить результаты с помощью промтов. В будущем специалисты надеются довести результат до 95%.

Само решение создали и внедрили за месяц. С точки зрения пользователя, оно построено в виде чат-бота:

dc61b3c94463b924fbaf120af9aa6b21.png

Главный вывод, который команда сделала по итогам пилота: если хочется использовать языковые модели на полную мощность, нужно быть готовыми изменить свои бизнес‑процессы, в том числе привлекать операторов для более плотной работы над решением и повышением качества данных для него.

Банки.ру: бот для поиска по внутренней документации

В зале GenAI & NLP разговор о базах знаний продолжился с другой точки зрения. Александр Багиров, CDTO финансового маркетплейса Банки.ру, постарался обобщить все «грабли» — моменты, где команда может совершить ошибку при создании и внедрении поискового ассистента на базе LLM для своей базы знаний.

Кратко о задаче Внутренняя энциклопедия Банки.ру насчитывает более 600 тыс. страниц, при этом ежемесячно она растёт более, чем на 5%. Команда внедрила умный поиск на базе YandexGPT, с возможностью регулярного дообучения на новых данных.

Как работает решение Поиск реализован в формате чат‑бота, который доступен через Slack и помогает сотрудникам искать ответы на их вопросы. Несколько примеров распространённых HR‑кейсов:

68bc23a5cc6469cd183f2a30c781a684.png

В качестве метода дообучения большой языковой модели также был выбран RAG, который считается лучшей практикой для таких растущих баз знаний.

Как технически устроен весь путь обращения: пользователь вводит запрос, проходит эмбеддинг, текст преобразуется в вектор, в векторной БД производится поиск наиболее похожих текстов, при необходимости идёт обращение в базу, где кешируется диалог с пользователем, и всё это объединяется в один промт, который подаётся в YandexGPT.

e13e34a38221c2dc2ad19b3eb3acca64.png

Сам чат‑бот написан на PHP, основной сервис написан на Python. Как организованы потоки обновления энциклопедии: в Airflow есть DAGs, которые скачивают базу знаний и затем отправляют в векторную базу для поиска.

952ec428c833dcc537496ee80426e9e4.png

В чём челлендж и выводы из него Процесс разработки и внедрения состоял из нескольких этапов, и на каждом из них были свои вызовы.

217c820c37eee1f889389b49407437e5.png

Основные сложности обнаружились при сборе и очистке данных. При высоких темпах роста базы команде хотелось максимально избежать ручных операций. Лучше в таких кейсах исключать их сразу, так как потом всё равно придётся от них избавляться.

После первичной очистки данных внутренней энциклопедии обнаружилось немало очень длинных статей, с которыми возникали проблемы, например, из‑за ограничений API или поискового движка. Такие данные нужно было разбивать на отдельные куски.

12031d37e725eccb898c095fe9dee9d3.png

Ещё одной «задачей со звёздочкой» стало продвинутое промтирование. Было важно явно ограничить галлюцинирование модели, чтобы избежать таких примеров:

e07ec6a2e63125991878b0f4df8fafd1.png

Главный вывод команды: если сразу учитывать все «грабли», то пройти весь путь внедрения можно в 2–3 раза быстрее. На этот проект ушло чуть больше месяца, и около половины времени заняла очистка данных.

b320d1ac3ea64d606fd5aae8bf947f93.png

ВкусВилл: чат-бот, который помогает определиться с выбором блюд 

Елена Тимофеева из сети бренда полезных продуктов и сервиса бесплатной доставки «ВкусВилл» совместно с Егором Красильниковым, генеральным директором компании‑партнёра AllSee.team, рассказали, как запускали «пИИрожок» — этот бот помогает пользователю выбирать товар из большого ассортимента готовых блюд под индивидуальные предпочтения.

Кратко о задаче В ассортименте «ВкусВилла» более 900 готовых блюд, и пользователи периодически оставляли отзывы, что в этом ассортименте трудно сориентироваться и выбрать желаемое. У команды появилась идея создать своеобразный «Акинатор от ВкусВилла», который бы «докапывался до чертог разума» и помогал пользователю выбрать то, что он действительно хочет.

Как работает решение Для разработки бота использовался фреймворк Aiogram 3 — было важно, чтобы все запросы были асинхронными, а пользователи быстро получали ответы.

ef9990b0306113b84af78ee9e39b0d3c.png

По результатам custdev‑исследований,  было важно научить чат‑бот решать три задачи:

  • учитывать аллергены и другие нежелательные продукты при выборе,

  • объяснять пользователю, почему был выбран тот или иной продукт,

  • получать обратную связь от покупателей, насколько выбор соответствовал их предпочтениям, и корректировать работу алгоритма на базе этого фидбэка.

Для распознавания аллергенов использовали две модели: ролевая модель, дообученная на базе YandexGPT, и линейный алгоритм, который выделял из справочника подходящие слова на основе введённых пользователем аллергенов.

7629ecb18f73755af8ff9f1eadb867d0.png

Точность такой ансамблевой модели достигла 97% — такова доля распознавания аллергенов в сообщении пользователя.

Для обоснования выбора блюд использовался алгоритм, который собирает ввод пользователя и с помощью нескольких промтов выводит текст.

01e8fc0196ea1c563ab5ae348b2be33d.png

На этом этапе команда отслеживала метрики скорости работы. Время отклика составило не более 10 секунд — это максимальное время, за которое происходит подбор блюд из базы в 1000 SKU и генерация текста‑обоснования.

Для отработки возражений использовался один промт‑алгоритм, который использовал все предпочтения и возражения, введённые пользователем, и затем корректировал предпочтения на основании возражений.

f3ea964aaf89f207cddbc30767c057b0.png

В чём челлендж и выводы из него В процессе запуска разработчики столкнулись с несколькими граничными случаями подбора под противоречивые запросы, например: чат‑бот мог предлагать людям пельмени на завтрак, а описание для некоторых пользователей могло содержать явные ошибки вроде «Мы учли ваши пожелания по азиатской кухне, рекомендуем вам борщ, приятного аппетита». Такие случаи быстро отрабатывали отдельно.

49bce86d8d829f623c0e7e7f10b48047.png

Для более точной работы модели команда советует максимально декомпозировать задачи, создавать под каждую подзадачу отдельную модель и затем объединять эти модели в ансамбли.

Главный вывод команды из всех экспериментов с промт‑инжинирингом: разработчики бота также рекомендуют использовать заложенные в YandexGPT структуры данных: system prompt для постоянных данных, и user prompt, куда уже подставляется ввод пользователя.

На текущем этапе пилотного запуска у специалистов ещё нет сквозной аналитики для подсчёта финансовых результатов, поскольку пока выгрузка данных по SKU производилась вручную. Этот запуск позволил получить обратную связь от пользователей и доработать модели с учётом всех граничных случаев. В будущем этот чат‑бот можно будет интегрировать с каталогом, который связан с базами данных склада и других систем.

Пересмотреть эти и другие практические доклады уже можно  на сайте конференции. До встречи на следующих мероприятиях!

© Habrahabr.ru