Mikrosofto malfermis la kodon por la vektora serĉbiblioteko uzata de Bing

Mikrosofta Kompanio eldonita maŝinlernado biblioteko fontkodoj SPTAG (Spaco Partition Tree And Graph) kun efektivigo de la proksimuma algoritmo plej proksima najbaro serĉo. Biblioteko disvolvita de en la esplorsekcio de Microsoft Research kaj la serĉteknologia evolucentro (Microsoft Search Technology Center). En la praktiko, SPTAG estas uzata de la serĉilo Bing por determini la plej gravajn rezultojn bazitajn sur la kunteksto de serĉdemandoj. La kodo estas skribita en C++ kaj distribuita de sub MIT-licenco. Konstruo por Linukso kaj Vindozo estas subtenata. Estas ligo por la lingvo Python.

Malgraŭ la fakto, ke la ideo uzi vektoran stokadon en serĉiloj flosis ĉirkaŭe dum sufiĉe longa tempo, praktike ilia efektivigo estas malhelpita de la alta rimeda intenseco de operacioj kun vektoroj kaj skaleblaj limoj. Kombini profundajn maŝinlernajn metodojn kun proksimumaj plej proksimaj najbaraj serĉalgoritmoj ebligis alporti la rendimenton kaj skaleblon de vektoraj sistemoj al nivelo akceptebla por grandaj serĉiloj. Ekzemple, en Bing, por vektora indekso de pli ol 150 miliardoj da vektoroj, la tempo por alporti la plej gravajn rezultojn estas ene de 8 ms.

La biblioteko inkluzivas ilojn por konstrui indekson kaj organizi vektorajn serĉojn, same kiel aron de iloj por konservi distribuitan retan serĉsistemon kovrantan tre grandajn kolektojn de vektoroj. Ofertita la jenaj moduloj: indekskonstruilo por indeksado, serĉilo por serĉado uzante indekson distribuitan en areto de pluraj nodoj, servilo por funkcii pritraktiloj sur nodoj, Agregator por kombini plurajn servilojn en unu, kaj kliento por sendi demandojn. Inkludo de novaj vektoroj en la indekso kaj forigo de vektoroj sur la muŝo estas subtenataj.

La biblioteko implicas ke la datumoj prilaboritaj kaj prezentitaj en la kolekto estas formatitaj en la formo de rilataj vektoroj kiuj povas esti komparitaj surbaze de Eŭklida (L2) aŭ kosinuso distancoj La serĉdemando resendas vektorojn kies distanco inter ili kaj la origina vektoro estas minimuma. SPTAG disponigas du metodojn por organizi vektoran spacon: SPTAG-KDT (K-dimensia arbo (kd-arbo) kaj relativa najbara grafiko) kaj SPTAG-BKT (k- signifas arbo (k- signifas arbon kaj relativa najbara grafeo). La unua metodo postulas malpli da rimedoj kiam oni laboras kun la indekso, kaj la dua montras pli altan precizecon de serĉrezultoj por tre grandaj kolektoj de vektoroj.

Samtempe, vektora serĉo ne estas limigita al teksto kaj povas esti aplikata al plurmediaj informoj kaj bildoj, same kiel en sistemoj por aŭtomate generi rekomendojn. Ekzemple, unu el la prototipoj bazitaj sur la kadro PyTorch efektivigis vektoran sistemon por serĉado bazita sur la simileco de objektoj en bildoj, konstruita uzante datumojn de pluraj referenckolektoj kun bildoj de bestoj, katoj kaj hundoj, kiuj estis konvertitaj en arojn de vektoroj. . Kiam alvenanta bildo estas ricevita por serĉo, ĝi estas konvertita uzante maŝinlerndan modelon en vektoron, surbaze de kiu la plej similaj vektoroj estas elektitaj de la indekso uzante la SPTAG-algoritmon kaj la rilataj bildoj estas resenditaj kiel rezulto.

fonto: opennet.ru

Aldoni komenton