

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
<a name="serverless-semantic-enrichment"></a>

## Descripción general de
<a name="serverless-semantic-enrichment-intro"></a>

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
<a name="serverless-semantic-enrichment-whats-is"></a>

 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
<a name="serverless-semantic-enrichment-model-detail"></a>

 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](https://docs.opensearch.org/docs/latest/vector-search/ai-search/neural-sparse-with-pipelines/#step-1a-choose-the-search-mode) 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](https://huggingface.co/datasets/BeIR/msmarco), 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](https://github.com/beir-cellar/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.](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 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
<a name="serverless-semantic-enrichment-languages"></a>

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
<a name="serverless-semantic-enrichment-index-setup"></a>

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.](http://docs.aws.amazon.com/es_es/opensearch-service/latest/developerguide/images/ase-console-exp-serverless.png)


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
<a name="serverless-semantic-enrichment-update-index"></a>

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**  
`settings`No 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
<a name="serverless-semantic-enrichment-update-add-field"></a>

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
<a name="serverless-semantic-enrichment-update-disable-field"></a>

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
<a name="serverless-semantic-enrichment-update-limitations"></a>

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
<a name="serverless-semantic-enrichment-data-ingest"></a>

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
<a name="serverless-semantic-enrichment-permissions"></a>

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
<a name="iam-policy-permissions"></a>

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 name="serverless-collection-permissions-data-network"></a>

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](serverless-data-access.md). 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)](serverless-data-access.md#serverless-data-access-console).

#### Permisos de acceso a datos
<a name="serverless-collection-data-access-permissions"></a>

```
[
    {
        "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
<a name="serverless-collection-network-access-permissions"></a>

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](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-network.html).

```
[
   {
      "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](https://console.aws.amazon.com/aos/home).

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

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

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

1. En el área **Tipo de recurso**, active la casilla **Habilitar el acceso al OpenSearch punto final**.

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

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

## compatible Regiones de AWS
<a name="serverless-semantic-enrichment-supported-regions"></a>

El enriquecimiento semántico automático para OpenSearch Serverless está disponible en las siguientes ubicaciones: 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
<a name="serverless-collection-query-rewrite"></a>

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
<a name="serverless-collection-ase-limitation"></a>

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
<a name="serverless-collection-ase-pricing"></a>

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 Amazon`SemanticSearchOCU`. 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](https://aws.amazon.com/opensearch-service/pricing/).