Microsoft otevřel kód knihovny vektorového vyhledávání používané v Bingu

Společnost Microsoft publikovala původní texty knihovny strojového učení SPTAG (Space Partition Tree And Graph) s implementací algoritmu přibližného vyhledávání nejbližšího souseda. Knihovna byla vyvinuta ve výzkumné divizi Microsoft Research a centru pro vývoj vyhledávacích technologií (Microsoft Search Technology Center). V praxi se SPTAG používá v vyhledávači Bing k určení nejrelevantnějších výsledků s přihlédnutím k kontextu vyhledávacích dotazů. Kód je napsán v jazyce C++ a distribuováno je licencován pod licencí MIT. Je podporována kompilace pro Linux a Windows. Je k dispozici obal pro jazyk Python.

I když myšlenky na využití vektorových úložišť ve vyhledávačích existují již dlouho, jejich implementaci na praxi brání vysoká náročnost operací s vektory a omezení škálovatelnosti. Kombinace metod hloubkového strojového učení s algoritmy přibližného vyhledávání nejbližšího souseda umožnila dosáhnout výkonnosti a škálovatelnosti vektorových systémů na úroveň přijatelnou pro velké vyhledávače. Například v Bingu pro vektorový index o velikosti více než 150 miliard vektorů doba výběru nejrelevantnějších výsledků činí 8 ms.

Knihovna obsahuje nástroje pro vytváření indexu a organizaci vyhledávání vektorů, stejně jako sadu nástrojů pro podporu distribuovaného online vyhledávání, pokrývajícího velmi velké sbírky vektorů. Jsou nabízeny následující moduly: index builder pro indexaci, searcher pro vyhledávání pomocí indexu, distribuovaného v clusteru několika uzlů, server pro spuštění zpracovatelů na uzlech, Aggregator pro spojení několika serverů do jednoho celku a klient pro odesílání dotazů. Podporuje se přidávání nových vektorů do indexu a odstraňování vektorů v reálném čase.

Knihovna předpokládá, že zpracovávaná a prezentovaná data ve sbírce jsou uspořádána jako propojené vektory, které lze porovnávat na základě eukleidovských (L2) nebo kosinových vzdáleností. Při vyhledávacím dotazu se vrátí vektory, jejichž vzdálenost od původního vektoru je minimální. V SPTAG jsou k dispozici dvě metody organizace vektorového prostoru: SPTAG-KDT (K-úhlový strom (kd-tree) a graf relativních sousedství) a SPTAG-BKT (strom k-průměrů (k-means tree a graf relativních okolností). První metoda vyžaduje méně zdrojů při práci s indexem, zatímco druhá demonstruje vyšší přesnost výsledků vyhledávání ve velmi velkých kolekcích vektorů.

Vektorové vyhledávání však není omezeno pouze na text a může se aplikovat na multimediální informace a obrázky, stejně jako v systémech automatického doporučování. Například v jednom z prototypů na bázi rámce PyTorch byla realizována vektorová systém pro vyhledávání založené na podobnosti objektů na obrázcích, stavěné s využitím dat z několika referenčních sbírek s obrázky zvířat, koček a psů, které byly převedeny na sady vektorů. Když je přijato vstupní obrázek k vyhledávání, je převeden pomocí modelu strojového učení na vektor, na základě kterého je pomocí algoritmu SPTAG z indexu vybráno nejpodobnější vektory a jako výsledek se vrací k nim přiřazené obrázky.

Zdroj: opennet.ru

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster