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 la búsqueda hasta en un 20% con respecto a la búsqueda léxica. El enriquecimiento semántico automático elimina el pesado trabajo indiferenciado que supone gestionar tu propia infraestructura de modelos de aprendizaje automático (ML) y la integración con el motor de búsqueda. La función está disponible para los tres tipos de colecciones sin servidor: búsqueda, series temporales y vectoriales.

Conceptos de búsqueda semántica

Los motores de búsqueda tradicionales se basan en la coincidencia palabra a palabra (lo que se denomina búsqueda léxica) para encontrar los resultados de las consultas. Si bien esto funciona bien para consultas específicas, como los números de modelos de televisión, es posible que no arroje resultados relevantes para búsquedas más abstractas. Por ejemplo, al buscar «zapatos para la playa», una búsqueda léxica solo encuentra las palabras individuales «zapatos», «playa», «para» y «el» en los artículos del catálogo, por lo que podrían omitir 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», es posible que un sistema de búsqueda semántica arroje 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 gestionado por el servicio que funciona de forma eficaz sin necesidad de 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 significancia se almacenan en un formato de índice nativo de Lucene para una recuperación eficiente. Hemos optimizado este proceso mediante el modo de solo documentos, en el que la codificación solo se realiza durante la ingesta de datos. Las consultas de búsqueda se tokenizan en lugar de procesarse mediante un 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, se utilizó la media de la ganancia acumulada descontada normalizada (NDCG) de los diez primeros resultados de búsqueda (ndcg @10) según el índice BEIR para el contenido en inglés y la media de ndcg @10 en MIRACL para el contenido multilingüe. La evaluación de la latencia utilizó mediciones del percentil 90 (p90) del lado del cliente y los valores de la respuesta de búsqueda p90. 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 números de referencia clave son los siguientes:

  • Idioma inglés: mejora la relevancia del 20% con respecto a la búsqueda léxica. También redujo la latencia de búsqueda del P90 en un 7,7% con respecto a la búsqueda léxica (el 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 del P90 aumentó un 38,4% con respecto a la búsqueda léxica (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

Puede configurar un índice con el enriquecimiento semántico automático activado para sus campos de texto mediante 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 activado 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 tener combinaciones de enriquecimiento semántico automático para campos en inglés y multilingüe, así como para campos léxicos.

Cree una página de índice que muestre el campo del 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 índices, 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 una u english otra. 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 y después de crearla.

Actualiza un índice existente

Puede actualizar un índice existente para añadir nuevos campos de enriquecimiento semántico, activar o desactivar el enriquecimiento semántico en los campos existentes o añadir campos de texto no semánticos. Use el update-index comando y proporcione solo los campos que desee cambiar en el. index-schema Los campos no incluidos en la solicitud se dejan sin cambios.

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 el AWS CLI, utilice el update-index comando:

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

Añada un nuevo campo de enriquecimiento semántico

Puede añadir un text campo nuevo con el enriquecimiento semántico activado 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 después de la actualización se enriquecen automáticamente.

importante

Los documentos existentes no se rellenan. Para rellenar el campo de enriquecimiento semántico de los documentos existentes, debe volver a ingerirlos después de la actualización. Hasta que se vuelvan a incorporar, 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" } } } } }'

Deshabilita el enriquecimiento semántico en un campo

Para deshabilitar el enriquecimiento semántico en un campo que actualmente lo tiene activado, 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 están enriquecidos.

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 eliminarlo y volver a crearlo:

  • Cambiar language_options en un campo que actualmente tiene activado el enriquecimiento semántico. Desactive 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 superior. text

  • Actualización del índice. settings

nota

Si el índice tiene un proceso de ingesta o búsqueda personalizado 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 añadir 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 realizar ninguna configuración adicional.

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

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

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

  • Almacena estas representaciones enriquecidas junto con los datos originales

Este proceso utiliza los conectores OpenSearch de aprendizaje automático 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 manera eficiente sin tener que volver a invocar el modelo de aprendizaje automático. Esto significa que obtiene una mayor relevancia de búsqueda 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, debe 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, selecciona 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, active 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.

La consulta se reescribe

El enriquecimiento semántico automático convierte automáticamente las consultas «coincidentes» existentes en consultas de búsqueda semántica sin necesidad de modificar las consultas. Si una consulta de coincidencia forma parte de una consulta compuesta, el sistema recorre la estructura de la consulta, busca las consultas coincidentes y las reemplaza por consultas de dispersión neuronal. Actualmente, la función solo permite reemplazar las consultas «coincidentes», tanto si se trata de una consulta independiente como si forma parte de una consulta compuesta. No se admite la opción «multi_match». Además, la función admite todas las consultas compuestas para reemplazar sus consultas de coincidencia anidadas. Las consultas compuestas incluyen: bool, boost, 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 o 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 aumenta la relevancia en la mayoría de los casos de uso, puede que no sea óptima en algunos casos. Ten en cuenta las siguientes limitaciones a la hora de decidir si vas a implementar el enriquecimiento semántico automático para tu caso de uso específico.

  • Documentos muy largos: el modelo disperso actual procesa solo los primeros 8.192 símbolos de cada documento en inglés. En el caso de los documentos multilingües, se trata de 512 fichas. En el caso de artículos extensos, considere 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 en el análisis de registros, donde la coincidencia exacta suele ser suficiente. 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 Fuente derivada.

Precios

Amazon OpenSearch Service factura el enriquecimiento semántico automático en función de las unidades de OpenSearch cómputo (OCU) consumidas durante la generación de vectores dispersos en el momento de la indexación. Solo se le cobrará por el uso real durante la indexación de los campos de texto en los que haya 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 fichas, necesitarías unas 216 búsquedas semánticas OCU-hours (2 400 millones/11,10 millones). Con un precio de 0,24$ 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$ (216 x 0$). OCU-hours 24/OCU-hora). La búsqueda semántica (OCU) no conlleva cargos adicionales durante las operaciones de búsqueda ni por el almacenamiento de datos.

Puedes monitorizar este consumo mediante la CloudWatch métrica de AmazonSemanticSearchOCU. Para obtener información específica sobre los límites de los tokens del modelo, el volumen de procesamiento por OCU y un ejemplo de un ejemplo de cálculo, consulta los precios de los OpenSearch servicios.