Compania Microsoft codurile sursă ale bibliotecii de învățare automată (Space Partition Tree And Graph) cu implementarea algoritmului de căutare aproximativă . Biblioteca în divizia de cercetare Microsoft Research și centrul de dezvoltare a tehnologiilor de căutare (Microsoft Search Technology Center). În practică, SPTAG este utilizat în 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 sub licența MIT. Este disponibilă o compilare pentru Linux și Windows. Există un wrapper pentru limbajul Python.
Deși ideile de aplicare a depozitelor vectoriale în motoarele de căutare circulă de ceva timp, implementarea lor în practică este împiedicată de consumul mare de resurse al operațiunilor cu vectori și de limitările în scalabilitate. Combinarea metodelor de învățare profundă cu algoritmii de căutare aproximativă a vecinului cel mai apropiat a permis creșterea performanței și scalabilității sistemelor vectoriale la un nivel acceptabil pentru marile motoare de căutare. De exemplu, în Bing, pentru un indice vectorial de peste 150 de miliarde de vectori, timpul necesar pentru a obține cele mai relevante rezultate este de 8 ms.
Biblioteca include instrumente pentru construirea indicelui și organizarea căutării vectorilor, precum și un set de unelte pentru întreținerea unui sistem de căutare online distribuit, care acoperă colecții foarte mari de vectori. următoarele module: index builder pentru indexare, searcher pentru căutare folosind indexul, distribuit într-un cluster de mai multe noduri, un server pentru a rula handleri pe noduri, Aggregator pentru a combina mai multe servere într-un întreg și un client pentru a trimite cereri. Este susținută introducerea de noi vectori în index și ștergerea vectorilor în timp real.
Biblioteca presupune că datele procesate și prezentate în colecție sunt organizate sub formă de vectori conectați, care pot fi comparați pe baza (L2) sau Atunci când se efectuează o interogare de căutare, se returnează vectorii a căror distanță față de vectorul inițial este minimă. În SPTAG sunt disponibile două metode de organizare a spațiului vectorial: SPTAG-KDT (arbore K-dimensional () și ) și SPTAG-BKT (copac k-medii ( și graf_sectiunilor_relative). Prima metodă necesită mai puține resurse la lucrul cu indexul, în timp ce a doua demonstrează o precizie mai mare a rezultatelor căutării în colecții foarte mari de vectori.
În acest context, căutarea vectorială nu se limitează la text și poate fi aplicată informațiilor multimedia și imaginilor, precum și în sistemele de generare automată a recomandărilor. De exemplu, într-unul dintre prototipuri bazate pe cadrul PyTorch, a fost implementat un sistem vectorial pentru căutarea similarității obiectelor în imagini, construit folosind date din mai multe colecții de referință cu imagini de animale, pisici și câini, care au fost transformate în seturi de vectori. Când o imagine de intrare este primită pentru căutare, aceasta este transformată cu ajutorul unui model de învățare automată într-un vector, pe baza căruia, folosind algoritmul SPTAG, se selectează vectorii cei mai asemănători din index și, ca rezultat, sunt returnate imaginile asociate.
Sursa: opennet.ro
