View a markdown version of this page

Enriquecimiento semántico automático para Serverless - OpenSearch Servicio Amazon

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Enriquecimiento semántico automático para Serverless

Descripción general de

La función de enriquecimiento semántico automático puede ayudar a mejorar la relevancia de las búsquedas hasta un 20% en comparación con la búsqueda léxica. El enriquecimiento semántico automático elimina la pesada carga indiferenciada que supone gestionar tu propia infraestructura de modelos de aprendizaje automático e integrarla con el motor de búsqueda. La función está disponible para los tres tipos de colecciones sin servidor: búsqueda, serie temporal y vectorial.

Conceptos de búsqueda semántica

Los motores de búsqueda tradicionales se basan en la coincidencia palabra a palabra (denominada búsqueda léxica) para encontrar resultados para las consultas. Si bien esto funciona bien para consultas específicas, como los números de modelo de televisión, es posible que no arroje resultados relevantes para búsquedas más abstractas. Por ejemplo, al buscar «zapatos para la playa», la búsqueda léxica solo hace coincidir las palabras «zapatos», «playa», «para» y «el» de los artículos del catálogo, y es posible que no aparezcan productos relevantes, como «sandalias resistentes al agua» o «calzado de surf», que no contienen los términos de búsqueda exactos.

La búsqueda semántica arroja resultados de consulta que incorporan no solo la coincidencia de palabras clave, sino también la intención y el significado contextual de la búsqueda del usuario. Por ejemplo, si un usuario busca «cómo tratar un dolor de cabeza», un sistema de búsqueda semántica podría arrojar los siguientes resultados:

  • Remedios para la migraña

  • Técnicas de manejo del dolor

  • Over-the-counter analgésicos

Detalles del modelo y punto de referencia de rendimiento

Si bien esta función resuelve las complejidades técnicas entre bastidores sin exponer el modelo subyacente, la siguiente descripción del modelo y los resultados comparativos le ayudan a tomar decisiones informadas sobre la adopción de funciones en sus cargas de trabajo críticas.

El enriquecimiento semántico automático utiliza un modelo disperso, previamente entrenado y administrado por servicios, que funciona de manera eficaz sin necesidad de realizar ajustes personalizados. El modelo analiza los campos que especificas y los expande en vectores dispersos en función de las asociaciones aprendidas a partir de diversos datos de entrenamiento. Los términos ampliados y sus ponderaciones de significado se almacenan en el formato de índice nativo de Lucene para recuperarlos de manera eficiente. Hemos optimizado este proceso mediante el modo de solo documentos, en el que la codificación solo se produce durante la ingesta de datos. Las consultas de búsqueda se tokenizan en lugar de procesarse mediante el modelo disperso, lo que hace que la solución sea rentable y eficaz.

La validación del rendimiento durante el desarrollo de las funciones utilizó el conjunto de datos de recuperación de pasajes de MS MARCO, que incluía pasajes con un promedio de 334 caracteres. Para la puntuación de relevancia, la métrica utilizada fue la ganancia acumulada con descuentos normalizados (NDCG) promedio para los 10 primeros resultados de búsqueda (ndcg @10) según el índice de referencia BEIR para contenido en inglés y un promedio de ndcg @10 en MIRACL para contenido multilingüe. La evaluación de la latencia utilizó medidas del lado del cliente, en el percentil 90 (p90) y se tomaron valores de la respuesta de búsqueda p90. https://github.com/beir-cellar/beir Estos puntos de referencia proporcionan indicadores de rendimiento de referencia tanto para la relevancia de la búsqueda como para los tiempos de respuesta. Los siguientes son los principales números de referencia:

  • Idioma inglés: mejora de la relevancia un 20% con respecto a la búsqueda léxica. También redujo la latencia de búsqueda en la versión P90 en un 7,7% con respecto a la búsqueda léxica (la BM25 es de 26 ms y el enriquecimiento semántico automático es de 24 ms).

  • Multi-lingual - La relevancia mejoró un 105% con respecto a la búsqueda léxica, mientras que la latencia de búsqueda en la versión P90 aumentó un 38,4% con respecto a la búsqueda léxica (la BM25 es de 26 ms y el enriquecimiento semántico automático es de 36 ms).

Dada la naturaleza única de cada carga de trabajo, puede evaluar esta función en su entorno de desarrollo utilizando sus propios criterios de evaluación comparativa antes de tomar decisiones de implementación.

