Construire un système de QA intelligent avec le NLP et Milvus
Projet Milvus:github.com/milvus-io/milvus
Le système de réponse aux questions est couramment utilisé dans le domaine du traitement automatique du langage naturel. Il sert à répondre à des questions formulées en langage naturel et possède un large éventail d’applications. Les applications typiques incluent : l’interaction vocale intelligente, le service client en ligne, l’acquisition de connaissances, la conversation émotionnelle personnalisée, et plus encore. La plupart des systèmes de réponse aux questions peuvent être classés comme : systèmes de réponse aux questions génératifs et par récupération, systèmes de réponse aux questions à tour unique et à tours multiples, systèmes de réponse aux questions ouverts, et systèmes de réponse aux questions spécifiques.
Cet article traite principalement d’un système de QA conçu pour un domaine spécifique, généralement appelé robot intelligent de service client. Par le passé, la création d’un robot de service client nécessitait généralement la conversion des connaissances du domaine en une série de règles et de graphes de connaissances. Le processus de construction reposait fortement sur l’intelligence « humaine ». Une fois les scénarios modifiés, beaucoup de travail répétitif était nécessaire. Avec l’application de l’apprentissage profond au traitement automatique du langage naturel (NLP), la lecture automatique peut trouver automatiquement des réponses aux questions correspondantes directement à partir de documents. Le modèle de langage d’apprentissage profond convertit les questions et les documents en vecteurs sémantiques afin de trouver la réponse correspondante.
Cet article utilise le modèle BERT open source de Google et Milvus, un moteur de recherche vectorielle open source, pour construire rapidement un bot de Q&R basé sur la compréhension sémantique.
Architecture globale
Cet article met en œuvre un système de réponse aux questions au moyen de la correspondance par similarité sémantique. Le processus général de construction est le suivant :
- Obtenir un grand nombre de questions avec réponses dans un domaine spécifique (un ensemble de questions standard).
- Utiliser le modèle BERT pour convertir ces questions en vecteurs de caractéristiques et les stocker dans Milvus. Et Milvus attribuera simultanément un ID de vecteur à chaque vecteur de caractéristiques.
- Stocker ces ID de questions représentatives et leurs réponses correspondantes dans PostgreSQL.
Lorsqu’un utilisateur pose une question :
- Le modèle BERT la convertit en vecteur de caractéristiques.
- Milvus effectue une recherche de similarité et récupère l’ID le plus similaire à la question.
- PostgreSQL renvoie la réponse correspondante.
Le schéma d’architecture du système est le suivant (les lignes bleues représentent le processus d’importation et les lignes jaunes représentent le processus de requête) :
Figure 1.
Ensuite, nous vous montrerons comment construire un système de Q&R en ligne étape par étape.
Étapes pour construire le système de Q&R
Avant de commencer, vous devez installer Milvus et PostgreSQL. Pour les étapes d’installation spécifiques, consultez le site officiel de Milvus.
1. Préparation des données
Les données expérimentales de cet article proviennent de : https://github.com/chatopera/insuranceqa-corpus-zh
Le jeu de données contient des paires de questions-réponses liées au secteur de l’assurance. Dans cet article, nous en extrayons 20 000 paires de questions-réponses. Grâce à cet ensemble de jeux de données de questions-réponses, vous pouvez construire rapidement un robot de service client pour le secteur de l’assurance.
2. Générer des vecteurs de caractéristiques
Ce système utilise un modèle que BERT a pré-entraîné. Téléchargez-le à partir du lien ci-dessous avant de démarrer un service : https://storage.googleapis.com/bert_models/2018_10_18/cased_L-24_H-1024_A-16.zip
Utilisez ce modèle pour convertir la base de questions en vecteurs de caractéristiques en vue d’une future recherche de similarité. Pour plus d’informations sur le service BERT, consultez https://github.com/hanxiao/bert-as-service.
Figure 2.
3. Importer dans Milvus et PostgreSQL
Normalisez et importez les vecteurs de caractéristiques générés dans Milvus, puis importez les ID renvoyés par Milvus et les réponses correspondantes dans PostgreSQL. Voici la structure de table dans PostgreSQL :
Figure 3.
Figure 4.
4. Récupérer les réponses
L’utilisateur saisit une question et, après avoir généré le vecteur de caractéristiques avec BERT, il peut trouver la question la plus similaire dans la bibliothèque Milvus. Cet article utilise la distance cosinus pour représenter la similarité entre deux phrases. Comme tous les vecteurs sont normalisés, plus la distance cosinus des deux vecteurs de caractéristiques est proche de 1, plus la similarité est élevée.
En pratique, il se peut que votre système ne dispose pas de questions parfaitement correspondantes dans la bibliothèque. Vous pouvez alors définir un seuil de 0,9. Si la plus grande distance de similarité récupérée est inférieure à ce seuil, le système indiquera qu’il n’inclut pas de questions connexes.
Figure 5.
Démonstration du système
Voici un exemple d’interface du système :
Figure 6.
Saisissez votre question dans la boîte de dialogue et vous recevrez une réponse correspondante :
Figure 7.
Résumé
Après avoir lu cet article, nous espérons que vous trouverez facile de créer votre propre système de questions-réponses.
Avec le modèle BERT, vous n’avez plus besoin de trier et d’organiser les corpus de textes au préalable. Dans le même temps, grâce aux hautes performances et à la grande évolutivité du moteur de recherche vectorielle open source Milvus, votre système de questions-réponses peut prendre en charge un corpus allant jusqu’à des centaines de millions de textes.
Milvus a officiellement rejoint la fondation Linux AI (LF AI) pour incubation. Nous vous invitons à rejoindre la communauté Milvus et à travailler avec nous pour accélérer l’application des technologies d’IA !
=> Essayez notre démo en ligne ici : https://www.milvus.io/scenarios
Continuer à lire

Vector Lakebase: End the AI Data Silo
Learn how Vector Lakebase unifies vector search, data lakes, and AI data operations so teams can serve RAG and agents without copy-and-sync pipelines.

Build for the Boom: Why AI Agent Startups Should Build Scalable Infrastructure Early
Explore strategies for developing AI agents that can handle rapid growth. Don't let inadequate systems undermine your success during critical breakthrough moments.

Demystifying the Milvus Sizing Tool
Explore how to use the Sizing Tool to select the optimal configuration for your Milvus deployment.



