Construye búsqueda semántica a gran velocidad
La búsqueda semántica es una gran herramienta para ayudar a tus clientes —o a tus 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 tus metodologías semánticas no se implementan para funcionar rápido, no te servirán de nada. El cliente o empleado no se quedará simplemente esperando mientras el sistema se toma su tiempo para responder a su consulta, y es probable que otras mil estén siendo ingeridas al mismo tiempo.
¿Cómo puedes hacer que la búsqueda semántica sea rápida? Una búsqueda semántica lenta no va a ser suficiente.
Afortunadamente, este es el tipo de problema que a Lucidworks le encanta resolver. Recientemente probamos un clúster de tamaño modesto —sigue leyendo para más detalles— que dio como resultado 1500 RPS (solicitudes por segundo) contra una colección de más de un millón de documentos, con un tiempo de respuesta promedio de aproximadamente 40 milisegundos. Eso sí que es velocidad en serio.
Implementación de la búsqueda semántica
Para hacer realidad una magia de machine learning ultrarrápida, Lucidworks ha implementado la búsqueda semántica usando el enfoque de búsqueda semántica vectorial. Hay dos partes críticas.
Primera parte: El modelo de machine learning
Primero, necesitas una forma de codificar texto en un vector numérico. El texto podría ser una descripción de producto, una consulta de búsqueda de un usuario, una pregunta o incluso una respuesta a una pregunta. Un modelo de búsqueda semántica se entrena para codificar texto de tal manera que el texto que es semánticamente similar a otro texto se codifique en vectores que estén numéricamente “cerca” entre sí. Este paso de codificación debe ser rápido para poder admitir las mil 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, necesitas una forma de encontrar rápidamente las mejores coincidencias para 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í, necesitas compararlo con todos los vectores numéricos de tu catálogo o listas de preguntas y respuestas para encontrar esas mejores coincidencias: los vectores que están “más cerca” del vector de la consulta. Para eso, necesitarás un motor vectorial que pueda manejar toda esa información de manera eficaz y a una velocidad fulminante. El motor podría contener millones de vectores y, en realidad, solo quieres las veinte mejores coincidencias aproximadamente para tu consulta. Y, por supuesto, debe manejar unas mil consultas de este tipo cada segundo.
Para abordar estos desafíos, añadimos el motor de búsqueda vectorial Milvus en nuestro lanzamiento Fusion 5.3. Milvus es software de código abierto y es rápido. Milvus usa FAISS (Facebook AI Similarity Search), la misma tecnología que Facebook usa en producción para sus propias iniciativas de machine learning. Cuando es necesario, puede ejecutarse aún más rápido en GPU. Cuando Fusion 5.3 (o superior) se instala con el componente de machine learning, Milvus se instala automáticamente como parte de ese componente para que puedas activar todas estas capacidades con facilidad.
El tamaño de los vectores en una colección determinada, 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 al codificar (mediante un modelo) todas las descripciones de productos de un catálogo de productos. Sin un motor de búsqueda vectorial como Milvus, las búsquedas por similitud no serían viables en todo el espacio vectorial. Por lo tanto, las búsquedas por 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 que los resultados sean relevantes.
Uso de la búsqueda semántica
Volvamos al flujo de trabajo de búsqueda semántica, ahora que hemos aprendido un poco sobre por qué Milvus podría ser tan importante. La búsqueda semántica tiene tres etapas. Durante la primera etapa, el modelo de aprendizaje automático se carga y/o se entrena. Después, los datos se indexan en Milvus y Solr. La etapa final es la etapa de consulta, cuando ocurre la búsqueda real. Nos centraremos en esas dos últimas etapas a continuación.
Indexación en Milvus
Diagrama arquitectónico para la indexación en Milvus.
Como se muestra en el diagrama anterior, la etapa de consulta comienza de manera similar a la etapa de indexación, solo que con consultas que entran en lugar de documentos. Para cada consulta:
- La consulta se envía al pipeline de índice de Smart Answers.
- Luego, la consulta se envía al modelo de ML.
- El modelo de ML devuelve un vector numérico (cifrado a partir de la consulta). De nuevo, el tipo de modelo determina el tamaño del vector.
- El vector se envía a Milvus, que luego determina qué vectores, en la colección de 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.
- Una consulta que contiene esos ID y distancias se envía a Solr.
- Solr luego devuelve una lista ordenada de los documentos asociados con esos ID.
Pruebas de escalabilidad
Para demostrar que nuestros flujos de búsqueda semántica se ejecutan con la eficiencia que requerimos para nuestros clientes, realizamos pruebas de escalabilidad utilizando scripts de Gatling en Google Cloud Platform con un clúster de Fusion con ocho réplicas del modelo de ML, ocho réplicas del servicio de consulta y una única instancia de Milvus. Las pruebas se ejecutaron utilizando los índices FLAT y HNSW de Milvus. El índice FLAT tiene un 100% de recuperación, pero es menos eficiente, excepto cuando los conjuntos de datos son pequeños. El índice HNSW (Hierarchical Small World Graph) sigue teniendo resultados de alta calidad y ha mejorado el rendimiento en conjuntos de datos más grandes.
Veamos algunos números de un ejemplo reciente que ejecutamos:
Rendimiento de los índices FLAT y HNSW de Milvus en un conjunto de datos pequeño.
Rendimiento de los índices FLAT y HNSW de Milvus en un conjunto de datos mediano.
Rendimiento de los índices FLAT y HNSW de Milvus en un conjunto de datos grande.
Primeros pasos
Los pipelines de Smart Answers están diseñados para ser fáciles de usar. Lucidworks tiene modelos preentrenados que son fáciles de implementar y generalmente ofrecen buenos resultados, aunque entrenar tus propios modelos, en conjunto con modelos preentrenados, ofrecerá los mejores resultados. Contáctanos hoy para saber cómo puedes implementar estas iniciativas en tus herramientas de búsqueda para potenciar resultados más efectivos y satisfactorios.
Este blog se vuelve a publicar desde: https://lucidworks.com/post/how-to-build-fast-semantic-search/?utm_campaign=Oktopost-Blog+Posts&utm_medium=organic_social&utm_source=linkedin
Sigue leyendo

AI Agents Are Quietly Transforming E-Commerce — Here’s How
Discover how AI agents transform e-commerce with autonomous decision-making, enhanced product discovery, and vector search capabilities for today's retailers.

Selecting the Right ETL Tools for Unstructured Data to Prepare for AI
Learn the right ETL tools for unstructured data to power AI. Explore key challenges, tool comparisons, and integrations with Milvus for vector search.

DeepSeek-VL2: Mixture-of-Experts Vision-Language Models for Advanced Multimodal Understanding
Explore DeepSeek-VL2, the open-source MoE vision-language model. Discover its architecture, efficient training pipeline, and top-tier performance.



