Microsoft ha aperto il codice della libreria di ricerca vettoriale utilizzata in Bing

Azienda Microsoft ha pubblicato testi originali della libreria di apprendimento automatico SPTAG (Space Partition Tree And Graph) con implementazione dell'algoritmo di cerca del vicino più vicino. La libreria sviluppata è nel dipartimento di ricerca di Microsoft Research e nel centro di sviluppo delle tecnologie di ricerca (Microsoft Search Technology Center). Nella pratica, SPTAG è utilizzato nel motore di ricerca Bing per determinare i risultati più pertinenti tenendo conto del contesto delle query di ricerca. Il codice è scritto in C++ e è distribuito sotto licenza MIT. È supportata la compilazione per Linux e Windows. È disponibile un'interfaccia per il linguaggio Python.

Nonostante le idee sull'uso di archivi vettoriali nei motori di ricerca circolino da abbastanza tempo, nella pratica la loro implementazione è ostacolata da un alto consumo di risorse delle operazioni sui vettori e da limitazioni nella scalabilità. La combinazione di metodi di apprendimento automatico profondo con algoritmi di ricerca approssimativa del vicino più vicino ha consentito di migliorare le prestazioni e la scalabilità dei sistemi vettoriali a un livello accettabile per i grandi motori di ricerca. Ad esempio, in Bing, per un indice vettoriale di oltre 150 miliardi di vettori, il tempo di recupero dei risultati più pertinenti è compreso in 8 ms.

La libreria include strumenti per la costruzione dell'indice e l'organizzazione della ricerca di vettori, così come una serie di strumenti per la gestione di sistemi distribuiti di ricerca online, che coprono collezioni di vettori molto grandi. Sono offerti i seguenti moduli: index builder per l'indicizzazione, searcher per la ricerca utilizzando l'indice, distribuito in un cluster di più nodi, server per eseguire gestori sui nodi, Aggregator per unire più server in un'unica entità e client per inviare richieste. È supportato l'inserimento di nuovi vettori nell'indice e la rimozione di vettori al volo.

La libreria presuppone che i dati trattati e presentati nella collezione siano organizzati come vettori correlati, che possono essere confrontati sulla base di euclidei (L2) o distanze coseno . Quando viene effettuata una query di ricerca, vengono restituiti i vettori, la cui distanza rispetto al vettore di origine è minima. In SPTAG sono forniti due metodi per l'organizzazione dello spazio vettoriale: SPTAG-KDT (K-Dimensional Tree (kd-tree) e grafo delle relative vicinanze) e SPTAG-BKT (k-means tree (k-means tree e grafico delle aree relative). Il primo metodo richiede meno risorse durante il lavoro con l'indice, mentre il secondo dimostra un'accuratezza maggiore nei risultati di ricerca su collezioni di vettori molto grandi.

Il search vettoriale non si limita solo al testo e può essere applicato a informazioni multimediali e immagini, oltre che nei sistemi di raccomandazione automatica. Ad esempio, in uno dei prototipi basati sul framework PyTorch è stato implementato un sistema vettoriale per la ricerca tenendo conto della somiglianza degli oggetti nelle immagini, costruito utilizzando dati provenienti da diverse collezioni di riferimento con immagini di animali, gatti e cani, che sono stati trasformati in set di vettori. Quando viene ricevuta un'immagine in ingresso per la ricerca, viene convertita utilizzando un modello di machine learning in un vettore, sulla base del quale, tramite l'algoritmo SPTAG, vengono selezionati i vettori più simili dall'indice e come risultato vengono restituiti le immagini correlate.

Fonte: opennet.ru

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster