Blog

Uso de modelos Amazon Nova en Elasticsearch

Aprende a usar los modelos Amazon Nova en Elasticsearch para extraer automáticamente el sentimiento, la autenticidad, los resúmenes y las palabras clave de las reseñas de productos en Elasticsearch.

En este artículo, hablaremos sobre la familia de modelos de IA de Amazon, Amazon Nova, y aprenderemos a emplearla junto con Elasticsearch.

Acerca de Amazon Nova

Amazon Nova es una familia de modelos de inteligencia artificial de Amazon, disponibles en Amazon Bedrock y diseñados para ofrecer alto rendimiento y eficiencia en costos. Estos modelos funcionan con entradas de texto, imagen y video, generan salidas textuales y están optimizados para diferentes necesidades de precisión, velocidad y costo.

Modelos principales de Amazon Nova

  • Amazon Nova Micro: Centrado exclusivamente en texto, es un modelo rápido y rentable, ideal para traducción, razonamiento, completación de código y resolución de problemas matemáticos. Su generación supera los 200 tokens por segundo, lo que la hace ideal para aplicaciones que requieren respuestas instantáneas.

  • Amazon Nova Lite: un modelo multimodal de bajo costo capaz de procesar rápidamente imágenes, vídeos y texto. Destaca por su velocidad y precisión, siendo adecuado para aplicaciones interactivas y de gran volumen donde el costo es un factor relevante.

  • Amazon Nova Pro: La opción más avanzada, que combina alta precisión, velocidad y eficiencia de costos. Ideal para tareas complejas como resumen en video, preguntas frecuentes, desarrollo de software y agentes de IA. Las reseñas de expertos atestiguan su excelencia en comprensión textual y visual, así como su capacidad para seguir instrucciones y ejecutar flujos de trabajo automatizados.

Los modelos Amazon Nova son adecuados para una variedad de aplicaciones, desde la creación de contenido y análisis de datos hasta el desarrollo de software y la automatización de procesos impulsada por IA.

A continuación, demostraremos cómo emplear los modelos Amazon Nova junto con Elasticsearch para un análisis automatizado de reseñas de productos.

Lo que haremos:

  1. Crea un endpoint mediante Inference API, integrando Amazon Bedrock con Elasticsearch.

  2. Crea una tubería usando el Procesador de Inferencia, que hará llamadas al endpoint de la API de Inferencia.

  3. Indexa las reseñas de productos y genera automáticamente un análisis de las reseñas usando la canalización.

  4. Analiza los resultados de la integración.

Creando un endpoint en la API de inferencia con Amazon Nova Lite

Primero, configuramos la API de Inference para integrar Amazon Bedrock con Elasticsearch. Definimos Amazon Nova Lite, id amazon.nova-lite-v1:0, como modelo a usar, ya que ofrece un equilibrio entre velocidad, precisión y costo.

Nota: Necesitarás credenciales válidas para usar Amazon Bedrock. Puedes consultar la documentación para obtener claves de acceso aquí:

PUT _inference/completion/bedrock_completion_amazon_nova-lite
{
   "service": "amazonbedrock",
   "service_settings": {
       "access_key": "#access_key#",
       "secret_key": "#secret_key#",
       "region": "us-east-1",
       "provider": "amazontitan",
       "model": "amazon.nova-lite-v1:0"
   }
}

Creación de la cadena de análisis de revisiones

Ahora, creamos una cadena de procesamiento que empleará el Procesador de Inferencia para ejecutar una indicación de análisis de revisión. Este prompt enviará los datos de la reseña a Amazon Nova Lite, que realizará:

  • Clasificación de sentimiento (positivo, negativo o neutral).

  • Resumen de la reseña.

  • Generación de palabras clave.

  • Medición de autenticidad (auténtica | sospechosa | genérica).

PUT /_ingest/pipeline/review_analyzer_ai
{
      "processors": [
      {
        "script": 
            {
            "source": """ctx.prompt = "Analyze the following product review and return a structured JSON. Task: - Summarize the review concisely. - Detect and classify the sentiment as positive, neutral, or negative.- Generate relevant tags (keywords) based on the review content and detected sentiment. - Evaluate the authenticity of the review (authentic, suspicious, or generic). Review: " + ctx.review + " Respond in JSON format with the following fields: \"review_analyze\": {\"sentiment\": \"<positive | neutral | negative>\", \"authenticity\": \"<authentic | suspicious | generic>\",\"summary\": \"<short review summary>\", \"keywords\": [\"<keyword 1>\", \"<keyword 2>\", \"...\"]}}}"
            """
            }
      },
      {
        "inference": {
          "model_id": "bedrock_completion_amazon_nova-lite",
          "input_output": {
            "input_field": "prompt",
            "output_field": "result"
          }
        }
      },
      {
        "gsub": {
          "field": "result",
          "pattern": "```json",
          "replacement": ""
        } 
      },
      {
        "json" : {
          "field" : "result",
          "strict_json_parsing": false,
          "add_to_root" : true
        }
      },
      {
        "remove": {
          "field": "result"
        }
      },
      {
        "remove": {
          "field": "prompt"
        }
      }
    ]
}

