Comment déployer le traitement du langage naturel : plongements textuels et recherche vectorielle

illustration-industries-retail.png

Dans le cadre de notre série d'articles sur le traitement du langage naturel (TNL), nous allons étudier comment utiliser un modèle de plongement textuel à travers des exemples, afin de générer des représentations vectorielles de contenus textuels et d'appliquer la recherche de similarité vectorielle sur les vecteurs générés. Nous déploierons un modèle disponible au grand public sur Elasticsearch, puis nous l'utiliserons dans un pipeline d'ingestion pour générer des plongements à partir de documents textuels. Nous verrons ensuite comment utiliser ces plongements dans la recherche de similarité vectorielle pour trouver des documents similaires d'un point de vue sémantique pour une requête donnée.

La recherche de similarité vectorielle, plus communément appelée recherche sémantique, va plus loin qu'une recherche traditionnelle basée sur des mots clés. Elle permet aux utilisateurs d'identifier des documents similaires d'un point de vue sémantique qui n'ont peut-être pas les mêmes mots clés, ce qui leur offre un plus vaste éventail de résultats. La recherche de similarité vectorielle s'applique à des vecteurs denses et emploie la recherche des k-plus proches voisins pour déterminer des vecteurs similaires. Pour cela, les contenus textuels doivent être tout d'abord convertis sous forme de représentations vectorielles numériques à l'aide d'un modèle de plongement textuel.

Pour notre démonstration, nous utiliserons un ensemble de données public venant de la tâche de classement de passages MS MARCO. Cet ensemble est composé de questions réelles du moteur de recherche Microsoft Bing et de réponses générées par l'homme. C'est une ressource idéale pour tester la recherche de similarité vectorielle, d'une part, parce que les questions-réponses constituent l'un des cas d'utilisation les plus courants pour la recherche vectorielle, et d'autre part, parce que les premiers documents du classement MS MARCO utilisent une certaine forme de recherche vectorielle.

Dans notre exemple, nous allons travailler avec un échantillon de cet ensemble de données, utiliser un modèle pour produire des plongements textuels, puis y appliquer la recherche vectorielle. Nous procéderons également à une vérification rapide de la qualité des résultats produits à partir de la recherche vectorielle.

1. Déploiement d'un modèle de plongement textuel

La première étape consiste à installer un modèle de plongement textuel. Dans notre exemple, nous utiliserons le modèle msmarco-MiniLM-L-12-v3 de Hugging Face. Il s'agit d'un modèle de transformation de phrases, qui prend une phrase ou un paragraphe et le mappe à un vecteur dense à 384 dimensions. Ce modèle est optimisé pour la recherche sémantique et a été spécialement entraîné sur l'ensemble de données de passages MS MARCO, ce qui en fait un modèle de choix pour notre tâche. Ceci étant dit, Elasticsearch prend également en charge un certain nombre d'autres modèles pour le plongement textuel. Vous trouverez une liste complète de ces modèles ici.

Nous installons le modèle avec l'agent Docker Eland, que nous avons créé dans l'exemple de reconnaissance d'entités nommées (NER). L'exécution du script ci-dessous permet d'importer notre modèle dans notre cluster local et de le déployer :

eland_import_hub_model \
  --url https://<user>:<password>@localhost:9200/ \
  --hub-model-id sentence-transformers/msmarco-MiniLM-L-12-v3 \
  --task-type text_embedding \
  --start

Cette fois-ci, --task-type est défini sur text_embedding et l'option --start est transférée au script Eland, pour que le modèle soit déployé automatiquement sans avoir à être démarré dans l'interface utilisateur Model Management. Pour accélérer les inférences, vous pouvez augmenter le nombre de fils d'inférence avec le paramètre inference_threads.

Nous pouvons vérifier que le déploiement du modèle est réussi en utilisant cet exemple dans la console Kibana :

POST /_ml/trained_models/sentence-transformers__msmarco-minilm-l-12-v3/deployment/_infer
{
  "docs": {
    "text_field": "how is the weather in jamaica"
  }
}

Nous devrions alors voir le vecteur dense prédit comme résultat :

{
  "predicted_value" : [
    0.3345310091972351,
    -0.305600643157959,
    0.2592800557613373,
    …
  ]
}

2. Chargement des données initiales

