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
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
-
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