🚀 Попробуйте Zilliz Cloud, полностью управляемый Milvus, бесплатно — ощутите 10-кратное увеличение производительности! Попробовать сейчас>

milvus-logo
LFAI
  • Home
  • Blog
  • История SmartNews - от пользователя Milvus до активного участника

История SmartNews - от пользователя Milvus до активного участника

  • Scenarios
January 20, 2022
Milvus

Перевод этой статьи выполнен Анжелой Ни.

Информация повсюду в нашей жизни. Meta (ранее известная как Facebook), Instagram, Twitter и другие платформы социальных сетей делают информационные потоки все более вездесущими. Поэтому механизмы, работающие с такими информационными потоками, стали обязательным элементом архитектуры большинства систем. Однако если вы являетесь пользователем социальных сетей и соответствующих приложений, то наверняка сталкивались с проблемой дублирования статей, новостей, мемов и прочего. Дублирование контента затрудняет процесс поиска информации и приводит к ухудшению пользовательского опыта.

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

SmartNews, оцениваемая в 2 миллиарда долларов США, является самой высокооцененной компанией в сфере новостных приложений в США. Примечательно, что раньше она была пользователем Milvus, векторной базы данных с открытым исходным кодом, но затем превратилась в активного участника проекта Milvus.

В этой статье рассказывается об истории SmartNews и о том, почему она решила внести свой вклад в проект Milvus.

Обзор SmartNews

Компания SmartNews, основанная в 2012 году, имеет штаб-квартиру в Токио, Япония. Новостное приложение, разработанное компанией SmartNews, всегда занимало первые места на японском рынке. SmartNews является самым быстрорастущим новостным приложением, а также может похвастаться высокой пользовательской популярностью на рынке США. Согласно статистике APP Annie, по итогам июля 2021 года SmartNews занял первое место по среднемесячной продолжительности сеанса среди всех новостных приложений, превысив по этому показателю AppleNews и Google News.

В связи с быстрым ростом пользовательской базы и ее плотности SmartNews приходится сталкиваться с новыми вызовами в плане рекомендательного механизма и алгоритма искусственного интеллекта. Среди таких задач - использование массивных дискретных признаков в крупномасштабном машинном обучении (ML), ускорение запросов к неструктурированным данным с помощью векторного поиска по сходству и другие.

В начале 2021 года команда динамических рекламных алгоритмов SmartNews отправила запрос команде инфраструктуры искусственного интеллекта о необходимости оптимизации функций отзыва и запроса рекламных объявлений. После двух месяцев исследований инженер инфраструктуры искусственного интеллекта Шу решил использовать Milvus, векторную базу данных с открытым исходным кодом, поддерживающую множество индексов и метрик сходства, а также онлайн-обновление данных. Milvus доверяют более тысячи организаций по всему миру.

Векторная база данных Milvus с открытым исходным кодом используется в рекламной системе SmartNews для подбора и рекомендации динамических объявлений из 10-миллионного набора данных своим пользователям. Таким образом, SmartNews может создать связь между двумя ранее не сопоставимыми наборами данных - данными о пользователях и рекламными данными. Во втором квартале 2021 года компании Shu удалось развернуть Milvus 1.0 на Kubernetes. Узнайте больше о том, как развернуть Milvus.

img img

После успешного развертывания Milvus 1.0 первым проектом, в котором использовался Milvus, стал проект по отзыву рекламы, инициированный командой Ad в SmartNews. На начальном этапе набор данных рекламы был миллионного масштаба. При этом задержка P99 строго контролировалась в пределах менее 10 миллисекунд.

В июне 2021 года Шу и его коллеги из команды алгоритмов применили Milvus к большему количеству бизнес-сценариев и попытались агрегировать данные и обновлять данные/индекс в режиме реального времени.

К настоящему времени векторная база данных Milvus с открытым исходным кодом используется в различных бизнес-сценариях SmartNews, включая рекомендацию рекламы.

От пользователя к активному участнику