Reseñas de indexación

Ahora, indexamos las reseñas de productos usando la API Bulk. La tubería creada anteriormente se aplicará automáticamente, agregando el análisis generado por el modelo Nova a los documentos indexados.

POST bulk/
{ "index": { "_index" : "products", "_id": 1, "pipeline":"review_analyzer_ai" } }
{ "product": "Pampers Pants Premium Care Fralda", "review": "Best diaper ever! Great material, lots of cotton, without all that plastic. Doesn't leak! My baby is a boy and every diaper leaked around the waist, this model solved the problem. Even on a small baby it's worth the effort of putting on the short diaper. I put it on my baby at 9 pm and only take it off in the morning, without any leaks." }
{ "index": { "_index" : "products", "_id": 2, "pipeline":"review_analyzer_ai" } }
{ "product": "Portable Electric Body Massager", "review": "It broke in three months for no apparent reason, thank goodness I didn't review it before. I don't recommend buying it because it has a short lifespan." }
{ "index": { "_index" : "products", "_id": 3, "pipeline":"review_analyzer_ai" } }
{ "product": "Havit Fuxi-H3 Black Quad-Mode Wired and Wireless Gaming Headset", "review": "The sound is good for the price, but the connectivity is horrible. You always need to be playing audio, otherwise it loses connection (I work from home, and this is very annoying). Sometimes it loses connection and you have to turn it off and on again to get it back on. The microphone is very sensitive, so it loses connection frequently and you have to turn the headset off and on for the microphone to work again. The flexibility of the stem is useless, because if you move it, the microphone can turn off. Sometimes I need to use Linux and the headset simply doesn't work. It's light and comfortable, the sound is adequate, but the connectivity is terrible." }
{ "index": { "_index" : "products", "_id": 4, "pipeline":"review_analyzer_ai" } }
{ "product": "Air Fryer 4L Oil Free Fryer Mondial", "review": "For those looking for value for money, it's a good option, but the tray (which is underneath the perforated basket) is already peeling a lot. My mother has one just like it and said that hers is even rusting, in other words, the material is MUCH inferior. There's also something that bothers me, because it looks like a microwave, it doesn't fry evenly, it's weaker in the middle and stronger on the sides. Buy at your own risk." }

Consulta y análisis de los resultados

Finalmente, realizamos una consulta para ver cómo el modelo Amazon Nova Lite analiza y clasifica las reseñas. Al ejecutar productos/_search GET, obtenemos los documentos ya enriquecidos con los campos generados a partir del contenido de la revisión.

El modelo identifica el sentimiento predominante (positivo, neutral o negativo), genera resúmenes concisos, extrae palabras clave relevantes y estima la autenticidad de cada revisión. Estos campos ayudan a entender la opinión del cliente sin necesidad de leer el texto completo.

