Microsoft otworzył kod biblioteki wektorowego wyszukiwania, używanej w Bing

Firma Microsoft opublikowała źródłowe teksty biblioteki uczenia maszynowego SPTAG (Space Partition Tree And Graph) z implementacją algorytmu przybliżonego wyszukiwania najbliższego sąsiada. Biblioteka została opracowana w jednostce badawczej Microsoft Research i centrum rozwoju technologii wyszukiwania (Microsoft Search Technology Center). W praktyce SPTAG jest wykorzystywana w wyszukiwarce Bing do określania najbardziej relewantnych wyników z uwzględnieniem kontekstu zapytań. Kod napisano w języku C++ i rozpowszechniany jest objęty licencją MIT. Obsługiwana jest kompilacja dla Linux i Windows. Dostępna jest również obudowa dla języka Python.

Mimo że pomysły na zastosowanie zbiorników wektorowych w wyszukiwarkach istnieją od dłuższego czasu, ich wdrożenie w praktyce utrudnia duże zużycie zasobów związane z operacjami na wektorach oraz ograniczenia w skalowalności. Połączenie metod głębokiego uczenia maszynowego z algorytmami przybliżonego wyszukiwania najbliższego sąsiada pozwoliło osiągnąć wydajność i skalowalność systemów wektorowych na poziomie akceptowanym przez duże wyszukiwarki. Na przykład w Bing dla wektora indeksu przekraczającego 150 miliardów wektorów czas wybierania najbardziej relewantnych wyników wynosi 8 ms.

Biblioteka zawiera narzędzia do budowy indeksu oraz organizacji wyszukiwania wektorów, a także zestaw narzędzi do wsparcia rozproszonego systemu wyszukiwania online, obejmującego bardzo duże kolekcje wektorów. Oferowane są następujące moduły: index builder do indeksowania, searcher do wyszukiwania z wykorzystaniem indeksu, rozproszonego w klastrze z wieloma węzłami, serwer do uruchamiania procesorów na węzłach, Aggregator do łączenia kilku serwerów w całość oraz klient do wysyłania zapytań. Obsługiwane jest dodawanie nowych wektorów do indeksu oraz usuwanie wektorów w locie.

Biblioteka zakłada, że przetwarzane i przedstawiane w kolekcji dane są sformatowane jako powiązane wektory, które można porównywać na podstawie odległości euklidesowych (L2) lub cosinusowych odległości. Przy zapytaniu wyszukiwawczym zwracane są wektory, których odległość od pierwotnego wektora jest minimalna. W SPTAG oferowane są dwie metody organizacji przestrzeni wektorowej: SPTAG-KDT (drzewo K-wymiarowe (kd-tree) i graf względnych sąsiedztw) oraz SPTAG-BKT (drzewo k-średnich (k-means tree i graf relatywnych sąsiedztw). Pierwsza metoda wymaga mniej zasobów podczas pracy z indeksem, a druga wykazuje wyższą dokładność wyników wyszukiwania przy bardzo dużych kolekcjach wektorów.

Jednocześnie wyszukiwanie wektorowe nie ogranicza się do tekstu i może być stosowane do informacji multimedialnych oraz obrazów, a także w systemach automatycznego generowania rekomendacji. Na przykład w jednym z prototypów opartych na frameworku PyTorch zaimplementowano wektorowy system wyszukiwania, który uwzględniał podobieństwo obiektów na obrazach, stworzony przy użyciu danych z kilku standardowych kolekcji obrazów zwierząt, kotów i psów, które zostały przekształcone w zbiory wektorów. Gdy przychodzi obraz do wyszukania, jest on przekształcany za pomocą modelu uczenia maszynowego w wektor, na podstawie którego przy użyciu algorytmu SPTAG z indeksu wybierane są najbardziej podobne wektory i jako wynik zwracane są związane z nimi obrazy.

Źródło: opennet.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster