Microsoft відкрив код бібліотеки векторного пошуку, що використовується в Bing

компанія Microsoft опублікувала вихідні тексти бібліотеки машинного навчання SPTAG (Space Partition Tree And Graph) з реалізацією приблизного алгоритму пошуку найближчого сусіда. Бібліотека розроблена у дослідному підрозділі Microsoft Research та центрі розробки пошукових технологій (Microsoft Search Technology Center). Насправді SPTAG застосовується у пошуковій системі Bing визначення найбільш релевантних результатів з урахуванням контексту пошукових запитів. Код написаний мовою С++ та поширюється під ліцензією MIT. Підтримується збірка для Linux та Windows. Є обв'язування мови Python.

Незважаючи на те, що ідеї застосування векторних сховищ у пошукових системах витають вже досить давно, на практиці їх впровадженню заважає велика ресурсоємність операцій з векторами та обмеження масштабованості. Поєднання методів глибинного машинного навчання з алгоритмами приблизного пошуку найближчого сусіда дозволило довести продуктивність і масштабованість векторних систем рівня, прийнятного великих пошукових систем. Наприклад, Bing для векторного індексу розміром понад 150 мільярдів векторів час вибірки найбільш релевантних результатів укладається в 8 мс.

До складу бібліотеки включені засоби для побудови індексу та організації пошуку векторів, а також набір інструментів для супроводу розподіленої системи online-пошуку, що охоплює великі колекції векторів. пропонуються наступні модулі: index builder для індексації, searcher для пошуку з використанням індексу, розподіленого в кластері з кількох вузлів, сервер для запуску обробників на вузлах, Aggregator для об'єднання кількох серверів в одне ціле та клієнт для надсилання запитів. Підтримується включення нових векторів до індексу та видалення векторів на льоту.

Бібліотека має на увазі, що оброблені та представлені в колекції дані оформлені у вигляді пов'язаних векторів, які можна порівнювати на основі евклідових (L2) або косинусних відстаней. При пошуковому запиті повертаються вектори, відстань між якими та вихідним вектором мінімальна. У SPTAG надається два методи організації векторного простору: SPTAG-KDT (K-мірне дерево (кд-дерево) і граф відносного околиці) та SPTAG-BKT (дерево k-середніх (k-means tree і граф відносних околиць). Перший метод вимагає менше ресурсів під час роботи з індексом, а другий демонструє вищу точність результатів пошуку за дуже великих колекціях векторів.

При цьому векторний пошук не обмежується текстом і може застосовуватися до мультимедійної інформації та зображень, а також для систем автоматичного формування рекомендацій. Наприклад, в одному з прототипів на базі фреймворку PyTorch була реалізована векторна система для пошуку з урахуванням подібності об'єктів на зображеннях, побудована з використанням даних з кількох еталонних колекцій із зображеннями тварин, котів та собак, які були перетворені на набори векторів. При надходженні зображення для пошуку воно перетворюється з використанням моделі машинного навчання у вектор, на основі якого за допомогою алгоритму SPTAG з індексу вибираються найбільш схожі вектори і як результат повертаються пов'язані з ними зображення.

Джерело: opennet.ru

Додати коментар або відгук