категории | RSS

Команда Spotify Engineering представила Voyager — библиотеку для поиска ближайших соседей

Разработчики Spotify представили библиотеку Voyager, предназначенную для решения задачи поиска ближайших соседей. Новое решение постепенно будет внедряться в сервисы компании. Кроме этого, Voyager придёт на смену Annoy — прошлому решению от Spotify.

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

Код Annoy открыли в 2013 году, а на её базе реализовали многие функции в Spotify. За последние десять лет многое изменилось в области поиска данных. Появились решения, которые дают более точные результаты за половину времени поиска с помощью Annoy. Некоторые новые сервисы управления базами данных поставляются с уже встроенными функциями поиска ближайших соседей, а в традиционные решения добавляют продвинутые алгоритмы поиска. К примеру, в PostgreSQL появился векторный поиск pgvevctor.

Начиная с 2018 года некоторые команды разработчиков Spotify начали экспериментировать с открытыми библиотеками, которые могли бы стать заменой Annoy. Разработчики обратили внимание на hnswlib. С её помощью удалось получить десятикратный прирост производительности, но не было поддержки специфических функций, важных для Spotify. Команда приняла решение не коммитить функции, нужные только им, в общий репозиторий и занялась разработкой форка под названием Voyager.

Сейчас Voyager уже готов к использованию в продакшене. Особенности и функции Voyager включают в себя:

десятикратный прирост производительности по сравнению с Annoy;

сокращение использования памяти в 4 раза;

полностью многопоточное создание индексов и запросов;

отказоустойчивые индексы файлов с системой обнаружения повреждений;

потоковый ввод/вывод, совместимый с Google Cloud Platform;

используется в 16 раз меньше памяти во время создания индекса, чем в случае с оригинальной версией hnswlib;

полная поддержка Python и Java с одинаковыми интерфейсами;

версия для Java устанавливается без сторонних зависимостей, а для Python нужен только NumPy;

поддержка Windows, Linux и macOS на процессорах x86 и arm64.

Код библиотеки открыт и доступен на GitHub. Документацию для Python и Linux опубликовали на специальном веб-сайте.



Источник новости: habr.com

DimonVideo
2023-10-27T12:50:04Z

Здесь находятся
всего 0. За сутки здесь было 0 человек
Яндекс.Метрика