Comme indiqué dans l'introduction, nous utilisons l'ensemble de données de classement de passages MS MARCO. L'ensemble de données est plutôt volumineux, avec plus de 8 millions de passages. Dans notre exemple, nous n'en utilisons qu'un sous-ensemble, qui avait servi au moment de la phase de test du projet 2019 TREC Deep Learning Track. L'ensemble de données msmarco-passagetest2019-top1000.tsv ayant servi à la tâche de reclassement contient 200 requêtes, chacune accompagnée de passages de texte pertinents extraits par un système de recherche d'information (RI) simple. À partir de cet ensemble de données, nous avons extrait tous les passages uniques avec leurs identifiants, que nous avons ensuite placés dans un fichier tsv distinct, recensant 182 469 passages. C'est ce fichier qui constitue notre ensemble de données.

Nous nous servons ensuite de la fonctionnalité de chargement de fichiers de Kibana pour charger cet ensemble de données. Cette fonctionnalité a l'avantage de nous permettre d'attribuer des noms personnalisés aux champs. Appelons-les id avec le type long pour les identifiants de passages, et text avec le type text pour le contenu des passages. Le nom de l'index est collection. Une fois le chargement effectué, nous pouvons voir un index appelé collection contenant 182 469 documents.

Capture

3. Création d'un pipeline

Nous voulons traiter les données initiales avec un processeur d'inférence qui ajoutera un plongement pour chaque passage. Dans ce but, nous créons un pipeline d'ingestion de plongements textuels, puis nous réindexons nos données initiales avec ce pipeline.

Dans la console Kibana, nous créons un pipeline d'ingestion (comme nous l'avons fait dans cet article), cette fois pour les plongements textuels, et nous l'appelons text-embeddings. Les passages se trouvent dans un champ appelé text. Comme nous l'avons fait auparavant, nous définissons field_map pour mapper le texte au champ text_field que le modèle attend. De la même manière, le gestionnaire on_failure est défini pour indexer les échecs sur un index différent :

PUT _ingest/pipeline/text-embeddings
{
  "description": "Text embedding pipeline",
  "processors": [
    {
      "inference": {
        "model_id": "sentence-transformers__msmarco-minilm-l-12-v3",
        "target_field": "text_embedding",
        "field_map": {
          "text": "text_field"
        }
      }
    }
  ],
  "on_failure": [
    {
      "set": {
        "description": "Index document to 'failed-<index>'",
        "field": "_index",
        "value": "failed-{{{_index}}}"
      }
    },
    {
      "set": {
        "description": "Set error message",
        "field": "ingest.failure",
        "value": "{{_ingest.on_failure_message}}"
      }
    }
  ]
}

4. Réindexation des données

Nous voulons réindexer les documents de l'index collection dans le nouvel index collection-with-embeddings en faisant passer les documents dans le pipeline text-embeddings, de sorte que les documents de l'index collection-with-embeddings disposent d'un champ supplémentaire pour les plongements des passages. Mais avant cela, nous devons créer et définir un mapping pour notre index de destination, en particulier pour le champ text_embedding.predicted_value, où le processeur d'ingestion stockera les plongements. Si nous ne réalisons pas cette étape, alors les plongements seront indexés dans des champs float normaux et seront inexploitables pour la recherche de similarité vectorielle. Le modèle que nous utilisons génère des plongements sous forme de vecteurs à 384 dimensions. C'est pourquoi nous utilisons le type de champ dense_vector indexé avec 384 dimensions, comme suit :

PUT collection-with-embeddings
{
  "mappings": {
    "properties": {
      "text_embedding.predicted_value": {
        "type": "dense_vector",
        "dims": 384,
        "index": true,
        "similarity": "cosine"
      },
      "text": {
        "type": "text"
      }
    }
  }
}

Ça y est, nous sommes prêts à réindexer. Étant donné que cette opération prendra un peu de temps pour traiter tous les documents et en faire ressortir des inférences, nous procéderons à la réindexation en arrière-plan en appelant l'API portant l'indicateur wait_for_completion=false.

POST _reindex?wait_for_completion=false
{
  "source": {
    "index": "collection"
  },
  "dest": {
    "index": "collection-with-embeddings",
    "pipeline": "text-embeddings"
  }
}

Cette procédure renvoie un identifiant de tâche. Nous pouvons monitorer l'avancement de la tâche avec :

GET _tasks/<task_id>

Nous pouvons aussi vérifier la progression en consultant l'augmentation dans Inference count (Décompte d'inférences) dans l'API Model Stats ou l'interface utilisateur Model Stats.

