Рейтинг продукта в Constructor

Увеличение бизнес-показателей за счет изменения порядка элементов

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

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

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

В этой статье мы представляем высокоуровневое представление системы ранжирования, включая то, почему мы ее разработали, как система работает и результаты, которые мы видели в A/B-тестах по сравнению с другими решениями. Это первая из серии предстоящих статей, которые будут основываться на этой и предоставлять больше технических деталей.

Оглавление

  1. Краткое введение в поисковую систему Constructor
  2. Поисковая система и ее ограничения
  3. Как работает система ранжирования продуктов Constructor
  4. Зачем отдельный сервис для ранжирования?
  5. Результаты A/B-тестирования
  6. На дорожной карте

Краткое введение в поисковую систему Constructor

В 2015 году Constructor был создан специально для того, чтобы помочь компаниям электронной коммерции улучшить свои возможности поиска и обнаружения с помощью ИИ и машинного обучения. Мы начали с сервиса автоматическое предложение, а затем в 2019 году запустили поиск, просмотр и рекомендации, создав целостную экосистему электронной коммерции, построенную с нуля на основе науки о данных.

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

  1. Система поиска
    По заданному поисковому запросу извлекайте все релевантные/привлекательные продукты (кандидаты). Метрика отзыв показывает процент релевантных элементов, извлеченных из всех релевантных. Чем выше отзыв, тем больше релевантных элементов возвращается.
  2. Система ранжирования
    При заданном наборе продуктов ранжируйте продукты наиболее эффективным способом для удовлетворения потребностей бизнеса. Метрика precision описывает процент привлекательных элементов в полученном наборе. В частности, мы оптимизируем показатель Precision@K, где K означает количество элементов, отображаемых в верхней части результатов поиска, которые следует учитывать при расчете точности. . Другими словами, мы хотим, чтобы привлекательные элементы занимали верхние позиции. Более высокая точность@K указывает на большее количество взаимодействий (например, клики, добавление в корзину, покупки) между пользователями и отображаемыми продуктами.
  3. Бизнес-правила/правила продавца
    Применение специфических для бизнеса правил электронной коммерции, определенных клиентом (оптимизация по размеру прибыли, доходу за посещение, коэффициенту конверсии, балансировке запасов и т. д.) перед возвратом окончательного ранжированный набор предметов.

В этой статье мы сосредоточимся в основном на второй части поисковой системы: системе ранжирования. Но сначала давайте кратко обсудим поиск.

Поисковая система и ее ограничения

В Constructor есть две основные системы поиска продуктов: Перевернутый индекс (II), который был создан внутри компании, и поиск в векторном пространстве, который мы будем называть по имени нашей собственной реализации, Поиск когнитивных вложений (CES).

Constructor'sII в первую очередь предназначен для электронной коммерции и превосходит другие популярные варианты в этой области, такие как SOLR, Lucene и ElasticSearch. Структура данных индекса построена на основе доступных для поиска полей, включая название продукта, размер, цвет, бренд, ключевые слова, сгенерированные ИИ, и т. д. Клиенты также могут отправить нам метаданные любого элемента в отдельном поле, чтобы включить его в II. Он также используется в производстве для быстрого получения элементов, релевантных заданному запросу, путем сопоставления слов (токенов) в запросе и слов (токенов) в доступных для поиска полях.

CES Constructor использует модели без учителя и с учителем (DSSM) для изучения векторного представления элементов и запросов. Вычисляя расстояния между запросами и элементами (косинусные расстояния между двумя векторами), мы возвращаем элементы Top-K, как было определено в ходе раундов A/B-тестирования для каждого клиента. Это значительно улучшает показатель отзыва и обеспечивает потрясающий рост показателей конверсии и покупок на основе внутренних A/B-тестов!

Обе эти системы уже имеют некоторое представление о ранжировании: II использует оценки токенов (в отличие от более традиционных алгоритмов, встроенных в Solr и Elasticsearch, таких как TF-IDF или BM25), а CES использует расстояния, полученные в качестве оценок.

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

Ранжирование с использованием CES в сочетании с IIзарекомендовало себя как отличная технология, победившая во всех внешних клиентских A/B-тестах, сравнивающих нашу систему как с другими поставщиками поисковых систем, так и с поисковыми системами, созданными на основе собственной технологии, такой как Solr. и эластичный поиск. Тем не менее, еще есть возможности для улучшения, основанные на следующих ограничениях:

  1. Доставка новых функций/сигналов, отнимающая много времени. Логика, применяющая факторы ранжирования, была разбросана по серверной части, поэтому специалисты по данным не могли легко вносить изменения. Отсутствие единого пайплайна создало другие ограничения: медленный цикл экспериментов, сложность добавления и масштабирования новых сигналов, а также сложность внедрения изменений для всех клиентов одновременно.
  2. Сложность предоставления «сложных» функций/сигналов.Рейтинг, примененный в системе поиска, был выполнен для всех элементов, возвращаемых системой. Ограниченные временными рамками вывода, мы могли добавлять только простые сигналы, которые были достаточно «дешевыми», чтобы можно было вычислить потенциально десятки тысяч продуктов.
  3. Отсутствие гибкости в настройке для конкретного клиента. Логику ранжирования было сложно настроить для каждого клиента, особенно когда мы хотели использовать разные наборы сигналов для разных клиентов. Мы могли использовать только «все функции» в рабочей среде, многие из которых не использовались. Это может привести к перегрузке системы.
  4. Сложности с добавлением внешних факторов ранжирования клиентов. У нас есть клиенты, которые хотят присылать нам характеристики для рассмотрения нашим алгоритмом ранжирования. Эти функции необходимо было добавлять индивидуально для каждого бизнеса.

Чтобы обойти эти ограничения, а также добавить больше ценности для бизнеса (о чем будет рассказано далее в статье), команда Конструктора решила создать отдельный сервис, нацеленный на еще лучшее ранжирование продукта.

Как работает система ранжирования продуктов Constructor

Система ранжирования Constructor – это сервис персонализированного ранжирования в режиме реального времени, основанный на моделях машинного обучения с эффективным предоставлением функций и рабочим процессом экспериментов.

Ниже вы можете найти диаграмму с упрощенным процессом ранжирования продуктов. Как правило, он работает поверх системы поиска, беря кандидатов Top-K, возвращенных системой поиска, и пропуская их через модель машинного обучения, чтобы получить прогнозируемые оценки, которые используются для ранжирования элементов.

В целом система состоит из 2-х частей: Offline и Online.

Не в сети

Чтобы иметь возможность обрабатывать запросы к Службе ранжирования онлайн, мы ежедневно создаем наборы данных иобучаем/загружаем модели для каждого клиента. Для этого у нас есть задание, которое при запуске создает DAG (направленный ациклический граф) для вычисления, сохранения и сбора всех необходимых данных (в основном с использованием Spark через Databricks), а затем обучает и сохраняет модель ML.

Создание набора данных

Чтобы создать данные для обучения модели машинного обучения, мы используем журналы поведения и результатов поиска для сбора данных о поисковых запросах каждого пользователя, отображаемых элементах и ​​взаимодействиях (клики, добавление в корзину, покупки и т. д.). Мы также запускаем вычисление признаков. Job и используйте автономное хранилище функций для хранения четырех типов собранных функций: метаданных элементов, пользовательских метаданных, истории пользователей и взаимодействий. Собранные функции ежедневно сохраняются в онлайн-магазине функций для использования в выводах в реальном времени.

Обучение/прием модели

После того, как набор данных и функции собраны, мы запускаем задание для обучения и оценки нашей модели машинного обучения в автономном режиме. Все созданные журналы, созданные в результате обучения и проверки модели (пути к модели и данным, значения метрик, статистика и т. д.), сохраняются в Neptune.ai для управления экспериментом, а модель и артефакты модели сохраняются в хранилище объектов, а метаданные модели вводится в базу данных.

В сети

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

  1. Получитьфункции персонализации и работы в реальном времени на основе метаданных и истории пользователя для последующего использования в результатах ранжирования.
  2. Получение кандидатов для ранжирования:
     – II получает запрос, находит и возвращает набор совпадающих элементов, автоматически применяя орфографическую коррекцию и расширение запроса.
     – Параллельно CES срабатывает для обогащения результирующего набора. Он использует векторное представление элементов и, таким образом, имеет гораздо более высокий (100%) охват по сравнению с II. Если результаты II недоступны, используются только результаты CES. В противном случае результаты двух систем объединяются для получения всех релевантных/привлекательных продуктов.
  3. Полученный набор элементов (от II и/или CES) передается в службу ранжирования. Он извлекает функции из онлайн-магазина функций, вычисляет некоторые «сложные» функции в реальном времени и извлекает соответствующую модель с ее артефактами с помощью реестра моделей. Передавая функции в модель, мы получаем окончательные оценки элементов для ранжирования результатов.
  4. Последним шагом в ранжировании является применение Правил для бизнеса/продавца, которое выполняется во внутренней службе.

