Многие организации, с которыми мы говорили, находятся на этапе исследования использования векторного поиска для персонализации, рекомендаций, семантического поиска и обнаружения аномалий на основе искусственного интеллекта. Недавние астрономические улучшения точности и доступности больших языковых моделей (LLM), включая BERT и OpenAI, заставили компании переосмыслить способы создания релевантного опыта поиска и аналитики.
В этом блоге мы собрали инженерные истории пяти первых пользователей векторного поиска — Pinterest, Spotify, eBay, Airbnb и Doordash — которые интегрировали искусственный интеллект в свои приложения. Мы надеемся, что эти истории будут полезны командам инженеров, которые продумывают полный жизненный цикл векторного поиска, от создания вложений до промышленного развертывания.
Векторный поиск — это метод эффективного поиска и извлечения похожих элементов из большого набора данных на основе представления данных в многомерном пространстве. В этом контексте элементами может быть что угодно, например документы, изображения или звуки, и они представлены как векторные внедрения. Сходство между элементами вычисляется с использованием метрик расстояния, таких как косинусное сходство или евклидово расстояние , которые количественно определяют близость двух векторных вложений.
Процесс поиска вектора обычно включает в себя:
Чтобы лучше визуализировать векторный поиск, мы можем представить себе трехмерное пространство, где каждая ось соответствует определенному объекту. Время и положение точки в пространстве определяются значениями этих признаков. В этом пространстве похожие предметы расположены ближе друг к другу, а разнородные — дальше друг от друга.
^ | x Item 1 | / | / | /x Item 2 | / | / | /x Item 3 | / | / | / +------------------->
По запросу мы можем найти наиболее похожие элементы в наборе данных. Запрос представляется как векторное внедрение в том же пространстве, что и внедрение элементов, и вычисляется расстояние между внедрением запроса и каждым внедрением элемента. Внедрения элементов с наименьшим расстоянием до встраивания запроса считаются наиболее похожими.
Query item: x | ^ | | x Item 1| | / | | / | | /x Item 2 | | / | | / | | /x Item 3 | | / | | / | | / | +------------------->
Очевидно, что это упрощенная визуализация, поскольку векторный поиск работает в многомерных пространствах.
В следующих разделах мы суммируем 5 инженерных блогов, посвященных векторному поиску, и выделим ключевые моменты реализации. Полные инженерные блоги можно найти ниже:
Pinterest использует векторный поиск для поиска и обнаружения изображений во многих областях своей платформы, включая рекомендуемый контент в главной ленте, связанные пины и поиск с использованием модели многозадачного обучения.
Многозадачная модель обучена выполнять несколько задач одновременно, часто используя общие представления или функции, что может улучшить обобщение и эффективность связанных задач. В случае с Pinterest команда обучила и использовала одну и ту же модель для продвижения рекомендуемого контента на главной ленте, связанных пинах и в поиске.
Pinterest обучает модель, сопоставляя поисковый запрос пользователя (q) с контентом, на который они нажали, или сохраненными пинами (p). Вот как Pinterest создал пары (q,p) для каждой задачи:
Связанные пины : встраивания слов получаются на основе выбранной темы (q) и булавки, на которую пользователь нажал или сохранил (p).
Поиск : встраивания слов создаются на основе текста поискового запроса (q) и булавки, на которую пользователь щелкнул или сохранил ее (p).
Домашняя лента : встраивания слов генерируются на основе интересов пользователя (q) и метки, на которую пользователь нажал или сохранил (p).
Чтобы получить общее встраивание объекта, Pinterest усредняет связанные встраивания слов для связанных пинов, поиска и домашней ленты.
Компания Pinterest создала и оценила свою собственную контролируемую Pintext-MTL (многозадачное обучение) в сравнении с моделями неконтролируемого обучения, включая GloVe, word2vec, а также с однозадачной моделью обучения PinText-SR по точности. PinText-MTL имел более высокую точность, чем другие модели внедрения, а это означает, что у него была более высокая доля истинно положительных прогнозов среди всех положительных прогнозов.
Pinterest также обнаружил, что модели многозадачного обучения имеют более высокую запоминаемость или более высокую долю релевантных случаев, правильно идентифицированных моделью, что делает их более подходящими для поиска и открытий.
Чтобы объединить все это в производство, у Pinterest есть многозадачная модель, обученная потоковой передаче данных из домашней ленты, поиска и связанных с ними пинов. После обучения этой модели векторные внедрения создаются в ходе большого пакетного задания с использованием либо Kubernetes+Docker, либо системы сокращения карт. Платформа создает поисковый индекс векторных вложений и выполняет поиск по K-ближайшим соседям (KNN), чтобы найти наиболее релевантный для пользователей контент. Результаты кэшируются в соответствии с требованиями к производительности платформы Pinterest.
Spotify сочетает в себе ключевые слова и семантический поиск для получения релевантных результатов по эпизодам подкаста для пользователей. В качестве примера команда подчеркнула ограничения поиска по ключевым словам по запросу «Влияние электромобилей на климат», запросу, который дал 0 результатов, хотя соответствующие эпизоды подкастов существуют в библиотеке Spotify. Чтобы улучшить запоминаемость, команда Spotify использовала Approximate Nearest Neighbor (ANN) для быстрого и релевантного поиска подкастов.
Команда создает векторные внедрения с использованием модели Universal Sentence Encoder CMLM, поскольку она является многоязычной, поддерживает глобальную библиотеку подкастов и создает высококачественные векторные внедрения. Были также оценены другие модели, включая BERT , модель, обученную на большом массиве текстовых данных, но выяснилось, что BERT лучше подходит для встраивания слов, чем встраивания предложений, и предварительно обучался только на английском языке.
Spotify создает векторные встраивания, при этом текст запроса является входным встраиванием и конкатенацией полей текстовых метаданных, включая заголовок и описание для встраивания эпизодов подкаста. Чтобы определить сходство, Spotify измерил косинусное расстояние между запросом и встраиванием эпизода.
Для обучения базовой модели CMLM Universal Sentence Encoder компания Spotify использовала положительные пары успешных поисков и выпусков подкастов. Они внедрили пакетные негативы — метод, описанный в таких документах, как «Dense Passage Retrieval для ответов на вопросы в открытом домене» (DPR) и Que2Search: быстрый и точный запрос и понимание документов для поиска в Facebook , чтобы генерировать случайные отрицательные пары. Тестирование также проводилось с использованием синтетических запросов и запросов, написанных вручную.
Чтобы включить векторный поиск в предоставление рекомендаций по подкастам в производстве, Spotify применил следующие шаги и технологии:
Индексировать векторы эпизодов : Spotify индексирует векторы эпизодов в автономном режиме в пакетном режиме с помощью Vespa , поисковой системы со встроенной поддержкой ANN. Одна из причин, по которой была выбрана Vespa, заключается в том, что она также может включать фильтрацию метаданных после поиска по таким функциям, как популярность эпизода.
Онлайн-вывод : Spotify использует Google Cloud Vertex AI для генерации вектора запроса. Vertex AI был выбран из-за поддержки логического вывода графического процессора, что является более экономичным при использовании больших моделей преобразователей для создания вложений, а также из-за кэша запросов. После создания вектора запроса он используется для получения 30 лучших эпизодов подкаста с Vespa.
Семантический поиск помогает идентифицировать подходящие эпизоды подкаста, но не может полностью заменить поиск по ключевым словам. Это связано с тем, что семантический поиск не обеспечивает точного соответствия терминов, когда пользователи ищут точное название эпизода или подкаста. Spotify использует гибридный подход к поиску, объединяя семантический поиск в Vespa с поиском по ключевым словам в Elasticsearch , за которым следует этап окончательного повторного ранжирования для определения эпизодов, отображаемых пользователям.
Традиционно поисковые системы отображают результаты путем сопоставления текста поискового запроса с текстовыми описаниями элементов или документов. Этот метод во многом опирается на язык для определения предпочтений и не так эффективен для выявления элементов стиля или эстетики. eBay вводит поиск изображений, чтобы помочь пользователям находить релевантные, похожие товары, соответствующие стилю, который они ищут.
eBay использует мультимодальную модель, которая предназначена для обработки и интеграции данных из разных модальностей или типов ввода, таких как текст, изображения, аудио или видео, для прогнозирования или выполнения задач. eBay включает в свою модель как текст, так и изображения, создавая встраивания изображений с использованием модели сверточной нейронной сети (CNN), в частности Resnet-50 , и встраивания заголовков с использованием текстовой модели, такой как BERT . Каждый листинг представлен векторным встраиванием, которое сочетает в себе встраивание изображения и заголовка.
После того как мультимодальная модель будет обучена с использованием большого набора данных, состоящего из пар изображений и заголовков списков и недавно проданных списков, настало время внедрить ее в работу при поиске по сайту. Из-за большого количества объявлений на eBay данные загружаются пакетами в HDFS, хранилище данных eBay. eBay использует Apache Spark для получения и хранения изображения и соответствующих полей, необходимых для дальнейшей обработки списков, включая создание вложений списков. Внедрения списков публикуются в столбчатом хранилище, таком как HBase, которое хорошо подходит для агрегирования крупномасштабных данных. Из HBase встраивание листинга индексируется и обслуживается Cassini, поисковой системой, созданной на eBay.
Управление конвейером осуществляется с помощью Apache Airflow, который способен масштабироваться даже при большом количестве и сложности задач. Он также обеспечивает поддержку Spark, Hadoop и Python, что делает его удобным для внедрения и использования командой машинного обучения.
Визуальный поиск позволяет пользователям находить схожие стили и предпочтения в категориях мебели и домашнего декора, где стиль и эстетика являются ключевыми факторами при принятии решения о покупке. В будущем eBay планирует расширить визуальный поиск по всем категориям, а также помочь пользователям находить похожие товары, чтобы они могли создать одинаковый внешний вид во всем своем доме.
Функции поиска и аналогичных объявлений обеспечивают 99% бронирований на сайте AirBnb. AirBnb разработала технологию внедрения объявлений , чтобы улучшить рекомендации по аналогичным объявлениям и обеспечить персонализацию поисковых рейтингов в режиме реального времени.
AirBnb рано осознала, что они могут расширить применение встраивания за пределы просто словесных представлений, охватив также поведение пользователей, включая клики и бронирования.
Для обучения моделей внедрения AirBnb включил более 4,5 миллионов активных объявлений и 800 миллионов поисковых сеансов, чтобы определить сходство на основе того, какие объявления пользователь нажимает и пропускает в течение сеанса. Списки, на которые нажимал один и тот же пользователь за сеанс, смещаются ближе друг к другу; списки, которые были пропущены пользователем, отодвигаются дальше. Команда остановилась на размерности встраивания списка d=32, учитывая компромисс между производительностью в автономном режиме и памятью, необходимой для онлайн-обслуживания.
AirBnb обнаружила, что некоторые характеристики объявлений не требуют изучения, поскольку их можно получить напрямую из метаданных, таких как цена. Однако такие атрибуты, как архитектура, стиль и атмосфера, гораздо сложнее получить из метаданных.
Прежде чем перейти к производству, AirBnb проверила свою модель, проверив, насколько хорошо модель рекомендует объявления, которые пользователь действительно забронировал. Команда также провела A/B-тест, сравнив существующий алгоритм списков с алгоритмом, основанным на векторном внедрении. Они обнаружили, что алгоритм с встраиванием векторов привел к увеличению CTR на 21% и увеличению числа пользователей, обнаруживших объявление, которое они забронировали, на 4,9%.
Команда также поняла, что векторные встраивания можно использовать как часть модели персонализации поиска в реальном времени. Для каждого пользователя они собирали и сохраняли в режиме реального времени с помощью Kafka краткосрочную историю кликов и пропусков пользователей за последние две недели. Для каждого поиска, проведенного пользователем, они выполняли два поиска по сходству:
на основе географических рынков, которые были недавно исследованы, а затем
сходство между списками кандидатов и теми, по которым пользователь щелкнул/пропустил
Встраивания были оценены в офлайн- и онлайн-экспериментах и стали частью функций персонализации в реальном времени.
Doordash предлагает широкий выбор магазинов, в которых пользователи могут делать заказы, а возможность отображать наиболее подходящие магазины с использованием персонализированных предпочтений улучшает поиск и обнаружение.
Doordash хотела применить скрытую информацию к своим алгоритмам подачи информации в магазине с помощью векторных вложений. Это позволит Doordash выявить сходства между магазинами, которые не были хорошо документированы, в том числе, есть ли в магазине сладкие товары, считается ли он модным или есть ли в нем вегетарианские блюда.
Doordash использовала производную от word2vec модель внедрения, используемую при обработке естественного языка, под названием store2vec, которую она адаптировала на основе существующих данных. Команда рассматривала каждый магазин как слово и формировала предложения, используя список магазинов, просмотренных за один сеанс пользователя, с максимальным ограничением в 5 магазинов на предложение. Для создания векторных векторов пользователей Doordash суммировал векторы магазинов, из которых пользователи размещали заказы за последние 6 месяцев или до 100 заказов.
Например, Doordash использовал векторный поиск, чтобы найти похожие рестораны для пользователя на основе его недавних покупок в популярных модных заведениях 4505 Burgers и New Nagano Sushi в Сан-Франциско. Doordash сгенерировал список похожих ресторанов, измеряя косинусное расстояние от пользовательского встраивания до места хранения встраивания в этом районе. Вы можете видеть, что ближайшие на косинусном расстоянии магазины включают Kezar Pub и Wooden Charcoal Korean Village BBQ.
Doordash включил функцию расстояния store2vec в качестве одной из функций своей более широкой модели рекомендаций и персонализации. Благодаря векторному поиску Doordash смог добиться увеличения рейтинга кликов на 5%. Команда также экспериментирует с новыми моделями, такими как seq2seq , оптимизацией моделей и включением данных об активности пользователей на месте в реальном времени.
Pinterest, Spotify, eBay, Airbnb и Doordash улучшают качество поиска и открытий с помощью векторного поиска. Многие из этих команд начали использовать текстовый поиск и обнаружили ограничения, связанные с нечетким поиском или поиском определенных стилей или эстетики. В этих сценариях добавление векторного поиска к опыту облегчило поиск соответствующих и часто персонализированных подкастов, подушек, проката, значков и закусочных.
Есть несколько решений, принятых этими компаниями, которые стоит упомянуть при внедрении векторного поиска:
Rockset, база данных поиска и аналитики в реальном времени, недавно добавила поддержку векторного поиска . Попробуйте векторный поиск на Rockset для персонализации, рекомендаций, обнаружения аномалий и многого другого в реальном времени, запустив бесплатную пробную версию с кредитами в размере 300 долларов США сегодня.