Les documents réindexés contiennent désormais les résultats des inférences : les plongements vectoriels. Voici un exemple de ce à quoi ressemble l'un des documents :

{
    "id": "G7PPtn8BjSkJO8zzChzT",
    "text": "This is the definition of RNA along with examples of types of RNA molecules. This is the definition of RNA along with examples of types of RNA molecules. RNA Definition",
    "text_embedding":
    {
     "predicted_value":
        [
            0.057356324046850204,
            0.1602816879749298,
            -0.18122544884681702,
            0.022277727723121643,
            ....
        ],
        "model_id": "sentence-transformers__msmarco-minilm-l-12-v3"
    }
}

5. Recherche de similarité vectorielle

Actuellement, nous ne prenons pas en charge la génération implicite de plongements à partir des termes d'une requête de recherche. Aussi, notre recherche sémantique se divise en deux parties, comme suit :

  1. Obtention d'un plongement textuel à partir d'une requête textuelle. Pour cela, nous utilisons l'API _infer de notre modèle.
  2. Utilisation de la recherche vectorielle pour trouver des documents similaires d'un point de vue sémantique au texte de la requête. Dans Elasticsearch v8.0, nous avons introduit un nouveau point de terminaison _knn_search qui permet de rechercher de manière efficace les voisins approximatifs les plus proches dans les champs dense_vector indexés. Nous utilisons l'API _knn_search pour trouver les documents les plus proches.

Par exemple, dans le cas de la requête textuelle "how is the weather in jamaica", nous exécutons tout d'abord l'API run _infer pour obtenir son plongement sous forme de vecteur dense :

POST /_ml/trained_models/sentence-transformers__msmarco-minilm-l-12-v3/deployment/_infer
{
  "docs": {
    "text_field": "how is the weather in jamaica"
  }
}

Ensuite, nous intégrons le vecteur dense généré dans _knn_search comme suit :

GET collection-with-embeddings/_knn_search
{
  "knn": {
    "field": "text_embedding.predicted_value",
    "query_vector": [
     0.3345310091972351,
    -0.305600643157959,
    0.2592800557613373,
       …
    ],
    "k": 10,
    "num_candidates": 100
  },
  "_source": [
    "id",
    "text"
  ]
}

Au final, nous obtenons les 10 premiers documents les plus proches de la requête, triés en fonction de leur degré de proximité avec la requête :

