Firma Microsoft źródłowe teksty biblioteki uczenia maszynowego (Space Partition Tree And Graph) z implementacją algorytmu przybliżonego . Biblioteka 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 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. 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 (L2) lub 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 () i ) oraz SPTAG-BKT (drzewo k-średnich ( 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
