La société Microsoft textes sources de la bibliothèque d'apprentissage automatique (Space Partition Tree And Graph) avec une implémentation de l'algorithme de recherche approximative . La bibliothèque développée au sein de Microsoft Research et du centre de développement de technologies de recherche (Microsoft Search Technology Center). En pratique, SPTAG est utilisé dans le moteur de recherche Bing pour déterminer les résultats les plus pertinents en tenant compte du contexte des requêtes de recherche. Le code est écrit en C++ et est sous licence MIT. Une version est disponible pour Linux et Windows. Une interface est fournie pour le langage Python.
Bien que l'idée d'utiliser des magasins de vecteurs dans les moteurs de recherche existe depuis un certain temps, leur adoption pratique est compliquée par la lourdeur des opérations avec les vecteurs et par des limitations en matière d'évolutivité. La combinaison des méthodes d'apprentissage automatisé profond avec des algorithmes de recherche approximative du plus proche voisin a permis d'atteindre des niveaux de performance et d'évolutivité des systèmes de vecteurs acceptables pour de grands moteurs de recherche. Par exemple, dans Bing, pour un index vectoriel de plus de 150 milliards de vecteurs, le temps de récupération des résultats les plus pertinents est de 8 ms.
La bibliothèque comprend des outils pour la construction d'index et l'organisation de la recherche de vecteurs, ainsi qu'un ensemble d'outils pour accompagner un système de recherche en ligne distribué couvrant de très grandes collections de vecteurs. modules suivants sont proposés : index builder pour l'indexation, searcher pour la recherche en utilisant l'index dans un cluster composé de plusieurs nœuds, un serveur pour exécuter des traitements sur les nœuds, Aggregator pour combiner plusieurs serveurs en un tout, et un client pour envoyer des requêtes. L'ajout de nouveaux vecteurs à l'index et la suppression de vecteurs en temps réel sont supportés.
La bibliothèque suppose que les données traitées et présentées dans la collection sont sous forme de vecteurs reliés, qui peuvent être comparés sur la base des (L2) ou Lors d'une requête de recherche, les vecteurs avec la distance minimale par rapport au vecteur source sont renvoyés. SPTAG propose deux méthodes pour organiser l'espace vectoriel : SPTAG-KDT (K-dimensional tree (Deep Speech ) et SPTAG-BKT (k-means tree ( et le graphique des voisinages relatifs). La première méthode nécessite moins de ressources lors du travail avec l'index, tandis que la seconde montre une précision de recherche plus élevée lors de la gestion de très grandes collections de vecteurs.
Le recherche vectorielle ne se limite pas au texte et peut être appliquée à des informations multimédias et à des images, ainsi que dans des systèmes de recommandation automatisés. Par exemple, dans un des prototypes basé sur le framework PyTorch, un système de recherche vectoriel a été mis en place pour tenir compte de la similarité des objets sur les images, construit à l'aide de données provenant de plusieurs collections de référence d'images d'animaux, de chats et de chiens, qui ont été transformées en ensembles de vecteurs. Lorsqu'une image d'entrée pour la recherche est reçue, elle est transformée en un vecteur à l'aide d'un modèle d'apprentissage automatique, sur la base duquel, à l'aide de l'algorithme SPTAG, les vecteurs les plus similaires sont sélectionnés à partir de l'index et les images qui y sont liées sont retournées en résultat.
Source : opennet.ru
