Améliorer les capacités des chatbots grâce au NLP et à la recherche vectorielle dans Elasticsearch

Découvrez comment la recherche vectorielle et le NLP permettent d'améliorer les capacités des chatbots et comment Elasticsearch facilite le processus.

De la recherche vectorielle aux puissantes API REST, Elasticsearch offre aux développeurs la boîte à outils de recherche la plus complète. Explorez nos notebooks d’exemples sur GitHub pour tester de nouveaux cas d’usage. Vous pouvez également démarrer votre essai gratuit ou exécuter Elasticsearch en local dès aujourd’hui.

Les interfaces conversationnelles existent depuis un certain temps et deviennent de plus en plus populaires comme moyen d'assistance pour diverses tâches, telles que le service à la clientèle, la recherche d'informations et l'automatisation des tâches. Généralement accessibles par le biais d'assistants vocaux ou d'applications de messagerie, ces interfaces simulent une conversation humaine afin d'aider les utilisateurs à résoudre leurs questions plus efficacement.

À mesure que la technologie progresse, les chatbots sont utilisés pour gérer des tâches plus complexes - et rapidement - tout en offrant une expérience personnalisée aux utilisateurs. Le traitement du langage naturel (NLP) permet aux chatbots de traiter le langage de l'utilisateur, d'identifier l'intention derrière son message et d'en extraire des informations pertinentes. Par exemple, la reconnaissance des entités nommées extrait les informations clés d'un texte en les classant dans un ensemble de catégories. L'analyse des sentiments identifie le ton émotionnel, et la réponse aux questions la "réponse" à une requête. L'objectif du NLP est de permettre aux algorithmes de traiter le langage humain et d'effectuer des tâches dont, historiquement, seul l'homme était capable, telles que la recherche de passages pertinents dans de grandes quantités de texte, le résumé de texte et la génération de nouveaux contenus originaux.

Ces capacités avancées de NLP reposent sur une technologie connue sous le nom de recherche vectorielle. Elastic prend en charge de manière native la recherche vectorielle, en effectuant des recherches exactes et approximatives par k-nearest neighbor (kNN), ainsi que le NLP, ce qui permet d'utiliser des modèles personnalisés ou tiers directement dans Elasticsearch.

Dans ce billet de blog, nous allons explorer comment la recherche vectorielle et le NLP fonctionnent pour améliorer les capacités des chatbots et montrer comment Elasticsearch facilite le processus. Commençons par un bref aperçu de la recherche vectorielle.

Bien que les humains puissent comprendre le sens et le contexte du langage écrit, les machines ne peuvent pas en faire autant. C'est là qu'interviennent les vecteurs. En convertissant le texte en représentations vectorielles (représentations numériques du sens du texte), les machines peuvent surmonter cette limitation. Par rapport à une recherche traditionnelle, au lieu de s'appuyer sur des mots-clés et une recherche lexicale basée sur les fréquences, les vecteurs permettent de traiter des données textuelles à l'aide d'opérations définies pour des valeurs numériques.

Cela permet à la recherche vectorielle de localiser des données qui partagent des concepts ou des contextes similaires en utilisant les distances dans l'espace d'intégration "" pour représenter la similarité à partir d'un vecteur de requête. Lorsque les données sont similaires, les vecteurs correspondants sont similaires.

La recherche vectorielle n'est pas seulement utilisée dans les applications NLP, mais aussi dans divers autres domaines où des données non structurées sont impliquées, y compris le traitement des images et des vidéos.

Dans un flux de chatbot, il peut y avoir plusieurs approches des requêtes des utilisateurs, et par conséquent, il y a différentes façons d'améliorer la recherche d'informations pour une meilleure expérience de l'utilisateur. Étant donné que chaque solution présente ses propres avantages et inconvénients, il est essentiel de tenir compte des données et des ressources disponibles, ainsi que du temps de formation (le cas échéant) et de la précision attendue. Dans la section suivante, nous aborderons ces aspects pour les modèles NLP de réponse aux questions.

Questions-réponses

Un modèle de réponse aux questions (QA) est un type de modèle NLP conçu pour répondre aux questions posées en langage naturel. Lorsque les utilisateurs ont des questions qui nécessitent de déduire des réponses à partir de plusieurs ressources, sans qu'une réponse cible préexistante soit disponible dans les documents, les modèles génératifs d'assurance qualité peuvent être utiles. Toutefois, ces modèles peuvent être coûteux en termes de calcul et nécessiter de grandes quantités de données pour la formation liée au domaine, ce qui peut les rendre moins pratiques dans certaines situations, même si cette méthode peut s'avérer particulièrement utile pour traiter les questions hors domaine.

En revanche, lorsque les utilisateurs posent des questions sur un sujet spécifique et que la réponse se trouve dans le document, des modèles d'assurance qualité extractifs peuvent être utilisés. Ces modèles extraient directement la réponse du document source, fournissant des résultats transparents et vérifiables, ce qui en fait une option plus pratique pour les entreprises ou les organisations qui souhaitent fournir un moyen simple et efficace de répondre aux questions.

