Компания Microsoft първоначални текстове на библиотеката за машинно обучение (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-мерно дърво () и ) и SPTAG-BKT (дърво на k-средните ( и граф на относителни околности). Първият метод изисква по-малко ресурси при работа с индекса, докато вторият демонстрира по-висока точност на резултатите от търсенето при много големи колекции от вектори.
Векторното търсене не се ограничава само до текст и може да се прилага към мултимедийна информация и изображения, а също така в системи за автоматично генериране на препоръки. Например, в един от прототипите, базирани на фреймворка PyTorch, беше реализирана векторна система за търсене на база сходство на обекти в изображения, изградена с използване на данни от няколко референтни колекции с изображения на животни, котки и кучета, които бяха преобразувани в набори от вектори. Когато входящото изображение за търсене постъпи, то се преобразува с помощта на модел за машинно обучение в вектор, на база на който с алгоритъма SPTAG от индекса се избират най-подобните вектори и в резултат се връщат свързаните с тях изображения.
Източник: opennet.ru