В процессе интеграции Milvus в архитектуру продукта Smartnews Шу и другие разработчики обратились с запросами на такие функции, как горячая перезагрузка, TTL (time-to-live) элементов, обновление/замена элементов и другие. Эти функции также хотели получить многие пользователи в сообществе Milvus. Поэтому Деннис Чжао, руководитель группы инфраструктуры искусственного интеллекта в SmartNews, решил разработать и предоставить сообществу функцию горячей перезагрузки. Деннис считает, что "команда SmartNews получает пользу от сообщества Milvus, поэтому мы более чем готовы внести свой вклад, если нам есть чем поделиться с сообществом".

Перезагрузка данных поддерживает редактирование кода во время его выполнения. С помощью data reload разработчикам больше не нужно останавливаться на точке останова или перезапускать приложение. Вместо этого они могут редактировать код напрямую и видеть результат в режиме реального времени.

В конце июля Юсуп, инженер SmartNews, предложил идею использования псевдонимов коллекций для достижения горячей перезагрузки.

Создание псевдонима коллекции подразумевает указание имен псевдонимов для коллекции. Коллекция может иметь несколько псевдонимов. Однако один псевдоним соответствует максимум одной коллекции. Проведите аналогию между коллекцией и шкафчиком. Шкафчик, как и коллекция, имеет свой номер и позицию, которые всегда остаются неизменными. Однако вы всегда можете класть и доставать из шкафчика разные вещи. Аналогично, имя коллекции фиксировано, но данные в ней динамичны. Вы всегда можете вставлять или удалять векторы в коллекции, так как удаление данных поддерживается в Milvus pre-GA версии.

В случае с рекламным бизнесом SmartNews почти 100 миллионов векторов вставляются или обновляются по мере генерации новых динамических рекламных векторов. Существует несколько решений этой проблемы:

  • Решение 1: сначала удалить старые данные и вставить новые.
  • Решение 2: создать новую коллекцию для новых данных.
  • Решение 3: использовать псевдоним коллекции.

Для решения 1 одним из наиболее очевидных недостатков является то, что оно занимает очень много времени, особенно если набор данных, который необходимо обновить, огромен. Как правило, обновление набора данных масштаба 100 миллионов занимает несколько часов.

Что касается решения 2, то проблема заключается в том, что новая коллекция не сразу становится доступной для поиска. Иными словами, коллекция не доступна для поиска во время загрузки. Кроме того, Milvus не позволяет двум коллекциям использовать одно и то же имя коллекции. Переключение на новую коллекцию всегда требует от пользователей ручной модификации кода на стороне клиента. Иными словами, пользователям придется пересматривать значение параметра collection_name каждый раз, когда им понадобится переключиться между коллекциями.

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

Юсуп начал с этого запроса и помог всей команде SmartNews понять архитектуру Milvus. Через полтора месяца проект Milvus получил от Юсупа PR о горячей перезагрузке. А позже эта функция стала официально доступна вместе с релизом Milvus 2.0.0-RC7.

В настоящее время команда инфраструктуры искусственного интеллекта занимается развертыванием Milvus 2.0 и постепенной миграцией всех данных с Milvus 1.0 на 2.0.

img_collection alias Псевдоним img_collection

Поддержка псевдонима коллекции может значительно улучшить работу пользователей, особенно для крупных интернет-компаний с большим количеством пользовательских запросов. Ченглонг Ли, инженер по обработке данных из сообщества Milvus, который помог построить мост между Milvus и Smartnews, сказал: "Функция псевдонима коллекции возникла в результате реального бизнес-запроса SmartNews, пользователя Milvus. А SmartNews предоставил код сообществу Milvus. Этот акт взаимности - отличный пример духа открытого исходного кода: от сообщества и для сообщества. Мы надеемся увидеть больше таких участников, как SmartNews, и совместно построить более процветающее сообщество Milvus".

"В настоящее время часть рекламного бизнеса использует Milvus в качестве оффлайновой векторной базы данных. Официальный релиз Mivus 2.0 приближается, и мы надеемся, что сможем использовать Milvus для создания более надежных систем и предоставления услуг в режиме реального времени для большего количества бизнес-сценариев", - сказал Деннис.

Обновление: Milvus 2.0 стал общедоступным! Узнать больше

Like the article? Spread the word

Продолжить чтение