Зачем отдельный сервис для ранжирования?

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

  1. Быстрая доставка новых функций/сигналов. Если раньше на добавление новой функции для ее рассмотрения в рейтинге уходило два месяца, то теперь на это уходит менее двух недель. Это было достигнуто за счет наличия модели ML для изучения ранжирования и отдельного хранилища для функций. Другие преимущества включают более быстрый цикл экспериментов, масштабируемое добавление новых сигналов и простоту предоставления изменений всем клиентам одновременно.
  2. Легко доставлять «сложные» функции/сигналы. Поскольку ранжирование применяется к кандидатам Top-K, теперь мы можем легко добавлять «сложные» функции, которые будут вычисляться только для небольшого набора элементов и не будут достигать ограничений по времени вывода.
  3. Гибкость в настройке для конкретного клиента. Логику ранжирования легко настроить для каждого клиента, поскольку мы можем установить разные параметры (модель, функция, набор данных) для каждого клиента только в файле конфигурации.
  4. Легко добавить внешние факторы ранжирования клиента. Клиенты могут отправить нам свои факторы ранжирования заранее определенным способом, чтобы включить их в нашу модель машинного обучения.
  5. Оптимальные результаты для задач продавца. В качестве бонуса правила мерчендайзера теперь можно интегрировать в систему ранжирования, предоставляя соответствующий набор функций (например, данные о рекламных акциях/продажах и данные о текущих запасах для рекламных акций и оптимизации запасов) для включения в ML. модель, отражающая бизнес-логику.

Результаты A/B-тестирования

Constructor поддерживает культуру экспериментов, поэтому A/B-тесты — наши лучшие друзья для проверки изменений, внесенных в службу ранжирования: новые функции, новая логика создания набора данных, оптимизация кода и т. д. Мы постоянно проводим A/B-тесты, чтобы доказать ценность, которую мы предоставляем нашим клиентам и определяемся с общим направлением дальнейшей работы.

У нас уже было много раундов A/B-тестов системы ранжирования, каждый из которых помог нам улучшить алгоритм и сервис.

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

  • В среднем +2 % прироста числа покупок
  • Увеличение коэффициента конверсии в среднем на 2 %
  • Средний прирост рейтинга кликов +3 %

О дорожной карте ранжирования продуктов

Система ранжирования все еще находится в процессе развертывания для всех клиентов. Мы делаем это медленно, чтобы оптимизировать соответствующие модели ML для каждого клиента, чтобы обеспечить максимальный подъем. Хотя он уже доказал свою ценность, увеличивая доход, конверсию и прибыль наших клиентов, мы не останавливаемся на достигнутом! У нас есть несколько планов по дальнейшему развитию и оптимизации сервиса ранжирования:

  • Применение отдельной службы ранжирования к просмотру. Конструктор ранжирует элементы, представленные, когда пользователи ищут продукты, переходя на страницу категории с панели навигации веб-сайта вместо ввода поискового запроса. Следующим в нашем списке стоит постепенное улучшение просмотра с помощью отдельной службы ранжирования. Мы наблюдаем отличные результаты в офлайн-режиме и надеемся на такие же результаты в предстоящих A/B-тестах.
  • Лучшее использование данных, предоставленных клиентами, для повышения рейтинга. Мы можем сделать ранжирование ML более персонализированным, если сможем использовать данные от сторонних поставщиков, с которыми сотрудничают наши клиенты, или от собственной команды DS клиента.

Заключение

Система ранжирования Constructor — это многообещающий сервис, который сделает бизнес электронной коммерции более успешным, найдя дополнительный способ использования пользовательских данных для поддержки модели ML. Мы постоянно работаем над улучшением системы и, в частности, алгоритма ранжирования, чтобы конечные пользователи были довольны. Когда покупатели видят более привлекательные результаты, которые они находят более привлекательными, они покупают больше, а розничные продавцы получают больше конверсий. Это беспроигрышный вариант.

Аршак Мхоян – инженер по машинному обучению в компании Constructor, где наши специалисты по обработке и анализу данных совместно работают над поиском и обнаружением товаров в электронной коммерции и ежегодно обслуживают миллиарды запросов для ведущих компаний розничной торговли.

Хотите присоединиться к поиску будущего? Мы нанимаем.