Idiomas compatibles

La función es compatible con el inglés. Además, el modelo también admite árabe, bengalí, chino, finés, francés, hindi, indonesio, japonés, coreano, persa, ruso, español, swahili y telugu.

Configure un índice de enriquecimiento semántico automático para las colecciones sin servidor

Puedes configurar un índice con el enriquecimiento semántico automático activado para tus campos de texto a través de la consola, las API y las CloudFormation plantillas durante la creación de un nuevo índice. Para habilitarlo en un índice existente, debe volver a crear el índice con el enriquecimiento semántico automático habilitado para los campos de texto.

Con la AWS consola, puede crear un índice con campos de enriquecimiento semántico automático. Tras seleccionar una colección, encontrará el botón Crear índice en la parte superior de la consola. Tras seleccionar Crear índice, la consola ofrece opciones para definir campos de enriquecimiento semántico automáticos. En un índice, puede incluir combinaciones de enriquecimiento semántico automático para campos lingüísticos e ingleses, así como campos léxicos.

Cree una página de índice que muestre el campo con el nombre del índice, los campos de enriquecimiento semántico y los campos de búsqueda léxica.

Para crear un índice de enriquecimiento semántico automático mediante la interfaz de línea de comandos (AWS CLI), utilice el AWS comando create-index:

aws opensearchserverless create-index \ --id [collection_id] \ --index-name [index_name] \ --index-schema [index_body] \

En el siguiente ejemplo de esquema de índice, el title_semantic campo tiene un tipo de campo establecido en text y un parámetro establecido en status. semantic_enrichment ENABLED Al establecer el semantic_enrichment parámetro, se habilita el enriquecimiento semántico automático en el campo. title_semantic Puede usar el language_options campo para especificar oenglish. multi-lingual

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" } } } }'

Para describir el índice creado, utilice el siguiente comando:

aws opensearchserverless get-index \ --id [collection_id] \ --index-name [index_name] \

También puedes usar CloudFormation plantillas (Type:AWS:::OpenSearchServerless:CollectionIndex) para crear una búsqueda semántica durante el aprovisionamiento de la colección, así como una vez creada la colección.

Actualiza un índice existente

Puede actualizar un índice existente para agregar nuevos campos de enriquecimiento semántico, habilitar o deshabilitar el enriquecimiento semántico en los campos existentes o agregar campos de texto no semántico. Usa el update-index comando y proporciona solo los campos que deseas cambiar en. index-schema Los campos no incluidos en la solicitud no se modifican.

nota

settingsNo se puede actualizar el índice. Si incluye un settings bloque en la solicitud, la operación devuelve un error de validación. Para cambiar la configuración del índice, debe eliminar y volver a crear el índice.

Para actualizar un índice mediante AWS CLI, utilice el update-index comando:

aws opensearchserverless update-index \ --id [collection_id] \ --index-name [index_name] \ --index-schema [index_body]

Agregue un nuevo campo de enriquecimiento semántico

Puede agregar un text campo nuevo con el enriquecimiento semántico habilitado a un índice existente. El servicio configura automáticamente el modelo de aprendizaje automático, la canalización de ingesta y la canalización de búsqueda necesarios. Los nuevos documentos indexados tras la actualización se enriquecen automáticamente.

importante

Los documentos existentes no se rellenan. Para rellenar el campo de enriquecimiento semántico en los documentos existentes, debe volver a ingerirlos tras la actualización. Hasta que se vuelvan a ingerir, los documentos existentes no se beneficiarán de la búsqueda semántica en el nuevo campo.

aws opensearchserverless update-index \ --id my-collection-id \ --index-name product-catalog \ --index-schema '{ "mappings": { "properties": { "description": { "type": "text", "semantic_enrichment": { "status": "ENABLED", "language_options": "english" } } } } }'

Inhabilite el enriquecimiento semántico en un campo

Para deshabilitar el enriquecimiento semántico en un campo que lo tiene habilitado actualmente, configúrelo en. status DISABLED El campo se elimina de las canalizaciones de ingesta y búsqueda. El campo de texto subyacente y su campo de incrustación permanecen en el índice, pero ya no se enriquecen.

