Microsoft a oferit sursă deschisă biblioteca de căutare vectorială folosită în Bing

Microsoft а publicat codurile sursă ale bibliotecii de învățare automată SPTAG (Space Partition Tree And Graph) cu implementarea algoritmului aproximativ căutarea vecinului cel mai apropiat. Bibliotecă dezvoltat în divizia de cercetare a Microsoft Research și centrul de dezvoltare a tehnologiei de căutare (Microsoft Search Technology Center). În practică, SPTAG este folosit de motorul de căutare Bing pentru a determina cele mai relevante rezultate în funcție de contextul interogărilor de căutare. Codul este scris în C++ și distribuit de sub licență MIT. Build pentru Linux și Windows este acceptat. Există o legătură pentru limbajul Python.

În ciuda faptului că ideea de a folosi stocarea vectorială în motoarele de căutare plutește de destul de mult timp, în practică, implementarea lor este îngreunată de intensitatea ridicată a resurselor operațiunilor cu vectori și limitările de scalabilitate. Combinarea metodelor de învățare automată profundă cu algoritmi aproximativi de căutare a vecinului cel mai apropiat a făcut posibilă aducerea performanței și scalabilității sistemelor vectoriale la un nivel acceptabil pentru motoarele de căutare mari. De exemplu, în Bing, pentru un indice vectorial de peste 150 de miliarde de vectori, timpul pentru a obține cele mai relevante rezultate este în 8 ms.

Biblioteca include instrumente pentru construirea unui index și organizarea căutărilor vectoriale, precum și un set de instrumente pentru menținerea unui sistem de căutare online distribuit care acoperă colecții foarte mari de vectori. A oferit următoarele module: index builder pentru indexare, searcher pentru căutare folosind un index distribuit într-un cluster de mai multe noduri, server pentru rularea handlerelor pe noduri, Aggregator pentru combinarea mai multor servere într-unul singur și client pentru trimiterea de interogări. Includerea de noi vectori în index și ștergerea vectorilor din zbor este acceptată.

Biblioteca implică faptul că datele prelucrate și prezentate în colecție sunt formatate sub formă de vectori înrudiți care pot fi comparați pe baza euclidiană (L2) sau cosinus distante Interogarea de căutare returnează vectori a căror distanță între ei și vectorul original este minimă. SPTAG oferă două metode de organizare a spațiului vectorial: SPTAG-KDT (arborele K-dimensional (kd-tree) Și grafic de vecinătate relativă) și SPTAG-BKT (k- înseamnă arbore (k-înseamnă arbore şi graficul de vecinătate relativă). Prima metodă necesită mai puține resurse atunci când lucrați cu indexul, iar a doua demonstrează o acuratețe mai mare a rezultatelor căutării pentru colecții foarte mari de vectori.

În același timp, căutarea vectorială nu se limitează la text și poate fi aplicată informațiilor și imaginilor multimedia, precum și în sistemele de generare automată a recomandărilor. De exemplu, unul dintre prototipurile bazate pe framework-ul PyTorch a implementat un sistem vectorial de căutare bazat pe asemănarea obiectelor din imagini, construit folosind date din mai multe colecții de referință cu imagini de animale, pisici și câini, care au fost convertite în seturi de vectori. . Când o imagine primită este primită pentru căutare, aceasta este convertită folosind un model de învățare automată într-un vector, pe baza căruia cei mai asemănători vectori sunt selectați din index folosind algoritmul SPTAG și imaginile asociate sunt returnate ca rezultat.

Sursa: opennet.ru

Adauga un comentariu