Para interpretar los resultados, analizamos:

  • Sentimiento, que indica la percepción general que el consumidor tiene del producto.

  • El resumen, que destaca los puntos principales mencionados.

  • Palabras clave, que pueden usar para agrupar opiniones similares o identificar patrones de retroalimentación.

  • Autenticidad, que indica si la reseña parece fiable. Esto es útil para la curación o la moderación.

   "hits": [
      {
        "_index": "products",
        "_id": "1",
        "_score": 1,
        "_ignored": [
          "review.keyword"
        ],
        "_source": {
          "product": "Pampers Pants Premium Care Fralda",
          "model_id": "bedrock_completion_amazon_nova-lite",
          "review_analyze": {
            "summary": "The reviewer praises the diaper for its great material, high cotton content, and leak-proof design, especially highlighting its effectiveness for their baby.",
            "sentiment": "positive",
            "keywords": [
              "best diaper",
              "great material",
              "cotton",
              "no plastic",
              "leak-proof",
              "baby",
              "effective"
            ],
            "authenticity": "authentic"
          },
          "review": "Best diaper ever! Great material, lots of cotton, without all that plastic. Doesn't leak! My baby is a boy and every diaper leaked around the waist, this model solved the problem. Even on a small baby it's worth the effort of putting on the short diaper. I put it on my baby at 9 pm and only take it off in the morning, without any leaks."
        }
      },
      {
        "_index": "products",
        "_id": "2",
        "_score": 1,
        "_source": {
          "product": "Portable Electric Body Massager",
          "model_id": "bedrock_completion_amazon_nova-lite",
          "review_analyze": {
            "summary": "The product broke in three months for no apparent reason and the reviewer does not recommend it due to its short lifespan.",
            "sentiment": "negative",
            "keywords": [
              "broke",
              "short lifespan",
              "not recommend"
            ],
            "authenticity": "authentic"
          },
          "review": "It broke in three months for no apparent reason, thank goodness I didn't review it before. I don't recommend buying it because it has a short lifespan."
        }
      },
      {
        "_index": "products",
        "_id": "3",
        "_score": 1,
        "_ignored": [
          "review.keyword"
        ],
        "_source": {
          "product": "Havit Fuxi-H3 Black Quad-Mode Wired and Wireless Gaming Headset",
          "model_id": "bedrock_completion_amazon_nova-lite",
          "review_analyze": {
            "summary": "The headset has good sound quality for the price but suffers from poor connectivity, especially when using the microphone or moving the headset. It also has compatibility issues with Linux.",
            "sentiment": "negative",
            "keywords": [
              "sound",
              "connectivity",
              "microphone",
              "compatibility",
              "annoying",
              "turn off and on",
              "Linux",
              "flexible stem",
              "work from home"
            ],
            "authenticity": "authentic"
          },
          "review": "The sound is good for the price, but the connectivity is horrible. You always need to be playing audio, otherwise it loses connection (I work from home, and this is very annoying). Sometimes it loses connection and you have to turn it off and on again to get it back on. The microphone is very sensitive, so it loses connection frequently and you have to turn the headset off and on for the microphone to work again. The flexibility of the stem is useless, because if you move it, the microphone can turn off. Sometimes I need to use Linux and the headset simply doesn't work. It's light and comfortable, the sound is adequate, but the connectivity is terrible."
        }
      },
      {
        "_index": "products",
        "_id": "4",
        "_score": 1,
        "_ignored": [
          "review.keyword"
        ],
        "_source": {
          "product": "Air Fryer 4L Oil Free Fryer Mondial",
          "model_id": "bedrock_completion_amazon_nova-lite",
          "review_analyze": {
            "summary": "The product offers value for money but has issues with peeling, rusting, and uneven frying.",
            "sentiment": "negative",
            "keywords": [
              "value for money",
              "peeling",
              "rusting",
              "uneven frying",
              "weaker in the middle"
            ],
            "authenticity": "authentic"
          },
          "review": "For those looking for value for money, it's a good option, but the tray (which is underneath the perforated basket) is already peeling a lot. My mother has one just like it and said that hers is even rusting, in other words, the material is MUCH inferior. There's also something that bothers me, because it looks like a microwave, it doesn't fry evenly, it's weaker in the middle and stronger on the sides. Buy at your own risk."
        }
      }
    ]

Reflexiones finales

La integración entre Amazon Nova Lite y Elasticsearch demostró cómo los modelos de lenguaje pueden transformar las reseñas en bruto en información estructurada y valiosa. Al procesar las reseñas a través de una canalización, pudimos extraer el sentimiento, la autenticidad, los resúmenes y las palabras clave de forma automática y consistente.

Los resultados muestran que el modelo puede comprender el contexto de las reseñas, clasificar las opiniones de los usuarios y destacar los puntos más relevantes de cada experiencia. Esto crea un conjunto de datos mucho más rico que puede aprovechar para mejorar las capacidades de búsqueda.

Contenido relacionado

Técnicas avanzadas de RAG parte 2: Consultas y pruebas

Han Xiang Choong

Resolución de entidades con Elasticsearch, parte 4: el desafío final

Jessica Moszkowicz

Automatización del análisis de logs en Streams con ML.

Nastia Havriushenko

Construir un agente de IA para RRHH con Elastic Agent Builder y GPT-OSS

Tomás Murúa

Técnicas avanzadas de RAG parte 1: Procesamiento de datos

Han Xiang Choong

¿Estás listo para crear experiencias de búsqueda de última generación?

No se logra una búsqueda suficientemente avanzada con los esfuerzos de uno. Elasticsearch está impulsado por científicos de datos, operaciones de ML, ingenieros y muchos más que son tan apasionados por la búsqueda como tú. Conectemos y trabajemos juntos para crear la experiencia mágica de búsqueda que te dará los resultados que deseas.

Pruébalo tú mismo