TECHitMedia.NET

Бъди в крак с технологиите!

Инженерният екип на Spotify представи Voyager – библиотека за намиране на най-близките съседи

Сподели с приятели.

Разработчиците на Spotify представиха библиотеката Voyager, предназначена да реши проблема с намирането на най-близките съседи. Новото решение постепенно ще бъде внедрено в услугите на компанията. В допълнение, Voyager ще замени Annoy — предишното решение от Spotify.

Дълго време стрийминг-услугата използваше библиотеката Annoy, за да реши проблема с намирането на най-близките съседи. Той се основава на система от препоръки, търсене и генератор на плейлисти въз основа на потребителските предпочитания. Компанията отбелязва, че е по-ефективно да се използват подобни библиотеки, отколкото да се изпълняват изискващите много памет алгоритми за машинно обучение.

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

От 2018 г. някои екипи за разработка на Spotify започнаха да експериментират с библиотеки с отворен код, които биха могли да заменят Annoy. Разработчиците обърнаха внимание на hnswlib. С негова помощ успяха да получат десетократно увеличение на производителността, но е липсвала поддръжка на специфични функции, които са важни за Spotify. Екипът е решил да не се ангажира с функции, от които само той се нуждае и така е започнала разработката на Voyager.

Voyager вече е готов за използване. Характеристиките и функциите му включват:

  • десетократно увеличение на производителността в сравнение с Annoy;
  • спад в употребата на паметта с 4 пъти;
  • напълно многонишков индекс и създаване на заявки;
  • устойчиви на грешки файлови индекси със система за откриване на повреди;
  • I/O стрийминг, съвместим с Google Cloud Platform;
  • 16 пъти по-малко памет се използва по време на създаване на индекс, отколкото с оригиналната версия на hnswlib;
  • пълна поддръжка на Python и Java със същите интерфейси;
  • версията за Java се инсталира без зависимости от трети страни, а за Python е необходим само NumPy;
  • поддръжка на Windows, Linux и macOS на x86 и arm64 процесорите.

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

Източник: Kaldata

Leave a Reply

Вашият имейл адрес няма да бъде публикуван. Задължителните полета са отбелязани с *