Cree búsquedas semánticas rápidas
La búsqueda semántica es una gran herramienta para ayudar a sus clientes -o a sus empleados- a encontrar los productos o la información adecuados. Incluso puede sacar a la superficie información difícil de indexar para obtener mejores resultados. Dicho esto, si sus metodologías semánticas no se despliegan para trabajar con rapidez, no le servirán de nada. El cliente o el empleado no van a quedarse sentados mientras el sistema se toma su tiempo para responder a su consulta, y es probable que se estén ingiriendo miles de consultas más al mismo tiempo.
¿Cómo hacer que la búsqueda semántica sea rápida? La búsqueda semántica lenta no es la solución.
Afortunadamente, este es el tipo de problema que a Lucidworks le encanta resolver. Recientemente hemos probado un clúster de tamaño modesto -siga leyendo para obtener más detalles- que dio como resultado 1.500 RPS (solicitudes por segundo) contra una colección de más de un millón de documentos, con un tiempo medio de respuesta de aproximadamente 40 milisegundos. Eso sí que es velocidad.
Implementación de la búsqueda semántica
Para hacer realidad la magia del aprendizaje automático a la velocidad del rayo, Lucidworks ha implementado la búsqueda semántica utilizando el enfoque de búsqueda vectorial semántica. Hay dos partes fundamentales.
Primera parte: el modelo de aprendizaje automático
En primer lugar, se necesita una forma de codificar el texto en un vector numérico. El texto puede ser la descripción de un producto, una consulta de búsqueda de un usuario, una pregunta o incluso la respuesta a una pregunta. Un modelo de búsqueda semántica se entrena para codificar el texto de tal manera que el texto que es semánticamente similar a otro texto se codifica en vectores que son numéricamente "cercanos" entre sí. Este paso de codificación debe ser rápido para poder dar soporte a las miles o más posibles búsquedas de clientes o consultas de usuarios que llegan cada segundo.
Segunda parte: el motor de búsqueda vectorial
En segundo lugar, es necesario encontrar rápidamente las mejores coincidencias con la búsqueda del cliente o la consulta del usuario. El modelo habrá codificado ese texto en un vector numérico. A partir de ahí, tiene que compararlo con todos los vectores numéricos de su catálogo o listas de preguntas y respuestas para encontrar las mejores coincidencias, los vectores "más cercanos" al vector de la consulta. Para ello, necesitarás un motor vectorial capaz de manejar toda esa información con eficacia y a la velocidad del rayo. El motor puede contener millones de vectores y en realidad sólo se necesitan las veinte mejores coincidencias con la consulta. Y, por supuesto, tiene que gestionar unas mil consultas de este tipo por segundo.
Para hacer frente a estos retos, hemos añadido el motor de búsqueda vectorial Milvus en la versión 5.3 de Fusion. Milvus es software de código abierto y es rápido. Milvus utiliza FAISS(Facebook AI Similarity Search), la misma tecnología que Facebook utiliza en producción para sus propias iniciativas de aprendizaje automático. Cuando es necesario, puede funcionar incluso más rápido en la GPU. Cuando se instala Fusion 5.3 (o superior) con el componente de aprendizaje automático, Milvus se instala automáticamente como parte de ese componente para que pueda activar todas estas capacidades con facilidad.
El tamaño de los vectores en una colección dada, especificado cuando se crea la colección, depende del modelo que produce esos vectores. Por ejemplo, una colección determinada podría almacenar los vectores creados a partir de la codificación (mediante un modelo) de todas las descripciones de productos de un catálogo de productos. Sin un motor de búsqueda vectorial como Milvus, las búsquedas de similitudes no serían factibles en todo el espacio vectorial. Por lo tanto, las búsquedas de similitud tendrían que limitarse a candidatos preseleccionados del espacio vectorial (por ejemplo, 500) y tendrían tanto un rendimiento más lento como resultados de menor calidad. Milvus puede almacenar cientos de miles de millones de vectores en múltiples colecciones de vectores para garantizar que la búsqueda sea rápida y los resultados relevantes.
Utilización de la búsqueda semántica
Volvamos al flujo de trabajo de la búsqueda semántica, ahora que hemos aprendido un poco por qué Milvus puede ser tan importante. La búsqueda semántica consta de tres etapas. Durante la primera etapa, se carga y/o se entrena el modelo de aprendizaje automático. Después, los datos se indexan en Milvus y Solr. La etapa final es la etapa de consulta, cuando se produce la búsqueda real. A continuación nos centraremos en estas dos últimas etapas.
Indexación en Milvus
Lucidworks-1.png
Como se muestra en el diagrama anterior, la etapa de consulta comienza de forma similar a la etapa de indexación, pero con la entrada de consultas en lugar de documentos. Para cada consulta
- La consulta se envía al proceso de indexación de Smart Answers.
- A continuación, la consulta se envía al modelo ML.
- El modelo ML devuelve un vector numérico (codificado a partir de la consulta). Una vez más, el tipo de modelo determina el tamaño del vector.
- El vector se envía a Milvus, que determina qué vectores de la colección Milvus especificada coinciden mejor con el vector proporcionado.
- Milvus devuelve una lista de ID únicos y distancias correspondientes a los vectores determinados en el paso cuatro.
- Se envía a Solr una consulta con esos ID y distancias.
- Solr devuelve entonces una lista ordenada de los documentos asociados a esos ID.
Pruebas de escala
Con el fin de demostrar que nuestros flujos de búsqueda semántica funcionan con la eficiencia que exigimos a nuestros clientes, realizamos pruebas de escala utilizando scripts Gatling en Google Cloud Platform utilizando un clúster Fusion con ocho réplicas del modelo ML, ocho réplicas del servicio de consulta y una única instancia de Milvus. Las pruebas se realizaron utilizando los índices FLAT y HNSW de Milvus. El índice FLAT tiene una recuperación del 100%, pero es menos eficiente, excepto cuando los conjuntos de datos son pequeños. El índice HNSW (Hierarchical Small World Graph) sigue ofreciendo resultados de alta calidad y ha mejorado su rendimiento en conjuntos de datos más grandes.
Veamos algunas cifras de un ejemplo reciente:
Lucidworks-2.png
Lucidworks-3.png
Lucidworks-4.png
Primeros pasos
Los canales de Smart Answers están diseñados para ser fáciles de usar. Lucidworks dispone de modelos preentrenados que son fáciles de implantar y que, por lo general, ofrecen buenos resultados, aunque el entrenamiento de sus propios modelos, junto con los modelos preentrenados, ofrecerá los mejores resultados. Póngase en contacto con nosotros hoy mismo para saber cómo puede implantar estas iniciativas en sus herramientas de búsqueda para obtener resultados más eficaces y atractivos.
Este blog ha sido publicado en: https://lucidworks.com/post/how-to-build-fast-semantic-search/?utm_campaign=Oktopost-Blog+Posts&utm_medium=organic_social&utm_source=linkedin
Try Managed Milvus for Free
Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.
Get StartedLike the article? Spread the word