L'exemple ci-dessous démontre l'utilisation d'un modèle d'assurance qualité extractif pré-entraîné, disponible sur Hugging Face et déployé dans Elasticsearch, pour extraire des réponses à partir d'un contexte donné :

Déployer les modèles formés.

Ajouter un modèle à un pipeline d'ingestion d'inférence.

Il existe plusieurs façons de traiter les requêtes des utilisateurs et d'extraire des informations, et l'utilisation de modèles linguistiques et de sources de données multiples peut constituer une solution efficace pour traiter des données non structurées. Pour illustrer cela, nous avons un exemple de traitement des données d'un chatbot employé pour répondre à des requêtes avec des réponses prenant en compte des données extraites de documents sélectionnés.

Comme indiqué ci-dessus, le traitement des données pour notre chatbot peut être divisé en trois parties :

  • Traitement vectoriel : Cette partie convertit les documents en représentations vectorielles.
  • Traitement des données de l'utilisateur : Cette partie extrait les informations pertinentes de la requête de l'utilisateur et effectue une recherche sémantique et une recherche hybride.
  • Optimisation : Cette partie comprend la surveillance et est cruciale pour garantir la fiabilité du chatbot, des performances optimales et une excellente expérience utilisateur.

Traitement vectoriel

Pour la partie traitement, la première étape consiste à déterminer les éléments constitutifs de chaque document, puis à convertir chaque élément en une représentation vectorielle ; ces représentations peuvent être créées pour un large éventail de formats de données.

Plusieurs méthodes peuvent être utilisées pour calculer les embeddings, notamment des modèles pré-entraînés et des bibliothèques.

Il est important de noter que l'efficacité de la recherche et de l'extraction sur ces représentations dépend des données existantes ainsi que de la qualité et de la pertinence de la méthode utilisée.

Au fur et à mesure que les vecteurs sont calculés, ils sont stockés dans Elasticsearch avec un type de champ dense_vector.

Traitement des entrées utilisateur des chatbots

Pour l'utilisateur, après avoir reçu une question, il est utile d'en extraire toutes les informations possibles avant de poursuivre. Cela permet de comprendre l'intention de l'utilisateur et, dans ce cas, nous utilisons un modèle de reconnaissance d'entités nommées (NER) pour nous aider dans cette tâche. Le NER est le processus d'identification et de classification des entités nommées dans des catégories d'entités prédéfinies.

Bien qu'il ne s'agisse pas d'une étape nécessaire, en utilisant des données structurées ou les résultats du modèle NLP ci-dessus ou d'un autre modèle NLP pour catégoriser la requête de l'utilisateur, nous pouvons restreindre la recherche kNN à l'aide d'un filtre. Cela permet d'améliorer les performances et la précision en réduisant la quantité de données à traiter.

Recherche sémantique et recherche hybride

Étant donné que l'invite provient des requêtes des utilisateurs et que le chatbot doit traiter le langage humain avec sa variabilité et son ambiguïté, la recherche sémantique est parfaitement adaptée. Dans Elasticsearch, vous pouvez effectuer une recherche sémantique en une seule étape en passant la chaîne de requête et l'ID du modèle d'intégration dans un objet query_vector_builder. Il vectorise la requête et effectue une recherche kNN pour extraire les k meilleures correspondances qui sont les plus proches de la requête :

Exemple de bout en bout : Comment déployer un modèle d'intégration de texte et l'utiliser pour la recherche sémantique. Elasticsearch utilise l'implémentation Lucene de l'Okapi BM25, un modèle peu dense , pour classer les requêtes de texte en fonction de leur pertinence, tandis que les modèles denses sont utilisés pour la recherche sémantique. Pour combiner les points forts des correspondances vectorielles et des correspondances obtenues à partir de la requête textuelle, il est possible d'effectuer une recherche hybride:

La combinaison de modèles épars et denses permet souvent d'obtenir les meilleurs résultats

Les modèles épars sont généralement plus performants pour les requêtes courtes et les terminologies spécifiques, tandis que les modèles denses s'appuient sur le contexte et les associations. Si vous souhaitez en savoir plus sur la façon dont ces méthodes se comparent et se complètent, nous comparons ici le BM25 à deux modèles denses qui ont été spécifiquement entraînés pour la recherche.

Le résultat le plus pertinent peut généralement être la première réponse donnée à l'utilisateur. Lescore est un nombre utilisé pour déterminer la pertinence du document retourné.

Optimisation des chatbots

Pour améliorer l'expérience utilisateur, les performances et la fiabilité de votre chatbot, en plus de l'application de la notation hybride, vous pouvez incorporer les approches suivantes : Analyse des sentiments : Pour connaître les commentaires et les réactions des utilisateurs au fur et à mesure que le dialogue se déroule, vous pouvez intégrer un modèle d'analyse des sentiments:

Capacités de GPT : Pour améliorer l'expérience globale, vous pouvez combiner la pertinence de recherche d'Elasticsearch avec les capacités de réponse aux questions de GPT d'OpenAI, en utilisant l'API Chat Completion pour renvoyer à l'utilisateur des réponses générées par le modèle, en considérant les k documents les plus importants comme contexte. Invite : "répondre à cette question <user_question> utiliser uniquement ce document <top_search_result>"

