Enrichissement sémantique automatique pour Amazon Service OpenSearch - Amazon OpenSearch Service

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Enrichissement sémantique automatique pour Amazon Service OpenSearch

Introduction

Amazon OpenSearch Service utilise le word-to-word matching (recherche lexicale) pour trouver des résultats, comme les autres moteurs de recherche traditionnels. Cette approche fonctionne bien pour des requêtes spécifiques telles que les codes de produits ou les numéros de modèle, mais elle est difficile pour les recherches abstraites où la compréhension de l'intention de l'utilisateur devient cruciale. Par exemple, lorsque vous recherchez « chaussures pour la plage », la recherche lexicale fait correspondre les mots « chaussures », « plage », « pour » et « le » dans les articles du catalogue, ce qui peut faire disparaître des produits pertinents tels que « sandales imperméables » ou « chaussures de surf » qui ne contiennent pas les termes de recherche exacts.

L'enrichissement sémantique automatique résout cette limite en tenant compte à la fois des correspondances de mots clés et de la signification contextuelle des recherches. Cette fonctionnalité comprend l'intention de recherche et améliore la pertinence de la recherche jusqu'à 20 %. Activez cette fonctionnalité pour les champs de texte de votre index afin d'améliorer les résultats de recherche.

Note

L'enrichissement sémantique automatique est disponible pour les domaines OpenSearch de service exécutant la version 2.19 ou ultérieure. En outre, les domaines dotés de OpenSearch la version 2.19 doivent également disposer de la dernière mise à jour de la version du logiciel de service. Actuellement, cette fonctionnalité est disponible pour les domaines publics et les domaines VPC ne sont pas pris en charge.

Détails du modèle et indice de performance

Bien que cette fonctionnalité gère les complexités techniques en arrière-plan sans révéler le modèle sous-jacent, nous assurons la transparence grâce à une brève description du modèle et à des résultats de référence pour vous aider à prendre des décisions éclairées concernant l'adoption des fonctionnalités dans le cadre de vos charges de travail critiques.

L'enrichissement sémantique automatique utilise un modèle clairsemé pré-entraîné et géré par les services qui fonctionne efficacement sans nécessiter de réglage personnalisé. Le modèle analyse les champs que vous spécifiez et les développe en vecteurs épars basés sur des associations apprises à partir de diverses données d'entraînement. Les termes développés et leurs poids de signification sont stockés dans le format d'index Lucene natif pour une extraction efficace. Nous avons optimisé ce processus en utilisant le mode document uniquement, dans lequel l'encodage s'effectue uniquement lors de l'ingestion des données. Les requêtes de recherche sont simplement tokenisées plutôt que traitées par le biais du modèle fragmenté, ce qui rend la solution à la fois rentable et performante.

Notre validation des performances lors du développement des fonctionnalités a utilisé le jeu de données de récupération de passages MS MARCO, contenant des passages d'une moyenne de 334 caractères. Pour le score de pertinence, nous avons mesuré le gain cumulé réduit normalisé (NDCG) moyen pour les 10 premiers résultats de recherche (ndcg @10) sur le benchmark BEIR pour le contenu anglais et le ndcg @10 moyen sur MIRACL pour le contenu multilingue. Nous avons évalué la latence grâce à des mesures au 90e percentile (p90) côté client et à des valeurs prises par p90 dans la réponse à la recherche. Ces points de référence fournissent des indicateurs de performance de base pour la pertinence des recherches et les temps de réponse. Voici les principaux chiffres de référence :

  • Langue anglaise - Amélioration de la pertinence de 20 % par rapport à la recherche lexicale. Il a également réduit la latence de recherche P90 de 7,7 % par rapport à la recherche lexicale (BM25 26 ms et enrichissement sémantique automatique de 24 ms).

  • Multilingue : amélioration de la pertinence de 105 % par rapport à la recherche lexicale, tandis que la latence de recherche P90 a augmenté de 38,4 % par rapport à la recherche lexicale (BM25 26 ms et enrichissement sémantique automatique 36 ms).

