Amazon Kendra Clasificación inteligente para autogestión OpenSearch - Amazon Kendra

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.

Amazon Kendra Clasificación inteligente para autogestión OpenSearch

Puedes aprovechar las capacidades Amazon Kendra de búsqueda semántica que ofrece para mejorar los resultados de búsqueda desde OpenSearchel servicio de búsqueda autogestionado de código abierto basado en la licencia Apache 2.0. El complemento Amazon Kendra Intelligent Ranking reclasifica OpenSearch semánticamente los resultados utilizando. Amazon Kendra Para ello, comprende el significado y el contexto de una consulta de búsqueda utilizando campos específicos, como el cuerpo o el título del documento, de los resultados de OpenSearch búsqueda predeterminados.

Tomemos, por ejemplo, esta consulta: “dirección principal de la nota clave”. Dado que «dirección» tiene varios significados, Amazon Kendra puede deducir el significado de la consulta para obtener información relevante alineada con el significado deseado. En este contexto, se trata del discurso de apertura de una conferencia. Un servicio de búsqueda más simple podría no tener en cuenta la intención y arrojar resultados para una dirección postal de Main Street, por ejemplo.

El complemento Intelligent Ranking OpenSearch está disponible para la versión 2.4.0 y versiones posteriores OpenSearch (autogestionables). Puedes instalar el complemento mediante un script Bash de inicio rápido para crear una nueva imagen de Docker OpenSearch con el complemento Intelligent Ranking incluido. Vea Configuración del complemento de búsqueda inteligente: este es un ejemplo de una configuración para ponerse en marcha rápidamente.

Cómo funciona el complemento de búsqueda inteligente

El proceso general del complemento Intelligent Ranking para OpenSearch (autogestionado) es el siguiente:

  1. Un OpenSearch usuario realiza una consulta y OpenSearch proporciona una respuesta a la consulta o una lista de documentos que son relevantes para la consulta.

  2. El complemento Intelligent Ranking toma la respuesta a la consulta y extrae la información de los documentos.

  3. El complemento Intelligent Ranking realiza una llamada a la API Rescore de Amazon Kendra Intelligent Ranking.

  4. La API Rescore toma la información extraída de los documentos y reclasifica semánticamente los resultados de la búsqueda.

  5. La API Rescore devuelve los resultados de búsqueda reclasificados al complemento. El complemento reorganiza los resultados de búsqueda en la respuesta de OpenSearch búsqueda para reflejar la nueva clasificación semántica.

El complemento de clasificación inteligente vuelve a clasificar los resultados utilizando los campos “cuerpo” y “título”. Estos campos del plugin se pueden asignar a los campos del OpenSearch índice que mejor se ajusten a la definición de cuerpo y título de un documento. Por ejemplo, si su índice contiene capítulos de un libro con campos como “chapter_heading” y “chapter_contents”, puede asignar el primero a “title” y el segundo a “body” para obtener los mejores resultados.

Configuración del complemento de búsqueda inteligente

A continuación, se describe cómo configurarlo rápidamente OpenSearch (autogestionado) con el complemento Intelligent Ranking.

Configuración OpenSearch (autogestionada) con el complemento Intelligent Ranking (configuración rápida)

Si ya utilizas la imagen de Dockeropensearch:2.4.0, puedes usar este Dockerfile para crear una nueva imagen de la OpenSearch versión 2.4.0 con el complemento Intelligent Ranking. Incluya un contenedor para la nueva imagen en su archivo docker-compose.yml u opensearch.yml. También debe incluir el ID del plan de ejecución de rescate generado al crear un plan de ejecución de rescate, junto con la información sobre la región y el punto de conexión; consulte el paso 2 para crear un plan de ejecución de rescate.

