Microsoft отвори кода на библиотеката за векторно търсене, използвана в Bing

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

Въпреки че идеите за използване на векторни хранилища в търсачките съществуват отдавна, реализацията им на практика се усложнява от високата ресурсна консумация на операциите с вектори и ограниченията в мащабируемостта. Комбинацията от методи за дълбочинно машинно обучение с алгоритми за приблизително търсене на най-близкия съсед позволи да се постигне производителност и мащабируемост на векторните системи на ниво, приемливо за големи търсачки. Например, в Bing времето за избор на най-релевантните резултати за векторен индекс с размер над 150 милиарда вектора е под 8 мс.

Библиотеката включва средства за построяване на индекс и организация на търсене на вектори, както и набор от инструменти за поддръжка на разпределена система за онлайн търсене, обхващаща много големи колекции от вектори. Предлагат се следните модули: index builder за индексиране, searcher за търсене с използването на индекс, разпределен в клъстер с няколко възела, сървър за стартиране на обработвачи на възлите, Aggregator за обединяване на няколко сървъра в едно интегрално цяло и клиент за изпращане на заявки. Поддържа се добавянето на нови вектори в индекса и изтриването им в реално време.

Библиотеката предполага, че обработваните и представените в колекцията данни са оформени като свързани вектори, които могат да се сравняват на основата на евклидови (L2) или косинусови разстояния. При заявка за търсене се връщат вектори, чийто разстояния до изходния вектор е минимално. В SPTAG се предоставят два метода за организиране на векторното пространство: SPTAG-KDT (K-мерно дърво (kd-tree) и граф на относителните близости) и SPTAG-BKT (дърво на k-средните (k-means tree и граф на относителни околности). Първият метод изисква по-малко ресурси при работа с индекса, докато вторият демонстрира по-висока точност на резултатите от търсенето при много големи колекции от вектори.

Векторното търсене не се ограничава само до текст и може да се прилага към мултимедийна информация и изображения, а също така в системи за автоматично генериране на препоръки. Например, в един от прототипите, базирани на фреймворка PyTorch, беше реализирана векторна система за търсене на база сходство на обекти в изображения, изградена с използване на данни от няколко референтни колекции с изображения на животни, котки и кучета, които бяха преобразувани в набори от вектори. Когато входящото изображение за търсене постъпи, то се преобразува с помощта на модел за машинно обучение в вектор, на база на който с алгоритъма SPTAG от индекса се избират най-подобните вектори и в резултат се връщат свързаните с тях изображения.

Източник: opennet.ru

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster