Enrichissement sémantique automatique pour Serverless - 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 Serverless

Introduction

La fonctionnalité d'enrichissement sémantique automatique peut aider à améliorer la pertinence de la recherche jusqu'à 20 % par rapport à la recherche lexicale. L'enrichissement sémantique automatique élimine le fardeau indifférencié lié à la gestion de votre propre infrastructure de modèles de ML (machine learning) et à l'intégration au moteur de recherche. La fonctionnalité est disponible pour les trois types de collection sans serveur : Search, Time Series et Vector.

Qu'est-ce que la recherche sémantique

Les moteurs de recherche traditionnels s'appuient sur la word-to-word correspondance (appelée recherche lexicale) pour trouver les résultats des requêtes. Bien que cela fonctionne bien pour des requêtes spécifiques telles que les numéros de modèles de téléviseurs, cela pose des difficultés pour les recherches plus abstraites. Par exemple, lorsque vous recherchez « chaussures pour la plage », une recherche lexicale fait simplement correspondre les mots « chaussures », « plage », « pour » et « le » 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.

La recherche sémantique renvoie des résultats de requête qui intègrent non seulement la correspondance des mots clés, mais aussi l'intention et le sens contextuel de la recherche de l'utilisateur. Par exemple, si un utilisateur recherche « comment traiter un mal de tête », un système de recherche sémantique peut renvoyer les résultats suivants :

  • Remèdes contre la migraine

  • Techniques de gestion de la douleur

  • Over-the-counter analgésiques

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

Étant donné 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 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 collections sans serveur

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é une collection, 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 opensearchserverless create-index \ --id [collection_id] \ --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 opensearchserverless 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 opensearchserverless get-index \ --id [collection_id] \ --index-name [index_name] \

Vous pouvez également utiliser des CloudFormation modèles (Type :AWS::OpenSearchServerless::CollectionIndex) pour créer une recherche sémantique pendant le provisionnement de la collection ainsi qu'après la création de la collection.

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 d'enrichissement sémantique automatique, vous devez configurer les autorisations requises. Cette section explique les autorisations nécessaires et explique comment les configurer.

Autorisations liées à la politique IAM

Utilisez la politique Gestion des identités et des accès AWS (IAM) suivante pour accorder les autorisations nécessaires à l'utilisation de l'enrichissement sémantique automatique :

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "AutomaticSemanticEnrichmentPermissions", "Effect": "Allow", "Action": [ "aoss:CreateIndex", "aoss:GetIndex", "aoss:UpdateIndex", "aoss:DeleteIndex", "aoss:APIAccessAll" ], "Resource": "*" } ] }
Autorisations de clés
  • Les aoss:*Index autorisations permettent la gestion des index

  • L'aoss:APIAccessAllautorisation autorise les opérations OpenSearch d'API

  • Pour restreindre les autorisations à une collection spécifique, remplacez-la "Resource": "*" par l'ARN de la collection

Configuration des autorisations d'accès aux données

Pour configurer un index pour un enrichissement sémantique automatique, vous devez disposer de politiques d'accès aux données appropriées autorisant l'accès aux ressources de collecte d'index, de pipeline et de modèles. Pour plus d'informations sur les politiques d'accès aux données, consultezContrôle d'accès aux données pour Amazon OpenSearch Serverless. Pour la procédure de configuration d'une politique d'accès aux données, consultezCréation de stratégies d'accès aux données (console).

Autorisations d'accès aux données

[ { "Description": "Create index permission", "Rules": [ { "ResourceType": "index", "Resource": ["index/collection_name/*"], "Permission": [ "aoss:CreateIndex", "aoss:DescribeIndex", "aoss:UpdateIndex", "aoss:DeleteIndex" ] } ], "Principal": [ "arn:aws:iam::account_id:role/role_name" ] }, { "Description": "Create pipeline permission", "Rules": [ { "ResourceType": "collection", "Resource": ["collection/collection_name"], "Permission": [ "aoss:CreateCollectionItems", "aoss:DescribeCollectionItems" ] } ], "Principal": [ "arn:aws:iam::account_id:role/role_name" ] }, { "Description": "Create model permission", "Rules": [ { "ResourceType": "model", "Resource": ["model/collection_name/*"], "Permission": ["aoss:CreateMLResource"] } ], "Principal": [ "arn:aws:iam::account_id:role/role_name" ] }, ]

Autorisations d'accès au réseau

Pour autoriser le service APIs à accéder aux collections privées, vous devez configurer des politiques réseau qui autorisent l'accès requis entre l'API du service et la collection. Pour plus d'informations sur les politiques réseau, consultez la section Accès réseau pour Amazon OpenSearch Serverless.

[ { "Description":"Enable automatic semantic enrichment in a private collection", "Rules":[ { "ResourceType":"collection", "Resource":[ "collection/collection_name" ] } ], "AllowFromPublic":false, "SourceServices":[ "aoss.amazonaws.com" ], } ]
Pour configurer les autorisations d'accès réseau pour une collection privée
  1. Connectez-vous à la console de OpenSearch service à la https://console.aws.amazon.com/aos/maison.

  2. Dans le volet de navigation de gauche, sélectionnez Stratégies réseau. Ensuite, effectuez l’une des actions suivantes :

    • Choisissez un nom de politique existant et cliquez sur Modifier

    • Choisissez Créer une politique réseau et configurez les détails de la politique

  3. Dans la zone Type d'accès, choisissez Privé (recommandé), puis sélectionnez Accès privé au AWS service.

  4. Dans le champ de recherche, choisissez Service, puis aoss.amazonaws.com.

  5. Dans la zone Type de ressource, cochez la case Activer l'accès au OpenSearch point de terminaison.

  6. Pour Rechercher une ou plusieurs collections, ou saisir des termes de préfixes spécifiques, dans le champ de recherche, sélectionnez Nom de la collection. Entrez ou sélectionnez ensuite le nom des collections à associer à la politique réseau.

  7. Choisissez Créer pour une nouvelle politique réseau ou Mettre à jour pour une politique réseau existante.

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

OpenSearch L'enrichissement sémantique automatique des factures sans serveur est basé sur les 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.