Compte tenu de la nature unique de chaque charge de travail, nous vous encourageons à évaluer cette fonctionnalité dans votre environnement de développement à l'aide de vos propres critères d'analyse comparative avant de prendre des décisions de mise en œuvre.

Langues prises en charge

La fonctionnalité prend en charge l'anglais. En outre, le modèle prend également en charge l'arabe, le bengali, le chinois, le finnois, le français, l'hindi, l'indonésien, le japonais, le coréen, le persan, le russe, l'espagnol, le swahili et le télougou.

Configurer un index d'enrichissement sémantique automatique pour les domaines

La configuration d'un index avec l'enrichissement sémantique automatique activé pour vos champs de texte est simple, et vous pouvez le gérer via la console et les CloudFormation modèles lors de la création d'un nouvel index. APIs Pour l'activer pour un index existant, vous devez recréer l'index en activant l'enrichissement sémantique automatique pour les champs de texte.

Expérience de console - La AWS console vous permet de créer facilement un index avec des champs d'enrichissement sémantique automatiques. Une fois que vous avez sélectionné un domaine, vous trouverez le bouton de création d'index en haut de la console. Une fois que vous avez cliqué sur le bouton de création d'index, vous trouverez des options permettant de définir des champs d'enrichissement sémantique automatique. Dans un index, vous pouvez combiner l'enrichissement sémantique automatique pour l'anglais et le multilingue, ainsi que des champs lexicaux.

Expérience de l'API - Pour créer un index d'enrichissement sémantique automatique à l'aide de l'interface de ligne de AWS commande (AWS CLI), utilisez la commande create-index :

aws opensearch create-index \ --domain-name [domain_name] \ --index-name [index_name] \ --index-schema [index_body] \

Dans l'exemple de schéma d'index suivant, le champ title_semantic a un type de champ défini sur texte et le paramètre semantic_enrichment défini sur status ENABLED. La définition du paramètre semantic_enrichment active l'enrichissement sémantique automatique du champ title_semantic. Vous pouvez utiliser le champ language_options pour spécifier l'anglais ou le multilingue.

aws opensearch create-index \ --id XXXXXXXXX \ --index-name 'product-catalog' \ --index-schema '{ "mappings": { "properties": { "product_id": { "type": "keyword" }, "title_semantic": { "type": "text", "semantic_enrichment": { "status": "ENABLED", "language_options": "english" } }, "title_non_semantic": { "type": "text" } } } }'

Pour décrire l'index créé, utilisez la commande suivante :

aws opensearch get-index \ --domain-name [domain_name] \ --index-name [index_name] \

Ingestion et recherche de données

Une fois que vous avez créé un index avec l'enrichissement sémantique automatique activé, la fonctionnalité fonctionne automatiquement pendant le processus d'ingestion des données, aucune configuration supplémentaire n'est requise.

Ingestion des données : lorsque vous ajoutez des documents à votre index, le système :

  • Analyse les champs de texte que vous avez désignés pour l'enrichissement sémantique

  • Génère des codages sémantiques à l'aide du modèle clairsemé géré par le OpenSearch service

  • Stocke ces représentations enrichies aux côtés de vos données d'origine

Ce processus utilise OpenSearch les connecteurs ML et les pipelines d'ingestion intégrés, qui sont créés et gérés automatiquement en arrière-plan.

Recherche : les données d'enrichissement sémantique sont déjà indexées, de sorte que les requêtes s'exécutent efficacement sans invoquer à nouveau le modèle ML. Cela signifie que vous bénéficiez d'une pertinence de recherche améliorée sans surcoût de latence de recherche supplémentaire.

Configuration des autorisations pour l'enrichissement sémantique automatique

Avant de créer un index avec enrichissement sémantique automatique, vous devez configurer les autorisations requises. Cette section explique les autorisations nécessaires pour les différentes opérations d'indexation et explique comment les configurer pour les scénarios de contrôle d'accès Gestion des identités et des accès AWS (IAM) et les scénarios de contrôle d'accès détaillés.

Autorisations IAM

Les autorisations IAM suivantes sont requises pour les opérations d'enrichissement sémantique automatique. Ces autorisations varient en fonction de l'opération d'indexation spécifique que vous souhaitez effectuer.

CreateIndex Autorisations d'API

Pour créer un index avec enrichissement sémantique automatique, vous devez disposer des autorisations IAM suivantes :

  • es:CreateIndex— Créez un index doté de fonctionnalités d'enrichissement sémantique.

  • es:ESHttpHead— Exécute des requêtes HEAD pour vérifier l'existence de l'index.

  • es:ESHttpPut— Exécute des requêtes PUT pour la création d'index.

  • es:ESHttpPost— Exécute des requêtes POST pour les opérations d'indexation.

UpdateIndex Autorisations d'API

Pour mettre à jour un index existant avec un enrichissement sémantique automatique, vous devez disposer des autorisations IAM suivantes :

  • es:UpdateIndex— Mettez à jour les paramètres d'index et les mappages.

  • es:ESHttpPut— Exécute des requêtes PUT pour les mises à jour de l'index.

  • es:ESHttpGet— Exécute des requêtes GET pour récupérer les informations d'index.

  • es:ESHttpPost— Exécute des requêtes POST pour les opérations d'indexation.

GetIndex Autorisations d'API

Pour récupérer des informations sur un index avec enrichissement sémantique automatique, vous devez disposer des autorisations IAM suivantes :

  • es:GetIndex— Récupérez les informations et les paramètres de l'index.

  • es:ESHttpGet— Exécute des requêtes GET pour récupérer les données d'index.

DeleteIndex Autorisations d'API

Pour supprimer un index avec enrichissement sémantique automatique, vous devez disposer des autorisations IAM suivantes :

  • es:DeleteIndex— Supprime un index et ses composants d'enrichissement sémantique.

  • es:ESHttpDelete— Exécute des requêtes DELETE pour supprimer l'index.

Exemple de politique IAM

L'exemple de politique d'accès basée sur l'identité suivant fournit les autorisations nécessaires à un utilisateur pour gérer des index avec enrichissement sémantique automatique :

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowSemanticEnrichmentIndexOperations", "Effect": "Allow", "Action": [ "es:CreateIndex", "es:UpdateIndex", "es:GetIndex", "es:DeleteIndex", "es:ESHttpHead", "es:ESHttpGet", "es:ESHttpPut", "es:ESHttpPost", "es:ESHttpDelete" ], "Resource": "arn:aws:es:aws-region:111122223333:domain/domain-name/*" } ] }

Remplacez aws-region111122223333, et domain-name par vos valeurs spécifiques. Vous pouvez restreindre davantage l'accès en spécifiant des modèles d'index particuliers dans l'ARN de la ressource.

Autorisations de contrôle d'accès détaillées

Si le contrôle d'accès détaillé de votre domaine Amazon OpenSearch Service est activé, vous avez besoin d'autorisations supplémentaires en plus des autorisations IAM. Les autorisations suivantes sont requises pour chaque opération d'indexation.

CreateIndex Autorisations d'API

Lorsque le contrôle d'accès détaillé est activé, les autorisations supplémentaires suivantes sont requises pour créer un index avec enrichissement sémantique automatique :

  • indices:admin/create— Crée des opérations d'indexation.

  • indices:admin/mapping/put— Créez et mettez à jour des mappages d'index.

  • cluster:admin/opensearch/ml/create_connector— Créez des connecteurs d'apprentissage automatique pour le traitement sémantique.

  • cluster:admin/opensearch/ml/register_model— Enregistrez des modèles d'apprentissage automatique pour un enrichissement sémantique.

  • cluster:admin/ingest/pipeline/put— Créez des pipelines d'ingestion pour le traitement des données.

  • cluster:admin/search/pipeline/put— Créez des pipelines de recherche pour le traitement des requêtes.

UpdateIndex Autorisations d'API

Lorsque le contrôle d'accès détaillé est activé, les autorisations supplémentaires suivantes sont requises pour mettre à jour un index avec enrichissement sémantique automatique :

  • indices:admin/get— Récupère les informations d'index.

  • indices:admin/settings/update— Mettez à jour les paramètres de l'index.

  • indices:admin/mapping/put— Met à jour les mappages d'index.

  • cluster:admin/opensearch/ml/create_connector— Créez des connecteurs d'apprentissage automatique.

  • cluster:admin/opensearch/ml/register_model— Enregistrez des modèles d'apprentissage automatique.

  • cluster:admin/ingest/pipeline/put— Créez des pipelines d'ingestion.

  • cluster:admin/search/pipeline/put— Créez des pipelines de recherche.

  • cluster:admin/ingest/pipeline/get— Récupère les informations du pipeline d'ingestion.

  • cluster:admin/search/pipeline/get— Récupère les informations du pipeline de recherche.

GetIndex Autorisations d'API

Lorsque le contrôle d'accès détaillé est activé, les autorisations supplémentaires suivantes sont requises pour récupérer les informations relatives à un index avec enrichissement sémantique automatique :

  • indices:admin/get— Récupère les informations d'index.

  • cluster:admin/ingest/pipeline/get— Récupère les informations du pipeline d'ingestion.

  • cluster:admin/search/pipeline/get— Récupère les informations du pipeline de recherche.

DeleteIndex Autorisations d'API

Lorsque le contrôle d'accès détaillé est activé, les autorisations supplémentaires suivantes sont requises pour supprimer un index avec enrichissement sémantique automatique :

  • indices:admin/delete— Supprime les opérations d'indexation.

Réécritures de requêtes

L'enrichissement sémantique automatique convertit automatiquement vos requêtes « correspondantes » existantes en requêtes de recherche sémantique sans qu'il soit nécessaire de les modifier. Si une requête correspondante fait partie d'une requête composée, le système parcourt votre structure de requête, trouve les requêtes correspondantes et les remplace par des requêtes neuronales clairsemées. Actuellement, la fonctionnalité prend uniquement en charge le remplacement des requêtes « match », qu'il s'agisse d'une requête autonome ou d'une partie d'une requête composée. « multi_match » n'est pas pris en charge. En outre, cette fonctionnalité prend en charge toutes les requêtes composées pour remplacer leurs requêtes de correspondance imbriquées. Les requêtes composées incluent : bool, boosting, constant_score, dis_max, function_score et hybrid.

Limites de l'enrichissement sémantique automatique

La recherche sémantique automatique est particulièrement efficace lorsqu'elle est appliquée à des champs small-to-medium dimensionnés contenant du contenu en langage naturel, tels que des titres de films, des descriptions de produits, des critiques et des résumés. Bien que la recherche sémantique améliore la pertinence dans la plupart des cas d'utilisation, elle peut ne pas être optimale pour certains scénarios. Tenez compte des limites suivantes lorsque vous décidez d'implémenter l'enrichissement sémantique automatique pour votre cas d'utilisation spécifique.

  • Documents très longs — Le modèle clairsemé actuel ne traite que les 8 192 premiers jetons de chaque document en anglais. Pour les documents multilingues, il s'agit de 512 jetons. Pour les articles longs, pensez à implémenter le découpage des documents afin de garantir un traitement complet du contenu.

  • Charges de travail d'analyse des journaux : l'enrichissement sémantique augmente considérablement la taille de l'index, ce qui peut être inutile pour l'analyse des journaux où une correspondance exacte est généralement suffisante. Le contexte sémantique supplémentaire améliore rarement suffisamment l'efficacité de la recherche dans les journaux pour justifier les exigences de stockage accrues.

  • L'enrichissement sémantique automatique n'est pas compatible avec la fonctionnalité Source dérivée.

Tarification

Amazon OpenSearch Service facture l'enrichissement sémantique automatique en fonction des unités de OpenSearch calcul (OCUs) consommées lors de la génération de vecteurs épars au moment de l'indexation. Vous n'êtes facturé que pour l'utilisation réelle lors de l'indexation. Vous pouvez surveiller cette consommation à l'aide de l' SemanticSearchOCU CloudWatch métrique Amazon. Pour obtenir des informations spécifiques sur les limites des jetons du modèle, le débit volumique par OCU et un exemple de calcul d'échantillon, consultez la section Tarification des OpenSearch services.