Инженерният екип на Spotify представи Voyager – библиотека за намиране на най-близките съседи
Разработчиците на Spotify показаха библиотеката Voyager, предопределена да реши казуса с намирането на най-близките съседи. Новото решение последователно ще бъде внедрено в услугите на компанията. В допълнение, Voyager ще размени Annoy — предходното решение от Spotify.
Дълго време стрийминг-услугата използваше библиотеката Annoy, с цел да реши казуса с намирането на най-близките съседи. Той се основава на система от рекомендации, търсене и генератор на плейлисти въз основа на потребителските желания. Компанията отбелязва, че е по-ефективно да се употребяват сходни библиотеки, в сравнение с да се извършват изискващите доста памет логаритми за машинно образование.
Кодът на Annoy беше отворен през 2013 година и доста основани на него функционалности бяха внедрени в Spotify. Много неща се трансформираха в региона на откриването на данните през последните 10 години. Появиха се решения, които дават по-точни резултати за половината от времето за търсене благодарение на Annoy. Някои нови услуги за ръководство на бази данни идват с към този момент вградени благоприятни условия за търсене на най-близките съседи и прибавят към обичайните решения разширени логаритми за търсене. Например, pgvevctor за векторно търсене се появи в PostgreSQL.
От 2018 година някои екипи за разработка на Spotify започнаха да опитват с библиотеки с отворен код, които биха могли да заменят Annoy. Разработчиците обърнаха внимание на hnswlib. С негова помощ съумяха да получат десетократно нарастване на продуктивността, само че е липсвала поддръжка на характерни функционалности, които са значими за Spotify. Екипът е решил да не се ангажира с функционалности, от които единствено той се нуждае и по този начин е почнала създаването на Voyager.
Voyager към този момент е подготвен за потребление. Характеристиките и функционалностите му включват:
десетократно нарастване на продуктивността спрямо Annoy; спад в използването на паметта с 4 пъти; напълно многонишков показател и основаване на заявки; устойчиви на неточности файлови показатели със система за разкриване на повреди; I/O стрийминг, съчетаем с Гугъл Cloud Platform; 16 пъти по-малко памет се употребява по време на основаване на показател, в сравнение с с истинската версия на hnswlib; пълна поддръжка на Python и Java със същите интерфейси; версията за Java се конфигурира без зависимости от трети страни, а за Python е нужен единствено NumPy; поддръжка на Windows, Linux и macOS на x86 и arm64 процесорите.Кодът на библиотеката е отворен и в GitHub. Документацията за Python и Linux беше на специфичен уеб-сайт.




