🚀 Essayez Zilliz Cloud, la version entièrement gérée de Milvus, gratuitement—découvrez des performances 10x plus rapides ! Essayez maintenant>>

milvus-logo
LFAI

Architecture générale

  • Scenarios
May 12, 2020
milvus

Projet Milvus:github.com/milvus-io/milvus

Le système de réponse aux questions est couramment utilisé dans le domaine du traitement du langage naturel. Il est utilisé pour répondre à des questions en langage naturel et a un large éventail d'applications. Les applications typiques comprennent : l'interaction vocale intelligente, le service clientèle en ligne, l'acquisition de connaissances, le chat émotionnel personnalisé, etc. La plupart des systèmes de réponse aux questions peuvent être classés comme suit : systèmes de réponse aux questions génératifs et de recherche, systèmes de réponse aux questions à un seul tour et systèmes de réponse aux questions à plusieurs tours, systèmes de réponse aux questions ouvertes et systèmes de réponse aux questions spécifiques.

Cet article traite principalement d'un système d'assurance qualité conçu pour un domaine spécifique, généralement appelé robot intelligent de service à la clientèle. Dans le passé, la construction d'un robot de service à la clientèle 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 repose en grande partie sur l'intelligence "humaine". Avec l'application de l'apprentissage profond au traitement du langage naturel (NLP), la lecture automatique peut trouver automatiquement les réponses aux questions correspondantes directement à partir des documents. Le modèle linguistique d'apprentissage profond convertit les questions et les documents en vecteurs sémantiques pour trouver la réponse correspondante.

Cet article utilise le modèle BERT open source de Google et Milvus, un moteur de recherche vectoriel open source, pour construire rapidement un robot de questions-réponses basé sur la compréhension sémantique.

Architecture générale

Cet article met en œuvre un système de réponse aux questions par le biais de l'appariement des similarités sémantiques. Le processus général de construction est le suivant :

  1. Obtenir un grand nombre de questions avec des réponses dans un domaine spécifique (un ensemble de questions standard).
  2. Utiliser le modèle BERT pour convertir ces questions en vecteurs de caractéristiques et les stocker dans Milvus. Milvus attribue en même temps un ID de vecteur à chaque vecteur de caractéristiques.
  3. Stocker ces ID de questions représentatives et leurs réponses correspondantes dans PostgreSQL.

Lorsqu'un utilisateur pose une question :

  1. Le modèle BERT la convertit en un vecteur de caractéristiques.
  2. Milvus effectue une recherche de similarité et récupère l'ID le plus similaire à la question.
  3. PostgreSQL renvoie la réponse correspondante.

Le diagramme de l'architecture du système est le suivant (les lignes bleues représentent le processus d'importation et les lignes jaunes le processus d'interrogation) :

1-system-architecture-milvus-bert-postgresql.png 1-system-architecture-milvus-bert-postgresql.png

Nous allons maintenant vous montrer comment créer un système de questions-réponses en ligne, étape par étape.

Étapes de la création d'un système de questions-réponses

Avant de commencer, vous devez installer Milvus et PostgreSQL. Pour les étapes d'installation spécifiques, voir 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

L'ensemble de données contient des paires de questions et de réponses relatives au secteur de l'assurance. Dans cet article, nous en extrayons 20 000 paires de questions et de réponses. Grâce à cet ensemble de données de questions et de réponses, vous pouvez rapidement construire 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 pré-entraîné par BERT. Téléchargez-le à partir du lien ci-dessous avant de commencer 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 données de questions en vecteurs de caractéristiques pour une future recherche de similitudes. Pour plus d'informations sur le service BERT, voir https://github.com/hanxiao/bert-as-service.

2-code-block.png 2-bloc-code.png

3. Importation dans Milvus et PostgreSQL

Normaliser et importer les vecteurs de caractéristiques générés dans Milvus, puis importer les ID renvoyés par Milvus et les réponses correspondantes dans PostgreSQL. Le tableau suivant montre la structure de la table dans PostgreSQL :

3-import-milvus-postgresql.png 3-import-milvus-postgresql.png

4-import-milvus-postgresql.png 4-import-milvus-postgresql.png

4. Récupérer les réponses

L'utilisateur saisit une question et, après avoir généré le vecteur de caractéristiques via 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. Tous les vecteurs étant normalisés, plus la distance cosinus des deux vecteurs de caractéristiques est proche de 1, plus la similarité est élevée.

Dans la pratique, il se peut que votre système ne dispose pas de questions parfaitement correspondantes dans la bibliothèque. Vous pouvez alors fixer un seuil de 0,9. Si la plus grande distance de similarité retrouvée est inférieure à ce seuil, le système indiquera qu'il n'inclut pas de questions apparentées.

4-retrieve-answers.png 4-retrieve-answers.png

Démonstration du système

L'illustration suivante montre un exemple d'interface du système :

5-milvus-QA-system-application.png 5-milvus-QA-system-application.png

Saisissez votre question dans la boîte de dialogue et vous recevrez une réponse correspondante :

5-milvus-QA-system-application-2.png 5-milvus-QA-system-application-2.png

Résumé de l'article

Après avoir lu cet article, nous espérons que vous trouverez facile de construire votre propre système de questions et réponses.

Avec le modèle BERT, vous n'avez plus besoin de trier et d'organiser les corpus de texte au préalable. En même temps, grâce à la haute performance et à l'extensibilité du moteur de recherche vectoriel open source Milvus, votre système d'assurance qualité peut prendre en charge un corpus de plusieurs centaines de millions de textes.

Milvus a officiellement rejoint la Fondation Linux AI (LF AI) pour l'incubation. Vous êtes invités à rejoindre la communauté Milvus et à travailler avec nous pour accélérer l'application des technologies de l'IA !

=> Essayez notre démo en ligne ici : https://www.milvus.io/scenarios

Try Managed Milvus for Free

Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.

Get Started

Like the article? Spread the word

Continuer à Lire