"hits" : [
      {
        "_index" : "collection-with-embeddings",
        "_id" : "47TPtn8BjSkJO8zzKq_o",
        "_score" : 0.94591534,
        "_source" : {
          "id" : 434125,
          "text" : "The climate in Jamaica is tropical and humid with warm to hot temperatures all year round. The average temperature in Jamaica is between 80 and 90 degrees Fahrenheit. Jamaican nights are considerably cooler than the days, and the mountain areas are cooler than the lower land throughout the year. Continue Reading."
        }
      },
      {
        "_index" : "collection-with-embeddings",
        "_id" : "3LTPtn8BjSkJO8zzKJO1",
        "_score" : 0.94536424,
        "_source" : {
          "id" : 4498474,
          "text" : "The climate in Jamaica is tropical and humid with warm to hot temperatures all year round. The average temperature in Jamaica is between 80 and 90 degrees Fahrenheit. Jamaican nights are considerably cooler than the days, and the mountain areas are cooler than the lower land throughout the year"
        }
      },
      {
        "_index" : "collection-with-embeddings",
        "_id" : "KrXPtn8BjSkJO8zzPbDW",
        "_score" :  0.9432083,
        "_source" : {
          "id" : 190804,
          "text" : "Quick Answer. The climate in Jamaica is tropical and humid with warm to hot temperatures all year round. The average temperature in Jamaica is between 80 and 90 degrees Fahrenheit. Jamaican nights are considerably cooler than the days, and the mountain areas are cooler than the lower land throughout the year. Continue Reading"
        }
      },
...

6. Vérification rapide

Étant donné que nous utilisons uniquement un sous-ensemble de l'ensemble de données MS MARCO, nous ne pouvons pas procéder à une évaluation complète. Ce que nous pouvons faire, en revanche, c'est effectuer une simple vérification sur quelques requêtes, juste pour déterminer si les résultats obtenus sont pertinents, et non pas aléatoires. À partir des jugements du projet TREC 2019 Deep Learning Track pour la tâche de classement des passages, nous prenons les trois dernières requêtes, nous y appliquons la recherche de similarité vectorielle, nous obtenons les 10 premiers résultats et nous consultons les jugements TREC pour déterminer la pertinence des résultats que nous avons reçus. Pour la tâche de classement des passages, les passages sont jugés selon une échelle en quatre points : Non pertinent (0), En lien (le passage est en lien avec le sujet, mais ne répond pas à la question) (1), Très pertinent (2) et Parfaitement pertinent (3).

Veuillez noter que notre vérification n'est pas une évaluation rigoureuse. Elle sert uniquement aux fins de démonstration. Étant donné que nous avons indexé uniquement les passages connus pour être en lien avec les requêtes, il s'agit d'une tâche bien plus simple que la tâche de récupération des passages d'origine. À l'avenir, nous avons l'intention de procéder à une évaluation rigoureuse de l'ensemble de données MS MARCO.

La requête n° 1124210 "tracheids are part of _____" renvoie les résultats suivants lorsque nous y appliquons notre recherche vectorielle :

ID du passage

Score de pertinence

Passage

2258591

2 – Très pertinent

Tracheid of oak shows pits along the walls. It is longer than a vessel element and has no perforation plates. Tracheids are elongated cells in the xylem of vascular plants that serve in the transport of water and mineral salts.Tracheids are one of two types of tracheary elements, vessel elements being the other. Tracheids, unlike vessel elements, do not have perforation plates.racheids provide most of the structural support in softwoods, where they are the major cell type. Because tracheids have a much higher surface to volume ratio compared to vessel elements, they serve to hold water against gravity (by adhesion) when transpiration is not occurring.

2258592

3 – Parfaitement pertinent

Tracheid. a dead lignified plant cell that functions in water conduction. Tracheids are found in the xylem of all higher plants except certain angiosperms, such as cereals and sedges, in which the water-conducting function is performed by vessels, or tracheae.Tracheids are usually polygonal in cross section; their walls have annular, spiral, or scalene thickenings or rimmed pores.racheids are found in the xylem of all higher plants except certain angiosperms, such as cereals and sedges, in which the water-conducting function is performed by vessels, or tracheae. Tracheids are usually polygonal in cross section; their walls have annular, spiral, or scalene thickenings or rimmed pores.

2258596

2 – Très pertinent

Woody angiosperms have also vessels. The mature tracheids form a column of superposed, cylindrical dead cells whose end walls have been perforated, resulting in a continuous tube called vessel (trachea). Tracheids are found in all vascular plants and are the only conducting elements in gymnosperms and ferns. Tracheids have Pits on their end walls. Pits are not nearly as efficient for water translocation as Perforation Plates found in vessel elements. Woody angiosperms have also vessels. The mature tracheids form a column of superposed, cylindrical dead cells whose end walls have been perforated, resulting in a continuous tube called vessel (trachea). Tracheids are found in all vascular plants and are the only conducting elements in gymnosperms and ferns

2258595

2 – Très pertinent

Résumé : Vessels have perforations at the end plates while tracheids do not have end plates. Tracheids are derived from single individual cells while vessels are derived from a pile of cells. Tracheids are present in all vascular plants whereas vessels are confined to angiosperms. Tracheids are thin whereas vessel elements are wide. Tracheids have a much higher surface-to-volume ratio as compared to vessel elements. Vessels are broader than tracheids with which they are associated. Morphology of the perforation plate is different from that in tracheids. Tracheids are thin whereas vessel elements are wide. Tracheids have a much higher surface-to-volume ratio as compared to vessel elements. Vessels are broader than tracheids with which they are associated. Morphology of the perforation plate is different from that in tracheids.

131190

3 – Parfaitement pertinent

Xylem tracheids are pointed, elongated xylem cells, the simplest of which have continuous primary cell walls and lignified secondary wall thickenings in the form of rings, hoops, or reticulate networks.

7443586

2 – Très pertinent

1 The xylem tracheary elements consist of cells known as tracheids and vessel members, both of which are typically narrow, hollow, and elongated. Tracheids are less specialized than the vessel members and are the only type of water-conducting cells in most gymnosperms and seedless vascular plants.

181177

2 – Très pertinent

In most plants, pitted tracheids function as the primary transport cells. The other type of tracheary element, besides the tracheid, is the vessel element. Vessel elements are joined by perforations into vessels. In vessels, water travels by bulk flow, as in a pipe, rather than by diffusion through cell membranes.

2947055

0 – Non pertinent

Cholesterol belongs to the groups of lipids called _______.holesterol belongs to the groups of lipids called _______.

6541866

2 – Très pertinent

In most plants, pitted tracheids function as the primary transport cells. The other type of tracheary element, besides the tracheid, is the vessel element. Vessel elements are joined by perforations into vessels. In vessels, water travels by bulk flow, as in a pipe, rather than by diffusion through cell membranes. In most plants, pitted tracheids function as the primary transport cells. The other type of tracheary element, besides the tracheid, is the vessel element. Vessel elements are joined by perforations into vessels. In vessels, water travels by bulk flow, as in a pipe, rather than by diffusion through cell membranes.


La requête n° 1129237 "hydrogen is a liquid below what temperature" renvoie les résultats suivants :

ID du passage

Score de pertinence

Passage

8588222

0 – Non pertinent

Answer to: Hydrogen is a liquid below what temperature? By signing up, you'll get thousands of step-by-step solutions to your homework questions.... for Teachers for Schools for Companies

128984

3 – Parfaitement pertinent

Hydrogen gas has the molecular formula H 2. At room temperature and under standard pressure conditions, hydrogen is a gas that is tasteless, odorless and colorless. Hydrogen can exist as a liquid under high pressure and an extremely low temperature of 20.28 kelvin (−252.87°C, −423.17 °F). Hydrogen is often stored in this way as liquid hydrogen takes up less space than hydrogen in its normal gas form. Liquid hydrogen is also used as a rocket fuel.

8588219

3 – Parfaitement pertinent

User: Hydrogen is a liquid below what temperature? a. 100 degrees C c. -183 degrees C b. -253 degrees C d. 0 degrees C Weegy: Hydrogen is a liquid below 253 degrees C. User: What is the boiling point of oxygen? a. 100 degrees C c. -57 degrees C b. 8 degrees C d. -183 degrees C Weegy: The boiling point of oxygen is -183 degrees C.

3905057

3 – Parfaitement pertinent

Hydrogen is a colorless, odorless, tasteless gas. Its density is the lowest of any chemical element, 0.08999 grams per liter. By comparison, a liter of air weighs 1.29 grams, 14 times as much as a liter of hydrogen. Hydrogen changes from a gas to a liquid at a temperature of -252.77°C (-422.99°F) and from a liquid to a solid at a temperature of -259.2°C (-434.6°F). It is slightly soluble in water, alcohol, and a few other common liquids.

4254811

3 – Parfaitement pertinent

At STP (standard temperature and pressure) hydrogen is a gas. It cools to a liquid at -423 °F, which is only about 37 degrees above absolute zero. Eleven degrees cooler, at … -434 °F, it starts to solidify.

2697752

2 – Très pertinent

Hydrogen's state of matter is gas at standard conditions of temperature and pressure. Hydrogen condenses into a liquid or freezes solid at extremely cold... Hydrogen's state of matter is gas at standard conditions of temperature and pressure. Hydrogen condenses into a liquid or freezes solid at extremely cold temperatures. Hydrogen's state of matter can change when the temperature changes, becoming a liquid at temperatures between minus 423.18 and minus 434.49 degrees Fahrenheit. It becomes a solid at temperatures below minus 434.49 F.Due to its high flammability, hydrogen gas is commonly used in combustion reactions, such as in rocket and automobile fuels.

6080460

3 – Parfaitement pertinent

Hydrogen can exist as a liquid under high pressure and an extremely low temperature of 20.28 kelvin (−252.87°C, −423.17 °F). Hydrogen is often stored in this way as liquid hydrogen takes up less space than hydrogen in its normal gas form. Liquid hydrogen is also used as a rocket fuel. Hydrogen is found in large amounts in giant gas planets and stars, it plays a key role in powering stars through fusion reactions. Hydrogen is one of two important elements found in water (H 2 O). Each molecule of water is made up of two hydrogen atoms bonded to one oxygen atom.

128989

3 – Parfaitement pertinent

Confidence votes 11.4K. At STP (standard temperature and pressure) hydrogen is a gas. It cools to a liquid at -423 °F, which is only about 37 degrees above absolute zero. Eleven degrees cooler, at -434 °F, it starts to solidify.

1959030

0 – Non pertinent

While below 4 °C the breakage of hydrogen bonds due to heating allows water molecules to pack closer despite the increase in the thermal motion (which tends to expand a liquid), above 4 °C water expands as the temperature increases. Water near the boiling point is about 4% less dense than water at 4 °C (39 °F)

3905800

0 – Non pertinent

Hydrogen is the lightest of the elements with an atomic weight of 1.0. Liquid hydrogen has a density of 0.07 grams per cubic centimeter, whereas water has a density of 1.0 g/cc and gasoline about 0.75 g/cc. These facts give hydrogen both advantages and disadvantages.


La requête n° 1133167 "how is the weather in jamaica" renvoie les résultats suivants :

ID du passage

Score de pertinence

Passage

434125

3 – Parfaitement pertinent

The climate in Jamaica is tropical and humid with warm to hot temperatures all year round. The average temperature in Jamaica is between 80 and 90 degrees Fahrenheit. Jamaican nights are considerably cooler than the days, and the mountain areas are cooler than the lower land throughout the year.

4498474

3 – Parfaitement pertinent

The climate in Jamaica is tropical and humid with warm to hot temperatures all year round. The average temperature in Jamaica is between 80 and 90 degrees Fahrenheit. Jamaican nights are considerably cooler than the days, and the mountain areas are cooler than the lower land throughout the year.

190804

3 – Parfaitement pertinent

Quick Answer. The climate in Jamaica is tropical and humid with warm to hot temperatures all year round. The average temperature in Jamaica is between 80 and 90 degrees Fahrenheit. Jamaican nights are considerably cooler than the days, and the mountain areas are cooler than the lower land throughout the year. Continue Reading.

1824479

3 – Parfaitement pertinent

A : The climate in Jamaica is tropical and humid with warm to hot temperatures all year round. The average temperature in Jamaica is between 80 and 90 degrees Fahrenheit. Jamaican nights are considerably cooler than the days, and the mountain areas are cooler than the lower land throughout the year.

1824480

3 – Parfaitement pertinent

Quick Answer. The climate in Jamaica is tropical and humid with warm to hot temperatures all year round. The average temperature in Jamaica is between 80 and 90 degrees Fahrenheit. Jamaican nights are considerably cooler than the days, and the mountain areas are cooler than the lower land throughout the year.

1824488

2 – Très pertinent

Learn About the Weather of Jamaica The weather patterns you'll encounter in Jamaica can vary dramatically around the island Regardless of when you visit, the tropical climate and warm temperatures of Jamaica essentially guarantee beautiful weather during your vacation. Average temperatures in Jamaica range between 80 degrees Fahrenheit and 90 degrees Fahrenheit, with July and August being the hottest months and February the coolest.

4922619

2 – Très pertinent

Weather. Jamaica averages about 80 degrees year-round, so climate is less a factor in booking travel than other destinations. The days are warm and the nights are cool. Rain usually falls for short periods in the late afternoon, with sunshine the rest of the day.

190806

2 – Très pertinent

It is always important to know what the weather in Jamaica will be like before you plan and take your vacation. For the most part, the average temperature in Jamaica is between 80 °F and 90 °F (27 °FCelsius-29 °Celsius). Luckily, the weather in Jamaica is always vacation friendly. You will hardly experience long periods of rain fall, and you will become accustomed to weeks upon weeks of sunny weather.

2613296

2 – Très pertinent

Average temperatures in Jamaica range between 80 degrees Fahrenheit and 90 degrees Fahrenheit, with July and August being the hottest months and February the coolest. Temperatures in Jamaica generally vary approximately 10 degrees from summer to winter

1824486

2 – Très pertinent

The climate in Jamaica is tropical and humid with warm to hot temperatures all year round. The average temperature in Jamaica is between 80 and 90 degrees Fahrenheit. Jamaican nights are considerably...


Comme nous venons de le voir pour ces trois requêtes, Elasticsearch a majoritairement renvoyé des résultats pertinents. Les premiers résultats pour l'ensemble des requêtes étaient en général soit très pertinents, soit parfaitement pertinents.

À vous de jouer

Le traitement du langage naturel est une fonctionnalité puissante de la Suite Elastic avec une roadmap particulièrement intéressante. Découvrez de nouvelles fonctionnalités et tenez-vous au courant des derniers développements en déployant votre cluster dans Elastic Cloud. Inscrivez-vous pour un essai gratuit de 14 jours dès aujourd'hui et testez les exemples indiqués dans cet article.

Envie d'en savoir plus sur le traitement du langage naturel ? Ces ressources peuvent vous intéresser :