aws opensearchserverless update-index \ --id my-collection-id \ --index-name product-catalog \ --index-schema '{ "mappings": { "properties": { "title_semantic": { "type": "text", "semantic_enrichment": { "status": "DISABLED" } } } } }'

Limitaciones de actualización

Las siguientes operaciones no son compatibles con el índice, por update-index lo que es necesario eliminar y volver a crear:

  • Cambiar language_options en un campo que actualmente tiene activado el enriquecimiento semántico. Deshabilite primero el campo y, a continuación, vuelva a habilitarlo con la nueva opción de idioma.

  • Actualización de campos anidados. El enriquecimiento semántico solo se admite en los campos de nivel superiortext.

  • Actualización del índice. settings

nota

Si el índice tiene una canalización de ingesta o búsqueda personalizada que no se creó mediante el enriquecimiento semántico automático, la operación de actualización se bloquea. Elimine la canalización personalizada antes de agregar campos de enriquecimiento semántico.

Ingestión y búsqueda de datos

Tras crear un índice con el enriquecimiento semántico automático activado, la función funciona automáticamente durante el proceso de ingesta de datos, sin necesidad de ninguna configuración adicional.

Ingestión de datos: al añadir documentos al índice, el sistema automáticamente:

  • Analiza los campos de texto que designaste para el enriquecimiento semántico

  • Genera codificaciones semánticas mediante OpenSearch el modelo disperso administrado por el servicio

  • Almacena estas representaciones enriquecidas junto con los datos originales

Este proceso utiliza OpenSearch los conectores ML integrados y las canalizaciones de ingesta, que se crean y administran automáticamente entre bastidores.

Búsqueda: los datos de enriquecimiento semántico ya están indexados, por lo que las consultas se ejecutan de forma eficiente sin tener que volver a invocar el modelo de aprendizaje automático. Esto significa que obtienes una relevancia de búsqueda mejorada sin sobrecargar la latencia de búsqueda adicional.

Configuración de permisos para el enriquecimiento semántico automático

Antes de crear un índice de enriquecimiento semántico automatizado, debes configurar los permisos necesarios. En esta sección, se explican los permisos necesarios y cómo configurarlos.

Permisos de política de IAM

Utilice la siguiente política AWS Identity and Access Management (IAM) para conceder los permisos necesarios para trabajar con el enriquecimiento semántico automático:

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "AutomaticSemanticEnrichmentPermissions", "Effect": "Allow", "Action": [ "aoss:CreateIndex", "aoss:GetIndex", "aoss:UpdateIndex", "aoss:DeleteIndex", "aoss:APIAccessAll" ], "Resource": "*" } ] }
Permisos de claves
  • Los permisos aoss:*Index permiten la administración de índices.

  • El aoss:APIAccessAll permiso permite las operaciones de la API OpenSearch

  • Para restringir los permisos a una colección específica, reemplace "Resource": "*" con el ARN de la colección.

Configurar los permisos de acceso a datos

A fin de configurar un índice para el enriquecimiento semántico automático, debe contar con las políticas de acceso a datos adecuadas que concedan permiso de acceso a los recursos de índices, canalizaciones y colecciones de modelos. Para obtener más información acerca de las políticas de acceso a datos, consulte Control de acceso a datos para Amazon OpenSearch Serverless. Para obtener información acerca del procedimiento de configuración de una política de acceso a datos, consulte Creación de políticas de acceso a los datos (consola).

Permisos de acceso a datos

[ { "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" ] }, ]

Permisos de acceso a la red

Para permitir que las API del servicio accedan a las colecciones privadas, debe configurar políticas de red que permitan el acceso necesario entre la API del servicio y la colección. Para obtener más información sobre las políticas de red, consulte Acceso a la red para 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" ], } ]
Configuración de los permisos de acceso a la red para una colección privada
  1. Inicie sesión en la consola OpenSearch de servicio en https://console.aws.amazon.com/aos/home.

  2. En el panel de navegación izquierdo, seleccione Políticas de red. A continuación, realice alguna de las operaciones siguientes:

    • Elija un nombre de política existente y seleccione Editar.

    • Elija Crear política de red y configure los detalles de la política.

  3. En el área Tipo de acceso, seleccione Privado (recomendado) y, a continuación, seleccione Acceso privado al servicio de AWS .

  4. En el campo de búsqueda, seleccione Servicio y, a continuación, aoss.amazonaws.com.

  5. En el área Tipo de recurso, seleccione la casilla Habilitar el acceso al OpenSearch punto final.

  6. Para Buscar en colecciones o introducir términos prefijos específicos, en el campo de búsqueda, seleccione Nombre de la colección. A continuación, escriba o seleccione el nombre de las colecciones que desee asociar a la política de red.

  7. Seleccione Crear para una nueva política de red o Actualizar para una política de red existente.

