La empresa Microsoft textos originales de la biblioteca de aprendizaje automático (Space Partition Tree And Graph) con la implementación del algoritmo de búsqueda aproximada . La biblioteca en la división de investigación de Microsoft Research y en el centro de desarrollo de tecnologías de búsqueda (Microsoft Search Technology Center). En la práctica, SPTAG se usa en el motor de búsqueda Bing para determinar los resultados más relevantes teniendo en cuenta el contexto de las consultas de búsqueda. El código está escrito en C++ y bajo la licencia MIT. Se admite la compilación para Linux y Windows. Hay un envoltorio para el lenguaje Python.
Aunque las ideas sobre el uso de almacenes de vectores en motores de búsqueda han estado flotando durante bastante tiempo, en la práctica su implementación se ve obstaculizada por la alta demanda de recursos en las operaciones con vectores y las limitaciones de escalabilidad. La combinación de métodos de aprendizaje profundo con algoritmos de búsqueda aproximada del vecino más cercano ha permitido llevar el rendimiento y la escalabilidad de los sistemas de vectores a un nivel aceptable para grandes motores de búsqueda. Por ejemplo, en Bing, para un índice vectorial de más de 150 mil millones de vectores, el tiempo de recuperación de los resultados más relevantes se mantiene en 8 ms.
La biblioteca incluye herramientas para la construcción de índices y la organización de la búsqueda de vectores, así como un conjunto de herramientas para el mantenimiento de un sistema de búsqueda online distribuido que abarca colecciones muy grandes de vectores. los siguientes módulos: index builder para la indexación, searcher para la búsqueda utilizando el índice, servidor para la ejecución de controladores en los nodos, Aggregator para combinar múltiples servidores en un solo sistema y cliente para enviar consultas. Se admite la inclusión de nuevos vectores en el índice y la eliminación de vectores en tiempo real.
La biblioteca supone que los datos procesados y presentados en la colección están estructurados en forma de vectores relacionados, que se pueden comparar en función de (L2) o . Al realizar una consulta de búsqueda, se devuelven los vectores cuya distancia con respecto al vector original es mínima. En SPTAG se proporcionan dos métodos para organizar el espacio vectorial: SPTAG-KDT (árbol K-dimensional () y ) y SPTAG-BKT (árbol k-medias ( y el gráfico de vecindades relativas). El primer método requiere menos recursos al trabajar con el índice, mientras que el segundo muestra una mayor precisión en los resultados de búsqueda en colecciones de vectores muy grandes.
Además, la búsqueda vectorial no se limita al texto y puede aplicarse a información multimedia e imágenes, así como a sistemas de recomendación automática. Por ejemplo, en uno de los prototipos basado en el marco de trabajo PyTorch, se implementó un sistema de búsqueda vectorial que considera la similitud de los objetos en imágenes, construido utilizando datos de varias colecciones de referencia de imágenes de animales, gatos y perros, que fueron convertidos en conjuntos de vectores. Cuando se recibe una imagen de entrada para buscar, esta se convierte mediante un modelo de aprendizaje automático en un vector, a partir del cual, utilizando el algoritmo SPTAG, se seleccionan los vectores más similares del índice y como resultado se devuelven las imágenes relacionadas.
Fuente: opennet.ru