Observabilité : Garantir la performance de tout chatbot est crucial, et le suivi est un élément essentiel pour y parvenir. En plus des journaux qui enregistrent les interactions avec le chatbot, il est important de suivre le temps de réponse, la latence et d'autres paramètres pertinents pour le chatbot. Les outilsElastic Observability vous permettent de collecter et d'analyser ces informations.

Résumé

Cet article de blog explique ce que sont le NLP et la recherche vectorielle et présente un exemple de chatbot utilisé pour répondre aux requêtes des utilisateurs en tenant compte des données extraites de la représentation vectorielle des documents.

Comme nous l'avons démontré, en utilisant le NLP et la recherche vectorielle, les chatbots sont capables d'effectuer des tâches complexes qui vont au-delà des données structurées et ciblées. Il s'agit notamment de faire des recommandations et de répondre à des questions spécifiques sur des produits ou des entreprises en utilisant plusieurs sources et formats de données comme contexte, tout en offrant une expérience personnalisée à l'utilisateur.

Les cas d'utilisation vont de la fourniture d'un service à la clientèle, en aidant les clients à répondre à leurs demandes, à l'aide aux développeurs, en fournissant des conseils étape par étape, en suggérant des recommandations ou même en automatisant des tâches. En fonction de l'objectif et des données existantes, d'autres modèles et méthodes peuvent également être utilisés pour obtenir des résultats encore meilleurs et améliorer l'expérience globale de l'utilisateur.

Voici quelques liens sur le sujet qui peuvent être utiles :

  1. Comment déployer le traitement du langage naturel (NLP) : Pour commencer
  2. Aperçu de la recherche de similarité d'images dans Elasticsearch
  3. ChatGPT et Elasticsearch : L'OpenAI rencontre les données privées
  4. Monitoring des modèles API et GPT d'OpenAI avec OpenTelemetry et Elastic
  5. 5 raisons pour lesquelles les responsables informatiques ont besoin de la recherche vectorielle pour améliorer les expériences de recherche

En intégrant le NLP et la recherche vectorielle native dans Elasticsearch, vous pouvez tirer parti de sa vitesse, de son évolutivité et de ses capacités de recherche pour créer des chatbots très efficaces et performants, capables de traiter de grandes quantités de données, qu'elles soient structurées ou non.

Prêt à commencer ? Commencez un essai gratuit d'Elastic Cloud.

Dans ce billet de blog, nous pouvons avoir utilisé ou nous pouvons faire référence à des outils d'IA générative de tiers, qui sont détenus et exploités par leurs propriétaires respectifs. Elastic n'a aucun contrôle sur les outils de tiers et nous ne sommes pas responsables de leur contenu, de leur fonctionnement ou de leur utilisation, ni de toute perte ou de tout dommage pouvant résulter de votre utilisation de ces outils. Faites preuve de prudence lorsque vous utilisez des outils d'IA avec des informations personnelles, sensibles ou confidentielles. Les données que vous soumettez peuvent être utilisées pour la formation à l'IA ou à d'autres fins. Il n'y a aucune garantie que les informations que vous fournissez resteront sécurisées ou confidentielles. Vous devez vous familiariser avec les pratiques en matière de protection de la vie privée et les conditions d'utilisation de tout outil d'IA générative avant de l'utiliser.

Elastic, Elasticsearch et les marques associées sont des marques commerciales, des logos ou des marques déposées d'Elasticsearch N.V. aux États-Unis et dans d'autres pays. Tous les autres noms de produits et d'entreprises sont des marques commerciales, des logos ou des marques déposées appartenant à leurs propriétaires respectifs.

Comment optimiser un chatbot

1

Exploiter les capacités de GPT : Combinez la pertinence de recherche d'Elasticsearch avec les capacités de réponse aux questions de GPT d'OpenAI, en utilisant l'API Chat Completion pour renvoyer à l'utilisateur des réponses générées par le modèle en considérant les k documents les plus importants comme contexte.

2

Intégrer l'analyse des sentiments : Incorporer un modèle d'analyse des sentiments pour connaître les commentaires et les réactions des utilisateurs au fur et à mesure que le dialogue se déroule.

3

Observabilité : En plus des journaux qui enregistrent les interactions avec le chatbot, il est important de suivre le temps de réponse, la latence et d'autres paramètres pertinents du chatbot. Ce faisant, vous pouvez identifier des modèles, des tendances et même détecter des anomalies.

Pour aller plus loin

Prêt à créer des expériences de recherche d'exception ?

Une recherche suffisamment avancée ne se fait pas avec les efforts d'une seule personne. Elasticsearch est alimenté par des data scientists, des ML ops, des ingénieurs et bien d'autres qui sont tout aussi passionnés par la recherche que vous. Mettons-nous en relation et travaillons ensemble pour construire l'expérience de recherche magique qui vous permettra d'obtenir les résultats que vous souhaitez.

Jugez-en par vous-même