Si anteriormente descargó una versión de la imagen de Docker opensearch anterior a la 2.4.0, debe usar la imagen de Docker opensearch:2.4.0 o una versión posterior y crear una nueva imagen con el complemento Intelligent Ranking incluido.

  1. Descargue e instale Docker Desktop para su sistema operativo. Docker Desktop incluye Docker Compose y Docker Engine. Se recomienda comprobar si el ordenador cumple los requisitos del sistema mencionados en los detalles de instalación de Docker.

    También puede aumentar los requisitos de uso de memoria en la configuración de su escritorio Docker. Usted es responsable de los requisitos de uso de Docker fuera de los límites de uso disponibles de forma gratuita para los servicios de Docker. Consulte las suscripciones de Docker.

    Compruebe que el estado de Docker Desktop es “en ejecución”.

  2. Aprovisione Amazon Kendra Intelligent Ranking y sus requisitos de capacidad. Una vez que aprovisione Intelligent Ranking Amazon Kendra , se le cobrará por hora en función de las unidades de capacidad establecidas. Consulte la información sobre los niveles y precios gratuitos.

    Utiliza la CreateRescoreExecutionPlanAPI para aprovisionar elRescore API. Si no necesita más unidades de capacidad que la unidad predeterminada, no añada más unidades y proporcione solo un nombre para su plan de ejecución de rescore. También puede actualizar sus requisitos de capacidad mediante la UpdateRescoreExecutionPlanAPI. Para más información, consulte Clasificación semántica de los resultados de un servicio de búsqueda.

    Si lo desea, puede ir al paso 3 para crear un plan de ejecución de rescore predeterminado al ejecutar el script Bash de inicio rápido.

    Anote en el paso 4 el identificador del plan de ejecución de rescore incluido en la respuesta.

    CLI
    aws kendra-ranking create-rescore-execution-plan \ --name MyRescoreExecutionPlan \ --capacity-units '{"RescoreCapacityUnits":<integer number of additional capacity units>}' Response: { "Id": "<rescore execution plan ID>", "Arn": "arn:aws:kendra-ranking:<region>:<account-id>:rescore-execution-plan/<rescore-execution-plan-id>" }
    Python
    import boto3 from botocore.exceptions import ClientError import pprint import time kendra_ranking = boto3.client("kendra-ranking") print("Create a rescore execution plan.") # Provide a name for the rescore execution plan name = "MyRescoreExecutionPlan" # Set your required additional capacity units # Don't set capacity units if you don't require more than 1 unit given by default capacity_units = 1 try: rescore_execution_plan_response = kendra_ranking.create_rescore_execution_plan( Name = name, CapacityUnits = {"RescoreCapacityUnits":capacity_units} ) pprint.pprint(rescore_execution_plan_response) rescore_execution_plan_id = rescore_execution_plan_response["Id"] print("Wait for Amazon Kendra to create the rescore execution plan.") while True: # Get the details of the rescore execution plan, such as the status rescore_execution_plan_description = kendra_ranking.describe_rescore_execution_plan( Id = rescore_execution_plan_id ) # When status is not CREATING quit. status = rescore_execution_plan_description["Status"] print(" Creating rescore execution plan. Status: "+status) time.sleep(60) if status != "CREATING": break except ClientError as e: print("%s" % e) print("Program ends.")
  3. Descarga el script de inicio rápido de Bash GitHub para tu versión de OpenSearch seleccionando la rama de versión en el menú desplegable de la rama principal.

    Este script utiliza imágenes de Docker OpenSearch y OpenSearch paneles de control con la versión que haya seleccionado en el GitHub repositorio del script. Descarga un archivo zip para el complemento Intelligent Ranking y genera un archivo Dockerfile para crear una nueva imagen de Docker OpenSearch que incluya el complemento. También crea un archivo docker-compose.yml que incluye contenedores para OpenSearch el complemento Intelligent Ranking y los paneles de control. OpenSearch El script agrega el ID del plan de ejecución de rescore, la información de la región y el punto final (usa la región) al archivo docker-compose.yml. A continuación, el script se ejecuta docker-compose up para iniciar los contenedores con Intelligent Ranking incluido y los paneles de control. OpenSearch OpenSearch Para detener los contenedores sin quitarlos, ejecute docker-compose stop. Para retirar los contenedores, ejecute docker-compose down.

  4. Abra su terminal y en el directorio del script Bash, ejecute el siguiente comando.

    bash search_processing_kendra_quickstart.sh -p <execution-plan-id> -r <region>

    Al ejecutar este comando, proporciona el ID del plan de ejecución de rescore que anotó en el paso 2 al aprovisionar Amazon Kendra Intelligent Ranking, junto con la información de su región. Si lo desea, puede aprovisionar Intelligent Ranking Amazon Kendra mediante la opción --create-execution-plan. Esto crea un plan de ejecución para volver a puntuar con un nombre y una capacidad predeterminados.

    Para no perder el índice cuando se elimine el contenedor efímero predeterminado, puede hacer que el índice se mantenga durante las ejecuciones proporcionando el nombre del volumen de datos mediante la opción --volume-name. Si ha creado un índice anteriormente, puede especificar el volumen en el archivo docker-compose.yml u opensearch.yml. Para dejar sus volúmenes intactos, no ejecutedocker-compose down -v.

    El script Bash de inicio rápido configura tus AWS credenciales en el OpenSearch almacén de claves para conectarte a Intelligent Ranking. Amazon Kendra Para proporcionar sus AWS credenciales al script, utilice la --profile opción para especificar el perfil. AWS Si no se especifica la --profile opción, el script Bash de inicio rápido intentará leer AWS las credenciales (clave de acceso/secreta, token de sesión opcional) de las variables de entorno y, a continuación, del perfil predeterminado. AWS Si no se especifica la --profile opción y no se encuentra ninguna credencial, el script no pasará las credenciales al almacén de claves. OpenSearch Si no se especifica ninguna credencial en el OpenSearch almacén de claves, el complemento sigue comprobando las credenciales en la cadena de proveedores de credenciales predeterminada, incluidas las credenciales de Amazon ECS contenedor o las credenciales de perfil de instancia entregadas a través del Amazon EC2 servicio de metadatos.

    Asegúrese de haber creado un IAM rol con los permisos necesarios para invocar Intelligent Ranking Amazon Kendra . El siguiente es un ejemplo de una IAM política que permite el uso de la Rescore API para un plan de ejecución de rescore específico:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "kendra-ranking:Rescore", "Resource": "arn:aws:kendra-ranking:${Region}:${Account}:rescore-execution-plan/${RescoreExecutionPlanId}" } ] }

