Microsoft open source knižnicu na vyhľadávanie vektorov používanú v Bingu

Microsoft опубликовала zdrojové kódy knižnice strojového učenia SPTAG (Space Partition Tree And Graph) s implementáciou približného algoritmu hľadanie najbližšieho suseda. Knižnica vyvinuté vo výskumnej divízii Microsoft Research a vývojovom centre vyhľadávacích technológií (Microsoft Search Technology Center). V praxi SPTAG používa vyhľadávací nástroj Bing na určenie najrelevantnejších výsledkov na základe kontextu vyhľadávacích dopytov. Kód je napísaný v C++ a distribuovaný pod licenciou MIT. Podporuje sa zostavenie pre Linux a Windows. Existuje väzba pre jazyk Python.

Napriek tomu, že myšlienka využitia vektorového úložiska vo vyhľadávačoch sa vznášala už pomerne dlho, v praxi ich implementácii bráni vysoká náročnosť na zdroje operácií s vektormi a obmedzenia škálovateľnosti. Kombinácia metód hlbokého strojového učenia s približnými algoritmami vyhľadávania najbližšieho suseda umožnila posunúť výkon a škálovateľnosť vektorových systémov na úroveň prijateľnú pre veľké vyhľadávače. Napríklad v Bing je pre vektorový index viac ako 150 miliárd vektorov čas na získanie najrelevantnejších výsledkov do 8 ms.

Knižnica obsahuje nástroje na vytváranie indexu a organizáciu vyhľadávania vektorov, ako aj sadu nástrojov na udržiavanie distribuovaného online vyhľadávacieho systému pokrývajúceho veľmi veľké zbierky vektorov. Ponúkané nasledujúce moduly: index builder na indexovanie, vyhľadávač na vyhľadávanie pomocou indexu distribuovaného v klastri niekoľkých uzlov, server na spustenie handlerov na uzloch, Agregátor na spojenie viacerých serverov do jedného a klient na odosielanie dotazov. Podporuje sa zahrnutie nových vektorov do indexu a vymazanie vektorov za behu.

Z knižnice vyplýva, že údaje spracované a prezentované v kolekcii sú formátované vo forme súvisiacich vektorov, ktoré možno porovnávať na základe euklidovský (L2) alebo kosínus vzdialenostiach Vyhľadávací dotaz vráti vektory, ktorých vzdialenosť medzi nimi a pôvodným vektorom je minimálna. SPTAG poskytuje dve metódy na organizáciu vektorového priestoru: SPTAG-KDT (K-rozmerný strom (kd-strom) A graf relatívneho susedstva) a SPTAG-BKT (k-znamená strom (k-znamená strom a graf relatívneho susedstva). Prvá metóda vyžaduje menej zdrojov pri práci s indexom a druhá demonštruje vyššiu presnosť výsledkov vyhľadávania pre veľmi veľké kolekcie vektorov.

Zároveň sa vektorové vyhľadávanie neobmedzuje len na text a možno ho aplikovať na multimediálne informácie a obrázky, ako aj v systémoch na automatické generovanie odporúčaní. Napríklad jeden z prototypov založených na frameworku PyTorch implementoval vektorový systém pre vyhľadávanie založený na podobnosti objektov na obrázkoch, zostavený s použitím údajov z niekoľkých referenčných kolekcií s obrázkami zvierat, mačiek a psov, ktoré boli prevedené na sady vektorov. . Keď sa prichádzajúci obrázok prijme na vyhľadávanie, prevedie sa pomocou modelu strojového učenia na vektor, na základe ktorého sa z indexu pomocou algoritmu SPTAG vyberú najpodobnejšie vektory a ako výsledok sa vrátia súvisiace obrázky.

Zdroj: opennet.ru

Pridať komentár