Construire une recherche sémantique à grande vitesse
Larecherche sémantique est un outil formidable pour aider vos clients - ou vos employés - à trouver les bons produits ou les bonnes informations. Elle peut même remonter à la surface des informations difficiles à indexer pour obtenir de meilleurs résultats. Cela dit, si vos méthodologies sémantiques ne sont pas déployées pour travailler rapidement, elles ne vous seront d'aucune utilité. Le client ou l'employé ne va pas s'asseoir pendant que le système prend son temps pour répondre à sa requête - et il est probable qu'un millier d'autres requêtes soient ingérées en même temps.
Comment rendre la recherche sémantique plus rapide ? Une recherche sémantique lente ne suffira pas.
Heureusement, c'est le genre de problème que Lucidworks aime résoudre. Nous avons récemment testé un cluster de taille modeste - lisez la suite pour plus de détails - qui a permis d'obtenir 1 500 RPS (requêtes par seconde) sur une collection de plus d'un million de documents, avec un temps de réponse moyen d'environ 40 millisecondes. Il s'agit là d'une véritable vitesse.
Mise en œuvre de la recherche sémantique
Pour que la magie de l'apprentissage automatique se produise à la vitesse de l'éclair, Lucidworks a mis en œuvre la recherche sémantique en utilisant l'approche de la recherche vectorielle sémantique. Il y a deux parties essentielles.
Première partie : le modèle d'apprentissage automatique
Tout d'abord, vous avez besoin d'un moyen d'encoder du texte dans un vecteur numérique. Le texte peut être une description de produit, une requête de recherche d'un utilisateur, une question ou même une réponse à une question. Un modèle de recherche sémantique est entraîné à coder le texte de manière à ce que le texte qui est sémantiquement similaire à d'autres textes soit codé dans des vecteurs qui sont numériquement "proches" les uns des autres. Cette étape d'encodage doit être rapide afin de prendre en charge le millier ou plus de recherches possibles de clients ou de requêtes d'utilisateurs qui arrivent chaque seconde.
Deuxième partie : le moteur de recherche vectoriel
Deuxièmement, vous devez trouver rapidement les meilleures correspondances avec la recherche du client ou la requête de l'utilisateur. Le modèle aura encodé ce texte en un vecteur numérique. À partir de là, vous devez le comparer à tous les vecteurs numériques de votre catalogue ou de vos listes de questions et réponses pour trouver les meilleures correspondances, c'est-à-dire les vecteurs les plus "proches" du vecteur de la requête. Pour ce faire, vous aurez besoin d'un moteur vectoriel capable de traiter toutes ces informations efficacement et à la vitesse de l'éclair. Le moteur peut contenir des millions de vecteurs, alors que vous ne souhaitez obtenir qu'une vingtaine de correspondances avec votre requête. Et bien sûr, il doit traiter un millier de requêtes de ce type chaque seconde.
Pour relever ces défis, nous avons ajouté le moteur de recherche vectorielle Milvus dans la version 5.3 de Fusion. Milvus est un logiciel libre et rapide. Milvus utilise FAISS(Facebook AI Similarity Search), la même technologie que Facebook utilise en production pour ses propres initiatives d'apprentissage automatique. Si nécessaire, il peut fonctionner encore plus rapidement sur GPU. Lorsque Fusion 5.3 (ou supérieur) est installé avec le composant d'apprentissage automatique, Milvus est automatiquement installé dans le cadre de ce composant afin que vous puissiez activer toutes ces capacités en toute simplicité.
La taille des vecteurs d'une collection donnée, spécifiée lors de la création de la collection, dépend du modèle qui produit ces vecteurs. Par exemple, une collection donnée peut stocker les vecteurs créés à partir de l'encodage (via un modèle) de toutes les descriptions de produits dans un catalogue de produits. Sans un moteur de recherche vectoriel comme Milvus, les recherches de similarité ne seraient pas possibles dans l'ensemble de l'espace vectoriel. Les recherches de similitudes devraient donc être limitées à des candidats présélectionnés dans l'espace vectoriel (par exemple, 500), ce qui entraînerait des performances plus lentes et des résultats de moindre qualité. Milvus peut stocker des centaines de milliards de vecteurs dans plusieurs collections de vecteurs afin de garantir la rapidité de la recherche et la pertinence des résultats.
Utilisation de la recherche sémantique
Revenons au flux de travail de la recherche sémantique, maintenant que nous avons un peu appris pourquoi Milvus peut être si important. La recherche sémantique se déroule en trois étapes. Au cours de la première étape, le modèle d'apprentissage automatique est chargé et/ou formé. Ensuite, les données sont indexées dans Milvus et Solr. La dernière étape est celle de la requête, lorsque la recherche proprement dite a lieu. Nous nous concentrerons sur ces deux dernières étapes ci-dessous.
Indexation dans Milvus
Lucidworks-1.png
Comme le montre le diagramme ci-dessus, l'étape d'interrogation commence de la même manière que l'étape d'indexation, mais les requêtes arrivent à la place des documents. Pour chaque requête :
- La requête est envoyée au pipeline d'indexation Smart Answers.
- La requête est ensuite envoyée au modèle ML.
- Le modèle ML renvoie un vecteur numérique (crypté à partir de la requête). Là encore, le type de modèle détermine la taille du vecteur.
- Le vecteur est envoyé à Milvus, qui détermine alors quels vecteurs, dans la collection Milvus spécifiée, correspondent le mieux au vecteur fourni.
- Milvus renvoie une liste d'ID et de distances uniques correspondant aux vecteurs déterminés à la quatrième étape.
- Une requête contenant ces ID et ces distances est envoyée à Solr.
- Solr renvoie alors une liste ordonnée des documents associés à ces identifiants.
Test d'échelle
Afin de prouver que nos flux de recherche sémantique fonctionnent avec l'efficacité requise pour nos clients, nous avons effectué des tests d'échelle à l'aide de scripts Gatling sur la Google Cloud Platform en utilisant un cluster Fusion avec huit répliques du modèle ML, huit répliques du service de requête et une seule instance de Milvus. Les tests ont été effectués à l'aide des index Milvus FLAT et HNSW. L'index FLAT a un rappel de 100 %, mais il est moins efficace, sauf lorsque les ensembles de données sont petits. L'index HNSW (Hierarchical Small World Graph) présente toujours des résultats de haute qualité et ses performances sont améliorées sur des ensembles de données plus importants.
Voyons maintenant quelques chiffres tirés d'un exemple récent :
Lucidworks-2.png
Lucidworks-3.png
Lucidworks-4.png
Pour commencer
Les pipelines de Smart Answers sont conçus pour être faciles à utiliser. Lucidworks dispose de modèles pré-entraînés qui sont faciles à déployer et donnent généralement de bons résultats. Cependant, l'entraînement de vos propres modèles, en tandem avec les modèles pré-entraînés, offre les meilleurs résultats. Contactez-nous dès aujourd'hui pour savoir comment vous pouvez mettre en œuvre ces initiatives dans vos outils de recherche afin d'obtenir des résultats plus efficaces et plus agréables.
Ce blog est repris de : 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