Ejemplo de docker-compose.yml

Un ejemplo de un archivo docker-compose.yml que utiliza OpenSearch 2.4.0 o una versión posterior con el complemento Intelligent Ranking y Dashboards 2.4.0 o una versión posterior. OpenSearch

version: '3' networks: opensearch-net: volumes: <volume-name>: services: opensearch-node: image: <Docker image tag name of OpenSearch with Intelligent Ranking plugin> container_name: opensearch-node environment: - cluster.name=opensearch-cluster - node.name=opensearch-node - discovery.type=single-node - kendra_intelligent_ranking.service.endpoint=https://kendra-ranking.<region>.api.aws - kendra_intelligent_ranking.service.region=<region> - kendra_intelligent_ranking.service.execution_plan_id=<rescore-execution-plan-id> ulimits: memlock: soft: -1 hard: -1 nofile: soft: 65536 hard: 65536 ports: - 9200:9200 - 9600:9600 networks: - opensearch-net volumes: <docker-volume-name>:/usr/share/opensearch/data opensearch-dashboard: image: opensearchproject/opensearch-dashboards:<your-version> container_name: opensearch-dashboards ports: - 5601:5601 environment: OPENSEARCH_HOSTS: '["https://opensearch-node:9200"]' networks: - opensearch-net

Ejemplo de un Dockerfile y creación de una imagen

Un ejemplo de uso de la versión 2.4.0 o posterior con el complemento Intelligent Dockerfile Ranking. OpenSearch

FROM opensearchproject/opensearch:<your-version> RUN /usr/share/opensearch/bin/opensearch-plugin install --batch https://github.com/opensearch-project/search-processor/releases/download/<your-version>/search-processor.zip