compatible Regiones de AWS

El enriquecimiento semántico automático para OpenSearch Serverless está disponible de la siguiente manera: Regiones de AWS

  • Este de EE. UU. (Norte de Virginia)

  • Este de EE. UU. (Ohio)

  • Oeste de EE. UU. (Oregón)

  • Asia-Pacífico (Mumbai)

  • Asia-Pacífico (Singapur)

  • Asia-Pacífico (Sídney)

  • Asia-Pacífico (Tokio)

  • Europa (Fráncfort)

  • Europa (Irlanda)

  • Europa (Estocolmo)

  • Europa (España)

Reescrituras de consultas

El enriquecimiento semántico automático convierte automáticamente las consultas de «coincidencia» existentes en consultas de búsqueda semántica sin necesidad de modificarlas. Si una consulta coincidente forma parte de una consulta compuesta, el sistema recorre la estructura de consultas, busca las consultas coincidentes y las reemplaza por consultas dispersas desde el punto de vista neuronal. Actualmente, la función solo admite la sustitución de consultas de «coincidencia», ya sea una consulta independiente o parte de una consulta compuesta. No se admite «multi_match». Además, la función admite todas las consultas compuestas para reemplazar las consultas de coincidencia anidadas. Las consultas compuestas incluyen: bool, boosting, constant_score, dis_max, function_score e hybrid.

Limitaciones del enriquecimiento semántico automático

La búsqueda semántica automática es más eficaz cuando se aplica a campos de tamaño pequeño a mediano que contienen contenido en lenguaje natural, como títulos de películas, descripciones de productos, reseñas y resúmenes. Si bien la búsqueda semántica mejora la relevancia en la mayoría de los casos de uso, puede que no sea óptima para ciertos escenarios. Tenga en cuenta las siguientes limitaciones a la hora de decidir si va a implementar el enriquecimiento semántico automático para su caso de uso específico.

  • Documentos muy largos: el modelo disperso actual procesa solo las primeras 8 192 fichas de cada documento para el inglés. En el caso de los documentos multilingües, son 512 fichas. En el caso de artículos extensos, considera la posibilidad de implementar la fragmentación de documentos para garantizar un procesamiento completo del contenido.

  • Cargas de trabajo de análisis de registros: el enriquecimiento semántico aumenta significativamente el tamaño del índice, lo que puede resultar innecesario para el análisis de registros, donde normalmente basta con una coincidencia exacta. El contexto semántico adicional rara vez mejora la eficacia de la búsqueda de registros lo suficiente como para justificar el aumento de los requisitos de almacenamiento.

  • El enriquecimiento semántico automático no es compatible con la función de fuente derivada.

Precios

Amazon OpenSearch Service factura el enriquecimiento semántico automático en función de las unidades de OpenSearch cálculo (OCUs) consumidas durante la generación de vectores dispersos en el momento de la indexación. Solo se te cobrará por el uso real durante la indexación de los campos de texto en los que hayas activado el enriquecimiento semántico automático. Una OCU de búsqueda semántica puede procesar 11,1 millones de fichas para contenido en inglés. Para procesar 2,4 mil millones de tokens, necesitarías alrededor de 216 búsquedas semánticas OCU-hours (2,4 mil millones/11,10 millones). Con un precio de 0,24 USD por búsqueda semántica OCU-hour, el coste de procesar 10 GB de datos para la búsqueda semántica automática sería de 51 dólares (216 x 0 dólares). OCU-hours 24/OCU-hora). No hay cargos adicionales de OCU por búsqueda semántica durante las operaciones de búsqueda o por el almacenamiento de datos.

Puedes supervisar este consumo mediante la métrica de Amazon CloudWatch . SemanticSearchOCU Para obtener información específica sobre los límites de los modelos de token, el volumen de procesamiento por OCU y un ejemplo de un ejemplo de cálculo, consulta los precios de los OpenSearch servicios.