Microsoft abre la biblioteca de búsqueda vectorial utilizada en Bing

Microsoft опубликовала códigos fuente de la biblioteca de aprendizaje automático SPTAG (Árbol y gráfico de partición espacial) con implementación del algoritmo aproximado búsqueda de vecino más cercano. Biblioteca desarrollado por en la división de investigación de Microsoft Research y el centro de desarrollo de tecnología de búsqueda (Microsoft Search Technology Center). En la práctica, el motor de búsqueda Bing utiliza SPTAG para determinar los resultados más relevantes en función del contexto de las consultas de búsqueda. El código está escrito en C++ y distribuido por bajo licencia MIT. Se admite la compilación para Linux y Windows. Existe un enlace para el lenguaje Python.

A pesar de que la idea de utilizar el almacenamiento vectorial en los motores de búsqueda existe desde hace bastante tiempo, en la práctica su implementación se ve obstaculizada por la alta intensidad de recursos de las operaciones con vectores y limitaciones de escalabilidad. La combinación de métodos de aprendizaje automático profundo con algoritmos de búsqueda aproximada del vecino más cercano ha hecho posible llevar el rendimiento y la escalabilidad de los sistemas vectoriales a un nivel aceptable para los grandes motores de búsqueda. Por ejemplo, en Bing, para un índice de vectores de más de 150 mil millones de vectores, el tiempo para obtener los resultados más relevantes es de 8 ms.

La biblioteca incluye herramientas para crear un índice y organizar búsquedas de vectores, así como un conjunto de herramientas para mantener un sistema de búsqueda distribuido en línea que cubra colecciones muy grandes de vectores. Ofrecido los siguientes módulos: generador de índices para indexación, buscador para buscar utilizando un índice distribuido en un grupo de varios nodos, servidor para ejecutar controladores en nodos, agregador para combinar varios servidores en uno y cliente para enviar consultas. Se admite la inclusión de nuevos vectores en el índice y la eliminación de vectores sobre la marcha.

La biblioteca implica que los datos procesados ​​y presentados en la colección están formateados en forma de vectores relacionados que se pueden comparar en función de euclidiano (L2) o coseno distancias La consulta de búsqueda devuelve vectores cuya distancia entre ellos y el vector original es mínima. SPTAG proporciona dos métodos para organizar el espacio vectorial: SPTAG-KDT (árbol K-dimensional (árbol-kd) Y gráfico de vecindad relativa) y SPTAG-BKT (árbol k-medias (árbol k-significa y gráfico de vecindad relativa). El primer método requiere menos recursos cuando se trabaja con el índice y el segundo demuestra una mayor precisión de los resultados de búsqueda para colecciones de vectores muy grandes.

Al mismo tiempo, la búsqueda vectorial no se limita al texto y puede aplicarse a información e imágenes multimedia, así como a sistemas de generación automática de recomendaciones. Por ejemplo, uno de los prototipos basado en el framework PyTorch implementó un sistema vectorial de búsqueda basado en la similitud de objetos en imágenes, construido a partir de datos de varias colecciones de referencia con imágenes de animales, gatos y perros, que se convirtieron en conjuntos de vectores. . Cuando se recibe una imagen entrante para su búsqueda, se convierte utilizando un modelo de aprendizaje automático en un vector, en función del cual se seleccionan los vectores más similares del índice utilizando el algoritmo SPTAG y las imágenes asociadas se devuelven como resultado.

Fuente: opennet.ru

Añadir un comentario