Creación de una imagen de Docker OpenSearch con el complemento Intelligent Ranking.

docker build --tag=<Docker image tag name of OpenSearch with Intelligent Ranking plugin>

Interactuar con el complemento de búsqueda inteligente

Una vez que lo hayas configurado OpenSearch (autogestionado) con el plugin Intelligent Ranking, podrás interactuar con el plugin mediante comandos curl o bibliotecas OpenSearch cliente. Las credenciales predeterminadas para acceder OpenSearch con el complemento Intelligent Ranking son el nombre de usuario «admin» y la contraseña «admin».

Para aplicar la configuración del complemento Intelligent Ranking a un OpenSearch índice:

Curl
curl -XPUT "https://localhost:9200/<your-docs-index>/_settings" -u 'admin:admin' --insecure -H 'Content-Type: application/json' -d' { "index": { "plugin" : { "searchrelevance" : { "result_transformer" : { "kendra_intelligent_ranking": { "order": 1, "properties": { "title_field": "title_field_name_here", "body_field": "body_field_name_here" } } } } } } } '
Python
pip install opensearch-py from opensearchpy import OpenSearch host = 'localhost' port = 9200 auth = ('admin', 'admin') client = OpenSearch( hosts = [{'host': host, 'port': port}], http_compress = True, # enables gzip compression for request bodies http_auth = auth, # client_cert = client_cert_path, # client_key = client_key_path, use_ssl = True, verify_certs = False, ssl_assert_hostname = False, ssl_show_warn = False, ca_certs = ca_certs_path ) setting_body = { "index": { "plugin" : { "searchrelevance" : { "result_transformer" : { "kendra_intelligent_ranking": { "order": 1, "properties": { "title_field": "title_field_name_here", "body_field": "body_field_name_here" } } } } } } } response = client.indices.put_settings(index_name, body=setting_body)

Debe incluir el nombre del campo de texto principal que desea utilizar para volver a clasificar, como un campo de cuerpo del documento o de contenido del documento. También puede incluir otros campos de texto, como el título del documento o el resumen del documento.

Ahora puede realizar cualquier consulta y los resultados se clasifican mediante el complemento Intelligent Ranking.

Curl
curl -XGET "https://localhost:9200/<your-docs-index>/_search?pretty" -u 'admin:admin' --insecure -H 'Content-Type: application/json' -d' { "query" : { "match" : { "body_field_name_here": "intelligent systems" } } } '
Python
from opensearchpy import OpenSearch host = 'localhost' port = 9200 auth = ('admin', 'admin') client = OpenSearch( hosts = [{'host': host, 'port': port}], http_compress = True, # enables gzip compression for request bodies http_auth = auth, # client_cert = client_cert_path, # client_key = client_key_path, use_ssl = True, verify_certs = False, ssl_assert_hostname = False, ssl_show_warn = False, ca_certs = ca_certs_path ) query = { 'size': 10, "query" : { "match" : { "body_field_name_here": "intelligent systems" } } } response = client.search( body = query, index = index_name ) print('\nSearch results:') print(response)

Para eliminar la configuración del complemento Intelligent Ranking de un OpenSearch índice:

Curl
curl -XPUT "http://localhost:9200/<your-docs-index>/_settings" -H 'Content-Type: application/json' -d' { "index": { "plugin": { "searchrelevance": { "result_transformer": { "kendra_intelligent_ranking.*": null } } } } } '
Python
from opensearchpy import OpenSearch host = 'localhost' port = 9200 auth = ('admin', 'admin') client = OpenSearch( hosts = [{'host': host, 'port': port}], http_compress = True, # enables gzip compression for request bodies http_auth = auth, # client_cert = client_cert_path, # client_key = client_key_path, use_ssl = True, verify_certs = False, ssl_assert_hostname = False, ssl_show_warn = False, ca_certs = ca_certs_path ) setting_body = { "index": { "plugin": { "searchrelevance": { "result_transformer": { "kendra_intelligent_ranking.*": null } } } } } response = client.indices.put_settings(index_name, body=setting_body)

Para probar el complemento Intelligent Ranking en una consulta determinada o para probarlo en determinados campos del cuerpo y del título:

Curl
curl -XGET "https://localhost:9200/<your-docs-index>/_search?pretty" -u 'admin:admin' --insecure -H 'Content-Type: application/json' -d' { "query": { "multi-match": { "query": "intelligent systems", "fields": ["body_field_name_here", "title_field_name_here"] } }, "size": 25, "ext": { "search_configuration": { "result_transformer": { "kendra_intelligent_ranking": { "order": 1, "properties": { "title_field": "title_field_name_here", "body_field": "body_field_name_here" } } } } } } '
Python
from opensearchpy import OpenSearch host = 'localhost' port = 9200 auth = ('admin', 'admin') client = OpenSearch( hosts = [{'host': host, 'port': port}], http_compress = True, # enables gzip compression for request bodies http_auth = auth, # client_cert = client_cert_path, # client_key = client_key_path, use_ssl = True, verify_certs = False, ssl_assert_hostname = False, ssl_show_warn = False, ca_certs = ca_certs_path ) # Index settings null for kendra_intelligent_ranking query = { "query": { "multi_match": { "query": "intelligent systems", "fields": ["body_field_name_here", "title_field_name_here"] } }, "size": 25, "ext": { "search_configuration": { "result_transformer": { "kendra_intelligent_ranking": { "order": 1, "properties": { "title_field": "title_field_name_here", "body_field": "body_field_name_here" } } } } } } response = client.search( body = query, index = index_name ) print('\nSearch results:') print(response)

Comparar OpenSearch los resultados con Amazon Kendra los resultados

Puede comparar los resultados clasificados side-by-side OpenSearch (autogestionados) con Amazon Kendra los resultados reclasificados. OpenSearch La versión 2.4.0 y posteriores de Dashboards ofrecen side-by-side resultados para que puedas comparar la OpenSearch clasificación de los documentos con la forma en que el plugin clasifica los documentos para una consulta de búsqueda. Amazon Kendra

Antes de poder comparar los resultados OpenSearch clasificados con los Amazon Kendra reclasificados, asegúrate de que tus OpenSearch paneles estén respaldados por un OpenSearch servidor con el complemento Intelligent Ranking. Puede configurarlo utilizando Docker y un script Bash de inicio rápido. Consulte Configuración del complemento de búsqueda inteligente.

A continuación, se describe cómo comparar OpenSearch y Amazon Kendra buscar los resultados en OpenSearch los paneles de control. Para obtener más información, consulte la OpenSearchdocumentación.

Comparación de los resultados de búsqueda en los OpenSearch paneles
  1. Abre http://localhost:5601 e inicia sesión en OpenSearch Dashboards. Las credenciales predeterminadas son el nombre de usuario “admin” y la contraseña “admin”.

  2. Selecciona Relevancia de búsqueda en los OpenSearch complementos del menú de navegación.

  3. Escriba el texto de búsqueda en la barra de búsqueda.

  4. Seleccione su índice para la consulta 1 e introduzca una consulta en la OpenSearch consulta DSL. Puede usar la variable %SearchText% para hacer referencia al texto de búsqueda que ingresó en la barra de búsqueda. Para ver un ejemplo de esta consulta, consulte OpenSearch la documentación. Los resultados devueltos para esta consulta son los OpenSearch resultados sin utilizar el complemento Intelligent Ranking.

  5. Seleccione el mismo índice para la consulta 2 e introduzca la misma consulta en la OpenSearch consulta DSL. Además, incluya la extensión kendra_intelligent_ranking y especifique la extensión obligatoria body_field para clasificarla. También puede especificar el campo de título, pero el campo de cuerpo es obligatorio. Para ver un ejemplo de esta consulta, consulte OpenSearch la documentación. Los resultados devueltos para esta consulta son los resultados Amazon Kendra reclasificados mediante el complemento Intelligent Ranking. El complemento clasifica hasta 25 resultados.

  6. Seleccione Buscar para ver y comparar los resultados.