Créez une recherche sémantique à grande vitesse
La recherche sémantique est un excellent outil pour aider vos clients — ou vos employés — à trouver les bons produits ou les bonnes informations. Elle peut même faire remonter 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 fonctionner rapidement, elles ne vous seront d’aucune utilité. Le client ou l’employé ne va pas simplement attendre pendant que le système prend son temps pour répondre à sa requête — et il est probable qu’un millier d’autres soient ingérées au même moment.
Comment pouvez-vous rendre la recherche sémantique rapide ? Une recherche sémantique lente ne fera pas l’affaire.
Heureusement, c’est le genre de problème que Lucidworks adore résoudre. Nous avons récemment testé un cluster de taille modeste — poursuivez votre lecture pour plus de détails — qui a atteint 1500 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. Voilà une vitesse vraiment impressionnante.
Mettre en œuvre la recherche sémantique
Pour faire opérer une magie ultra-rapide fondée sur le machine learning, Lucidworks a mis en œuvre la recherche sémantique en utilisant l’approche de recherche vectorielle sémantique. Il y a deux parties essentielles.
Première partie : le modèle de machine learning
Tout d’abord, vous avez besoin d’un moyen d’encoder du texte en un vecteur numérique. Le texte peut être une description de produit, une requête de recherche utilisateur, une question, ou même une réponse à une question. Un modèle de recherche sémantique est entraîné à encoder le texte de sorte que les textes sémantiquement similaires à d’autres textes soient encodés en vecteurs qui sont numériquement « proches » les uns des autres. Cette étape d’encodage doit être rapide afin de prendre en charge le millier, voire plus, de recherches clients ou de requêtes utilisateur susceptibles d’arriver chaque seconde.
Deuxième partie : le moteur de recherche vectorielle
Ensuite, vous avez besoin d’un moyen de trouver rapidement les meilleures correspondances à 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 afin de trouver les meilleures correspondances — les vecteurs qui sont les plus « proches » du vecteur de requête. Pour cela, vous aurez besoin d’un moteur vectoriel capable de traiter efficacement toutes ces informations et à une vitesse fulgurante. Le moteur pourrait contenir des millions de vecteurs, et vous voulez en réalité seulement les vingt meilleures correspondances environ pour votre requête. Et bien sûr, il doit gérer environ 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 notre version Fusion 5.3. Milvus est un logiciel open source, et il est rapide. Milvus utilise FAISS (Facebook AI Similarity Search), la même technologie que Facebook utilise en production pour ses propres initiatives de machine learning. Lorsque cela est nécessaire, il peut fonctionner encore plus rapidement sur GPU. Lorsque Fusion 5.3 (ou version supérieure) est installé avec le composant de machine learning, Milvus est automatiquement installé dans le cadre de ce composant afin que vous puissiez activer facilement toutes ces capacités.
La taille des vecteurs dans 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 pourrait stocker les vecteurs créés à partir de l’encodage (via un modèle) de toutes les descriptions de produits d’un catalogue de produits. Sans un moteur de recherche vectorielle comme Milvus, les recherches de similarité ne seraient pas réalisables sur l’ensemble de l’espace vectoriel. Les recherches de similarité devraient donc être limitées à des candidats présélectionnés dans l’espace vectoriel (par exemple, 500) et auraient à la fois 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 que la recherche soit rapide et que les résultats soient pertinents.
Utiliser la recherche sémantique
Revenons au workflow de recherche sémantique, maintenant que nous avons appris un peu pourquoi Milvus pourrait être si important. La recherche sémantique comporte trois étapes. Lors de la première étape, le modèle d’apprentissage automatique est chargé et/ou entraîné. Ensuite, les données sont indexées dans Milvus et Solr. La dernière étape est l’étape de requête, lorsque la recherche proprement dite a lieu. Nous nous concentrerons ci-dessous sur ces deux dernières étapes.
Indexation dans Milvus
Schéma d’architecture pour l’indexation dans Milvus.
Comme le montre le schéma ci-dessus, l’étape de requête commence de manière similaire à l’étape d’indexation, simplement avec des requêtes entrantes au lieu de 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 de ML.
- Le modèle de ML renvoie un vecteur numérique (chiffré à 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 ensuite quels vecteurs, dans la collection Milvus spécifiée, correspondent le mieux au vecteur fourni.
- Milvus renvoie une liste d’ID uniques et de distances correspondant aux vecteurs déterminés à l’étape quatre.
- Une requête contenant ces ID et distances est envoyée à Solr.
- Solr renvoie ensuite une liste ordonnée des documents associés à ces ID.
Tests de montée en charge
Afin de prouver que nos flux de recherche sémantique fonctionnent avec l’efficacité que nous exigeons pour nos clients, nous exécutons des tests de montée en charge à l’aide de scripts Gatling sur Google Cloud Platform, en utilisant un cluster Fusion avec huit réplicas du modèle de ML, huit réplicas du service de requête et une seule instance de Milvus. Les tests ont été exécutés avec les index Milvus FLAT et HNSW. L’index FLAT offre un rappel de 100 %, mais il est moins efficace – sauf lorsque les jeux de données sont petits. L’index HNSW (Hierarchical Small World Graph) fournit toujours des résultats de haute qualité et offre de meilleures performances sur les jeux de données plus volumineux.
Passons à quelques chiffres tirés d’un exemple récent que nous avons exécuté :
Performances des index Milvus FLAT et HNSW sur un petit jeu de données.
Performances des index Milvus FLAT et HNSW sur un jeu de données de taille moyenne.
Performances des index Milvus FLAT et HNSW sur un grand jeu de données.
Pour commencer
Les pipelines Smart Answers sont conçus pour être faciles à utiliser. Lucidworks propose des modèles pré-entraînés faciles à déployer qui donnent généralement de bons résultats — même si l’entraînement de vos propres modèles, en tandem avec des modèles pré-entraînés, offrira les meilleurs résultats. Contactez-nous dès aujourd’hui pour découvrir 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.
Cet article de blog est republié depuis : https://lucidworks.com/post/how-to-build-fast-semantic-search/?utm_campaign=Oktopost-Blog+Posts&utm_medium=organic_social&utm_source=linkedin
Continuer à lire

Introducing Zilliz CLI and Agent Skills for Zilliz Cloud
Manage your vector database from your terminal or AI coding agent. Zilliz CLI and Agent Skills work with Claude Code, Cursor, Codex, and Copilot.

Introducing Zilliz MCP Server: Natural Language Access to Your Vector Database
Developers can easily manage and query vector databases with natural language via Zilliz MCP Server in AI-native environments.

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.



