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 la correspondance mot à mot (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 présente des difficultés avec 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 individuels « chaussures », « plage », « pour » et « les » dans les articles du catalogue, ce qui peut entraîner l'absence de 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 limitation 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 du logiciel de service. La fonctionnalité est disponible à la fois pour les domaines d'accès public et les domaines d'accès VPC. Pour les domaines VPC, vous devez autoriser le principal des fonctionnalités du OpenSearch service avant de créer ou de gérer un index d'enrichissement sémantique. Pour de plus amples informations, veuillez consulter Utilisation de l'enrichissement sémantique automatique avec les domaines VPC.
Détails du modèle et référence de performance
Bien que cette fonctionnalité gère les complexités techniques en coulisse sans exposer 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 vos charges de travail critiques.
L'enrichissement sémantique automatique utilise un modèle clairsemé pré-entraîné et géré par des services qui fonctionne efficacement sans nécessiter de réglages personnalisés. Le modèle analyse les champs que vous spécifiez, en les développant en vecteurs épars sur la base d'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 récupération 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é l'ensemble de données de récupération de passages
-
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 est de 26 ms et l'enrichissement sémantique automatique de 24 ms).
-
Multi-lingual - 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 est de 26 ms et l'enrichissement sémantique automatique de 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 en utilisant vos propres critères d'analyse comparative avant de prendre des décisions d'implémentation.
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
Il est facile de configurer un index avec l'enrichissement sémantique automatique activé pour vos champs de texte, et vous pouvez le gérer via la console, les API et les CloudFormation modèles lors de la création d'un nouvel index. 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 automatique. Une fois que vous avez sélectionné un domaine, vous trouverez le bouton Créer un index en haut de la console. Une fois que vous avez cliqué sur le bouton Créer un index, vous trouverez des options permettant de définir des champs d'enrichissement sémantique automatique. Dans un index, vous pouvez avoir des combinaisons d'enrichissement sémantique automatique pour l'anglais et le multilingue, ainsi que des champs lexicaux.
Expérience en matière d'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 type de champ title_semantic est défini sur texte et le paramètre semantic_enrichment est défini sur le statut 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. MULTI-LINGUAL
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] \
Mettre à jour un index existant
Vous pouvez mettre à jour un index existant pour ajouter de nouveaux champs d'enrichissement sémantique, activer ou désactiver l'enrichissement sémantique sur des champs existants ou ajouter des champs de texte non sémantiques. Utilisez la update-index commande et indiquez uniquement les champs que vous souhaitez modifier dans leindex-schema. Les champs non inclus dans la demande restent inchangés.
Note
L'index settings ne peut pas être mis à jour. Si vous incluez un settings bloc dans la demande, l'opération renvoie une erreur de validation. Pour modifier les paramètres de l'index, vous devez le supprimer et le recréer.
Pour mettre à jour un index à l'aide de AWS CLI, utilisez la update-index commande suivante :
aws opensearch update-index \ --domain-name [domain_name] \ --index-name [index_name] \ --index-schema [index_body]
Ajouter un nouveau champ d'enrichissement sémantique
Vous pouvez ajouter un nouveau text champ avec l'enrichissement sémantique activé à un index existant. Le service configure automatiquement le modèle ML, le pipeline d'ingestion et le pipeline de recherche requis. Les nouveaux documents indexés après la mise à jour sont automatiquement enrichis.
Important
Les documents existants ne sont pas remplis. Pour remplir le champ d'enrichissement sémantique sur des documents existants, vous devez les réingérer après la mise à jour. Tant qu'ils ne seront pas réingérés, les documents existants ne bénéficieront pas de la recherche sémantique dans le nouveau champ.
aws opensearch update-index \ --domain-name my-domain \ --index-name product-catalog \ --index-schema '{ "mappings": { "properties": { "description": { "type": "text", "semantic_enrichment": { "status": "ENABLED", "language_options": "english" } } } } }'
Désactiver l'enrichissement sémantique sur un champ
Pour désactiver l'enrichissement sémantique sur un champ pour lequel il est actuellement activé, définissez surstatus. DISABLED Le champ est supprimé des pipelines d'ingestion et de recherche. Le champ de texte sous-jacent et son champ d'intégration restent dans l'index mais ne sont plus enrichis.
aws opensearch update-index \ --domain-name my-domain \ --index-name product-catalog \ --index-schema '{ "mappings": { "properties": { "title_semantic": { "type": "text", "semantic_enrichment": { "status": "DISABLED" } } } } }'
Limites de mise à
Les opérations suivantes ne sont pas prises en charge par l'index update-index et vous obligent à le supprimer et à le recréer :
-
Modifier un champ
language_optionssur lequel l'enrichissement sémantique est actuellement activé. Désactivez d'abord le champ, puis réactivez-le avec la nouvelle option de langue. -
Mise à jour des champs imbriqués. L'enrichissement sémantique n'est pris en charge que sur les champs de niveau supérieur.
text -
Mise à jour de l'index
settings.
Note
Si l'index possède un pipeline d'ingestion ou de recherche personnalisé qui n'a pas été créé par un enrichissement sémantique automatique, l'opération de mise à jour est bloquée. Supprimez le pipeline personnalisé avant d'ajouter des champs d'enrichissement sémantique.
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 de 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 encodages sémantiques à l'aide du modèle fragmenté géré par les OpenSearch services
-
Stocke ces représentations enrichies à côté de vos données d'origine
Ce processus utilise OpenSearch les connecteurs ML intégrés et les pipelines d'ingestion, 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 avoir à invoquer à nouveau le modèle ML. Cela signifie que vous bénéficiez d'une pertinence de recherche améliorée sans frais de latence de recherche supplémentaires.
Utilisation de l'enrichissement sémantique automatique avec les domaines VPC
L'enrichissement sémantique automatique est pris en charge à la fois sur les domaines d'accès public et d'accès VPC exécutant la OpenSearch version 2.19 ou ultérieure avec la dernière mise à jour du logiciel de service.
Pour les domaines d'accès VPC, Amazon OpenSearch Service utilise un service géré pour fournir le modèle ML, le pipeline d'ingestion et le pipeline de recherche qui alimentent l'enrichissement sémantique. Comme un domaine VPC n'est pas accessible au public, vous devez autoriser ce service géré à accéder à votre domaine avant de créer ou de gérer un index d'enrichissement sémantique.
Autoriser le principal des fonctionnalités du OpenSearch service
Accordez l'accès avec l'AuthorizeVpcEndpointAccessAPI, en spécifiant features.opensearchservice.amazonaws.com comme principal de service :
aws opensearch authorize-vpc-endpoint-access \ --domain-namedomain-name\ --service "features.opensearchservice.amazonaws.com" \ --regionregion
Un appel réussi renvoie :
{ "AuthorizedPrincipal": { "PrincipalType": "AWS Service", "Principal": "features.opensearchservice.amazonaws.com" } }
Vous n'avez besoin d'autoriser le principal qu'une seule fois par domaine. Cette étape n'est pas obligatoire pour les domaines d'accès public.
Si vous tentez une opération d'index d'enrichissement sémantique (create-indexupdate-index,get-index, oudelete-index) sur un domaine VPC avant d'autoriser le principal, l'opération échoue avec une erreur similaire à la suivante :
An error occurred (AccessDeniedException) when calling the GetIndex operation: This operation is not authorized for VPC domain. Please authorize 'features.opensearchservice.amazonaws.com' through the AuthorizeVpcEndpointAccess API.
Après avoir autorisé le principal, réessayez l'opération.
Expérience de la console
Vous pouvez terminer l'autorisation et créer un index d'enrichissement sémantique pour un domaine VPC directement depuis la console. Dans la console Amazon OpenSearch Service, sélectionnez votre domaine VPC pour afficher la bannière d'enrichissement sémantique automatique, puis choisissez Accéder aux index pour ouvrir l'onglet Index.
Si le responsable des fonctionnalités du OpenSearch service n'a pas encore été autorisé à accéder au domaine, l'onglet Indexes affiche un message d'accès refusé au lieu du bouton Créer un index. Choisissez Authorize Principal pour ouvrir l'onglet VPC endpoints.
Dans l'onglet Points de terminaison VPC, choisissez Autoriser le principal, sélectionnez Autoriser les principaux d'autres AWS services, puis choisissez OpenSearch Fonctionnalités du service. Cela exécute la même autorisation que l'AuthorizeVpcEndpointAccessAPI décrite dans la section précédente.
Retournez à l'onglet Index. Le bouton Créer un index est désormais disponible. Choisissez Créer un index pour ouvrir la page de création d'index, dans laquelle vous pouvez définir vos champs d'enrichissement sémantique automatique et créer l'index pour votre domaine VPC.
Note
Pour les domaines VPC, la liste d'index ne peut pas être affichée dans la console en raison de restrictions réseau VPC. Pour consulter vos index, utilisez OpenSearch Dashboards directement avec l'URL du tableau de bord. Comme vous ne pouvez pas afficher les index dans la console, vous ne pouvez pas non plus y mettre à jour un index d'enrichissement sémantique existant. Pour mettre à jour un index d'enrichissement sémantique sur un domaine VPC, utilisez l'update-indexAPI. Pour de plus amples informations, veuillez consulter Mettre à jour un index existant.
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 à la fois pour des scénarios de contrôle d'accès Gestion des identités et des accès AWS (IAM) et précis.
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écutez 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— Effectuez des requêtes PUT pour les mises à jour de l'index. -
es:ESHttpGet— Exécutez 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 relatives à un index avec un 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écutez 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— Effectuez des requêtes DELETE pour supprimer l'index.
Exemple de politique IAM
L'exemple de politique d'accès basé sur l'identité suivant fournit les autorisations nécessaires à un utilisateur pour gérer les index avec un 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.
Fine-grained autorisations de contrôle d'accès
Si le contrôle d'accès affiné est activé pour votre domaine Amazon OpenSearch Service, vous avez besoin d'autorisations supplémentaires en plus des autorisations IAM.
Les domaines créés le 12 août 2026 ou après cette date incluent un rôle de contrôle d'accès précis prédéfini qui accorde automatic_semantic_enrichment_full_access les autorisations nécessaires pour gérer les index d'enrichissement sémantique. Si votre domaine utilise un contrôle d'accès précis, associez votre rôle d'utilisateur ou de backend à celui-ci automatic_semantic_enrichment_full_access au lieu d'attribuer manuellement des autorisations de cluster et d'index à chaque cluster.
Si votre domaine a été créé avant cette date, utilisez les autorisations de contrôle d'accès détaillées décrites dans les sections suivantes. Les autorisations suivantes sont requises pour chaque opération d'indexation.
CreateIndex Autorisations d'API
Lorsque le contrôle d'accès précis est activé, les autorisations supplémentaires suivantes sont requises pour créer un index avec enrichissement sémantique automatique :
-
indices:admin/create— Créez 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 précis 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 de l'index. -
indices:admin/settings/update— Mettez à jour les paramètres d'index. -
indices:admin/mapping/put— Mettez à 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érez les informations du pipeline d'ingestion. -
cluster:admin/search/pipeline/get— Récupérez les informations du pipeline de recherche.
GetIndex Autorisations d'API
Lorsque le contrôle d'accès précis 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 de l'index. -
cluster:admin/ingest/pipeline/get— Récupérez les informations du pipeline d'ingestion. -
cluster:admin/search/pipeline/get— Récupérez les informations du pipeline de recherche.
DeleteIndex Autorisations d'API
Lorsque le contrôle d'accès affiné est activé, l'autorisation supplémentaire suivante est requise pour supprimer un index avec enrichissement sémantique automatique :
-
indices:admin/delete— Supprime les opérations d'index.
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 nécessiter de modifications de requête. Si une requête de correspondance fait partie d'une requête composée, le système parcourt la structure de votre requête, trouve les requêtes correspondantes et les remplace par des requêtes neuronales creuses. Actuellement, cette fonctionnalité ne prend en charge que le remplacement des requêtes « correspondantes », 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, la 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 plus efficace lorsqu'elle est appliquée à des champs de petite à moyenne taille 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 dans 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 pour l'anglais. Pour les documents multilingues, c'est 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 liées à l'analyse des journaux : l'enrichissement sémantique augmente de manière significative la taille de l'index, ce qui n'est peut-être pas nécessaire pour l'analyse des journaux où une correspondance exacte suffit généralement. Le contexte sémantique supplémentaire améliore rarement suffisamment l'efficacité de la recherche dans les journaux pour justifier l'augmentation des besoins de stockage.
-
L'enrichissement sémantique automatique n'est pas compatible avec la fonctionnalité Source dérivée.
-
Limitation : les demandes d'inférence d'indexation sont actuellement plafonnées à 200 TPS pour les domaines de service. OpenSearch Il s'agit d'une limite souple ; contactez le AWS support pour obtenir des limites plus élevées.
Tarification
Amazon OpenSearch Service facture un enrichissement sémantique automatique basé sur les unités de OpenSearch calcul (OCU) consommées lors de la génération de vecteurs clairsemés au moment de l'indexation. Vous êtes facturé uniquement pour l'utilisation réelle lors de l'indexation des champs de texte pour lesquels vous avez activé l'enrichissement sémantique automatique. Un OCU de recherche sémantique peut traiter 11,1 millions de jetons pour le contenu en anglais. Pour traiter 2,4 milliards de jetons, vous aurez besoin d'environ 216 recherches sémantiques OCU-hours (2,4 milliards/11,10 millions). Avec un prix de 0,24$ par recherche sémantique OCU-hour, le coût du traitement de 10 Go de données pour la recherche sémantique automatique serait de 51$ (216 x 0$). OCU-hours 24/OCU-heure). Il n'y a pas de frais OCU supplémentaires pour la recherche sémantique lors des opérations de recherche ou pour le stockage des données.
Vous pouvez suivre cette consommation à l'aide de la CloudWatch métrique AmazonSemanticSearchOCU. 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, consultez la page Tarification des OpenSearch
Pris en charge Régions AWS
L'enrichissement sémantique automatique est disponible dans les domaines suivants : Régions AWS
USA Est (Virginie du Nord)
USA Est (Ohio)
USA Ouest (Oregon)
Asie-Pacifique (Mumbai)
Asie-Pacifique (Singapour)
Asie-Pacifique (Sydney)
Asie-Pacifique (Tokyo)
Europe (Francfort)
Europe (Irlande)
Europe (Stockholm)
Europe (Espagne)