Cree un asistente de IA generativa multimodal para el diagnóstico de causa raíz en el mantenimiento predictivo utilizando Amazon Bedrock

El mantenimiento predictivo es una estrategia que utiliza datos de sensores de equipos y análisis avanzados para predecir cuándo es probable que falle una máquina, garantizando que el mantenimiento se pueda realizar de forma proactiva para evitar averías. Esto permite a las industrias reducir fallas inesperadas, mejorar la eficiencia operativa y extender la vida útil de los equipos críticos. Es aplicable en una amplia gama de componentes, incluidos motores, ventiladores, cajas de engranajes, rodamientos, transportadores, actuadores y más.

En esta publicación, demostramos cómo implementar una solución de mantenimiento predictivo utilizando Foundation Models (FM) en Amazon Bedrock, con un estudio de caso del equipo de fabricación de Amazon dentro de sus centros logísticos. La solución es altamente adaptable y puede personalizarse para otras industrias, incluidas las de petróleo y gas, logística, manufactura y atención médica.

Descripción general del mantenimiento predictivo

El mantenimiento predictivo se puede dividir en dos fases clave: generación de alarmas de sensores y diagnóstico de causa raíz. Juntas, estas fases forman un enfoque integral para el mantenimiento predictivo, lo que permite intervenciones oportunas y efectivas que minimizan el tiempo de inactividad y maximizan el rendimiento del equipo. Después de una breve descripción general de cada fase, detallamos cómo los usuarios pueden hacer que la segunda fase sea más eficiente mediante el uso de IA generativa, lo que permite a los equipos de mantenimiento abordar los problemas de los equipos más rápido.

Fase 1: Generación de alarma de sensor

Esta fase se centra en monitorear las condiciones del equipo, como la temperatura y la vibración, a través de sensores que activan alarmas cuando se detectan patrones inusuales.

En Amazon, esto se logra utilizando sensores Amazon Monitron que monitorean continuamente las condiciones del equipo. Estos sensores son una solución de monitoreo de equipos basada en aprendizaje automático (ML) de extremo a extremo que cubre los pasos iniciales del proceso:

Paso 1: Los sensores Monitron capturan datos de vibración y temperatura
Paso 2: los datos del sensor se transfieren automáticamente a Amazon Web Services (AWS)
Paso 3: Monitron analiza los datos del sensor utilizando los estándares ISO de vibración y ML
Paso 4: la aplicación Monitron envía notificaciones sobre condiciones anormales del equipo

Fase 2: Diagnóstico de la causa raíz

Esta fase utiliza los datos del sensor para identificar la causa raíz de los problemas detectados, guiando a los equipos de mantenimiento en la realización de reparaciones o ajustes para ayudar a prevenir fallas. Abarca los pasos restantes del proceso.

Informe de fallas

Paso 5: El panel muestra los datos de temperatura y vibración.
Paso 6: Se genera la orden de trabajo genérica
Paso 7: diagnosticar y solucionar el problema
Paso 8: Informar la anomalía

Durante esta fase, los técnicos enfrentan dos desafíos: recibir órdenes de trabajo genéricas con orientación limitada y tener que encontrar información relevante entre más de 40 manuales de reparación, cada uno con cientos de páginas. Cuando los problemas del equipo se encuentran en sus primeras etapas y aún no muestran signos claros de mal funcionamiento, a los técnicos les resulta difícil y requiere mucho tiempo identificar la causa raíz, lo que genera retrasos en el diagnóstico y la reparación. Esto da como resultado un tiempo de inactividad prolongado del equipo, una reducción de la eficiencia operativa y un aumento de los costos de mantenimiento.

Descripción general de la solución

En la fase de Diagnóstico de Causa Raíz y Resolución de Problemas, más del 50% de las órdenes de trabajo generadas después de que se activa una alarma permanecen etiquetadas como "Indeterminadas" en términos de causa raíz. Para afrontar este desafío, hemos desarrollado un chatbot destinado a mejorar los diagnósticos de mantenimiento predictivo, simplificando para los técnicos la detección de fallas y la identificación de problemas dentro del equipo. Esta solución reduce significativamente el tiempo de inactividad al tiempo que mejora la eficiencia operativa general.

Las características clave de la solución incluyen:

Análisis y diagnóstico de datos de series temporales: el asistente procesa y analiza los datos de los sensores para ofrecer diagnósticos precisos, identificando patrones y anomalías para respaldar una resolución de problemas precisa y basada en datos. Solución de problemas guiada con conversaciones proactivas de varios turnos: el asistente conserva el historial de conversaciones para interacciones fluidas y conscientes del contexto. Está orientado a objetivos y se centra en encontrar la causa raíz de los problemas del equipo a través de un diálogo proactivo de múltiples turnos donde el sistema solicita al usuario preguntas específicas para recopilar información esencial para una resolución de problemas eficiente. Capacidades multimodales: los usuarios pueden cargar varios formatos (manuales, imágenes, videos y audio) a la base de conocimientos del asistente, que puede comprender y responder en estas modalidades. Esto se logra utilizando Claude 3 Haiku y Claude 3 Sonnet, potentes modelos multimodales disponibles a través de Amazon Bedrock. RAG multimodal avanzado con fusión de rangos recíprocos: la generación aumentada de recuperación multimodal (RAG) permite al asistente proporcionar respuestas que incorporan imágenes y texto de manuales de reparación. La fusión de rangos recíprocos garantiza que la información recuperada sea relevante y semánticamente alineada con la consulta del usuario. Barandillas para seguridad y cumplimiento: el asistente emplea Amazon Bedrock Guardrails para ayudar a mantener la seguridad, la precisión y la conformidad durante todo el proceso de diagnóstico. Estas barreras de seguridad incorporan filtros para información confidencial y contenido dañino, bloqueo de contenido inapropiado y pasos de validación para ayudar a prevenir recomendaciones erróneas.

En las siguientes secciones, describimos los requisitos previos clave para implementar esta solución y brindamos una descripción general completa de cada una de estas características clave, examinando su funcionalidad, implementación y cómo contribuyen a un diagnóstico más rápido, un tiempo de inactividad reducido y una eficiencia operativa general.

Requisitos previos

Para construir e integrar con éxito esta solución de mantenimiento predictivo, se deben implementar ciertos requisitos fundamentales. Estos requisitos previos son necesarios para garantizar que la solución se pueda implementar de manera efectiva y lograr el impacto previsto:

Identifique activos críticos para el mantenimiento predictivo: comience por determinar qué activos son más esenciales para sus operaciones y podrían causar interrupciones significativas si fallaran inesperadamente. Priorice los equipos con un historial de altos costos de reparación, averías frecuentes o un papel crítico en el proceso de producción. Recopile y registre datos procesables: configure un sistema para monitorear continuamente la vibración y la temperatura en intervalos de 1 minuto. Configure la transferencia de datos automatizada a la nube de AWS para un almacenamiento más seguro y un análisis eficiente, lo que permitirá que la solución genere información precisa para cada activo. Reúna manuales de reparación de equipos: obtenga manuales del fabricante de equipos originales (OEM) que detallen los requisitos de mantenimiento, los intervalos de servicio recomendados y los procedimientos seguros para cada activo. Agregue también el conocimiento institucional de los principales maquinistas. Esta información es vital para alinear los conocimientos predictivos con las necesidades de mantenimiento reales. Mantenga registros históricos de mantenimiento (opcional pero muy recomendable): mantenga registros precisos de las actividades de mantenimiento y órdenes de trabajo anteriores. Si bien es opcional, tener datos históricos ayuda a refinar los modelos predictivos y mejora la precisión del sistema al pronosticar fallas potenciales.

Una vez establecidas estas bases, las siguientes secciones exploran las diferentes funcionalidades disponibles en el chatbot para ofrecer un diagnóstico de causa raíz más rápido, más inteligente y más confiable.

Análisis de series temporales y conversación guiada sobre solución de problemas

El análisis de series temporales y la conversación guiada se dividen en seis pasos clave, como se muestra en la siguiente figura.

Flujo de trabajo de análisis de temperatura y vibraciones con verificación de estándares ISO

Los pasos son los siguientes:

El usuario carga un archivo Excel que contiene datos del sensor (tanto datos de vibración como de temperatura) en la aplicación Streamlit. Los datos se extraen mediante scripts auxiliares basados ​​en Python para la manipulación de datos, sentando las bases para análisis posteriores. El sistema traza los datos de temperatura y vibración a lo largo del tiempo utilizando Matplotlib, destacando las desviaciones de los patrones normales que indican un problema potencial con una línea vertical roja. Este paso de visualización garantiza que las anomalías sean claramente identificables. El sistema evalúa los datos de vibración comparándolos con los estándares de vibración ISO (ISO 20816-1), que establecen puntos de referencia internacionales para los niveles de vibración según la clase del equipo. Estos puntos de referencia, conocidos como zonas de evaluación, establecen umbrales fijos para la vibración medida como Velocity Root Mean Square (VRMS). VRMS representa la intensidad promedio de la vibración a lo largo del tiempo, lo que ayuda a determinar con precisión si un activo está funcionando normalmente o experimenta vibraciones anormales. Se crea una advertencia cuando el activo se mueve de la zona B a C. Se crea una alarma cuando el activo se mueve de la zona C a D.

def clasificado_vibración(número_clase, valor_vibración): # Umbrales de clasificación para cada clase de máquina si número_clase == "I": # Máquinas pequeñas (<15kW) si valor_vibración < 0,71: devuelve "A (Muy bueno)" si valor_vibración < 1,8: devuelve "B (Satisfactorio)" si valor_vibración < 4,5: devuelve "C (Advertencia)" else: devuelve "D (Alarma)" elif número_clase == "II": # Máquinas medianas (15–75kW) si valor_vibración < 1,12: devuelva "A (Muy bueno)" si valor_vibración < 2,8: devuelva "B (Satisfactorio)" si valor_vibración < 7,1: devuelva "C (Advertencia)" en caso contrario: devuelva "D (Alarma)" #### ….

Según los datos del sensor, el sistema clasifica los niveles de vibración para cada marca de tiempo como Muy Bueno, Satisfactorio, Insatisfactorio o Severo, proporcionando información sobre el estado del equipo. Del análisis se llega a la conclusión de que, por ejemplo, la vibración es normal, pero en un determinado período de tiempo se ha activado una alarma de alta temperatura. Se inicia una conversación guiada sobre solución de problemas utilizando Python para formular preguntas de diagnóstico iniciales basadas en el análisis. El proceso pasa a un modelo de lenguaje grande (LLM) generativo impulsado por IA, que actúa como un técnico virtual y participa en un diálogo de múltiples turnos para refinar aún más el proceso de diagnóstico. El LLM se adapta a las respuestas de los usuarios, de forma similar a una consulta con un profesional médico, y ofrece orientación específica para resolver el problema. Con la retención de memoria de respuestas anteriores, el LLM proporciona una solución de problemas más precisa y personalizada durante toda la interacción. Además, se implementan barreras de seguridad para mantener la conversación enfocada, brindando seguridad, idoneidad y relevancia, lo que en última instancia mejora la calidad y confiabilidad de la guía de diagnóstico proporcionada.

La siguiente captura de pantalla muestra un ejemplo de inicio de conversación guiada después de detectar una alarma de alta temperatura. Tenga en cuenta que el usuario no proporcionó ningún mensaje; la conversación fue iniciada completamente por el sistema basándose en los datos del sensor cargados.

Sesión interactiva de resolución de problemas entre el usuario y el chatbot de mantenimiento que analiza los problemas del transportador

La siguiente captura de pantalla muestra la interfaz de usuario de este asistente con la respuesta generada por LLM después de la conversación del ejemplo anterior.

Interfaz de chat de soporte técnico que muestra instrucciones completas de mantenimiento del transportador con pasos de inspección, ajuste y lubricación.

Como se ve en la captura de pantalla, las respuestas anteriores se almacenan, lo que permite que el sistema se base en cada respuesta para crear un diagnóstico personalizado más preciso. Este enfoque basado en la memoria garantiza que la conversación sobre solución de problemas siga siendo muy relevante y específica, mejorando la eficacia del asistente como asistente virtual para el diagnóstico de la causa raíz.

Capacidades multimodales

Para mejorar las capacidades de diagnóstico y brindar soporte integral, el sistema permite a los usuarios interactuar a través de múltiples modalidades de entrada. Esta flexibilidad garantiza que los técnicos puedan comunicarse utilizando el formato más adecuado a sus necesidades, ya sea imagen, audio o vídeo. Al utilizar IA generativa, el sistema puede analizar e integrar información de las tres modalidades, ofreciendo conocimientos más profundos y soluciones de resolución de problemas más efectivas.

El sistema admite las siguientes entradas multimodales:

Imagen: cargue imágenes de equipos o componentes específicos para análisis visual y detección de fallas. Audio: grabe y cargue descripciones de audio o sonidos de máquinas, lo que permite que el sistema transcriba y analice entradas verbales o ruidos inusuales. Video: proporcione videos que capturen el funcionamiento o las fallas del equipo, lo que permite el análisis cuadro por cuadro y el diagnóstico integrado de audio y video.

En las siguientes secciones, exploramos cómo cada una de estas entradas se procesa e integra en el flujo de trabajo de diagnóstico del sistema para ofrecer una solución de mantenimiento integral.

Análisis de imágenes para evaluación diagnóstica.

El asistente utiliza capacidades multimodales para analizar imágenes, lo que puede resultar particularmente útil cuando los técnicos necesitan cargar una fotografía de un componente degradado o que funciona mal. Utilizando un LLM multimodal como Claude Sonnet 3.5 de Anthropic en Amazon Bedrock, el sistema procesa la imagen y genera una descripción detallada que ayuda a comprender el estado del equipo. Por ejemplo, un operador podría cargar una imagen de un rodamiento desgastado y el asistente podría proporcionar un resumen textual de los patrones de desgaste visibles, como decoloración o grietas, lo que ayudaría a identificar el problema sin interpretación manual.

El flujo de trabajo consta de los siguientes pasos:

El usuario carga una imagen (por ejemplo, una foto de un componente desgastado) a través de la interfaz del asistente. La imagen cambia de tamaño o se procesa para cumplir con las restricciones de entrada del modelo, asegurándose de que cumpla con los límites de tamaño y resolución del archivo. La imagen se convierte al formato base64, lo que permite transmitirla de forma estandarizada como parte de la carga útil de entrada para el LLM multimodal. Se utiliza un mensaje predefinido para indicarle al modelo que describa la imagen, por ejemplo, "Describa cualquier defecto visible o anomalía en el componente que se muestra en esta imagen". El modelo genera una descripción basada en texto de la imagen. Por ejemplo, si la imagen cargada muestra un rodamiento con grietas en la superficie y decoloración, el modelo podría generar algo como: "El componente muestra signos de desgaste con grietas en la superficie visibles y decoloración relacionada con el calor".

La capacidad de analizar imágenes proporciona a los técnicos una forma intuitiva de diagnosticar problemas más allá de los datos del sensor. Este contexto visual, combinado con la base de conocimientos del asistente, permite acciones de mantenimiento más precisas y eficientes, lo que reduce el tiempo de inactividad y mejora la eficiencia operativa general.

Entradas de audio para procesamiento de voz en tiempo real

Además de las modalidades de imagen y texto, el chatbot también admite entradas de audio, lo que permite a los técnicos registrar sus observaciones, notas o hacer preguntas en tiempo real mediante la voz. Esto es particularmente útil en escenarios donde los técnicos pueden no tener el tiempo o la capacidad para escribir, como cuando están en el sitio o trabajando de manera práctica con el equipo.

El siguiente diagrama ilustra cómo funciona el procesamiento de audio.

Canal de procesamiento de audio que muestra el almacenamiento S3, la función Lambda y la integración de Amazon Transcribe

El flujo de trabajo consta de los siguientes pasos:

El técnico puede grabar un clip de audio, como una nota de voz que describa el estado actual del equipo o una pregunta sobre un problema de mantenimiento en particular. El sistema admite grabaciones de audio rápidas directamente dentro de la interfaz del asistente. Una vez grabado el audio, se procesa a través de un sistema de reconocimiento automático de voz (ASR) (Amazon Transcribe), que transcribe las palabras habladas en texto. La transcripción proporciona una representación precisa del contenido hablado, que se utiliza como entrada para análisis o conversaciones posteriores. Después de la transcripción, el texto se presenta al técnico, lo que le permite revisar la transcripción y asegurarse de que capture correctamente su intención. Cuando la transcripción está disponible, los LLM inician y guían la conversación, lo que permite al técnico hacer preguntas de seguimiento o solicitar análisis adicionales. Por ejemplo, podrían preguntar: "Según este audio, ¿puede recomendar los siguientes pasos para resolver el problema?". El texto transcrito se pasa al LLM junto con la pregunta del usuario, donde se generan las respuestas con las barandillas de Amazon Bedrock. Estas barreras garantizan que las respuestas sigan siendo relevantes, apropiadas y seguras, brindando información u orientación enfocada y confiable durante toda la interacción. El sistema también conserva el contexto de la conversación, lo que permite interacciones de varios turnos. Esto significa que las preguntas adicionales que hace el técnico se enmarcan en el contexto de la grabación y transcripción de audio inicial, lo que permite respuestas más precisas y una resolución de problemas continua.

El siguiente código Python demuestra una función de utilidad para transcribir archivos de audio mediante Amazon Transcribe. Esta función carga un archivo de audio en un depósito de Amazon Simple Storage Service (Amazon S3), activa una transcripción a través de un punto final personalizado de Amazon API Gateway y recupera el resultado de la transcripción:

def transcribe_audio(audio_filename): file_size = os.path.getsize(audio_filename) # Cargue el archivo de audio a un depósito S3 nombre_archivo = read_key_value(config_filename, "S3_bucket_name") s3 = boto3.client('s3') s3.upload_file(audio_filename, bucket_name, audio_filename) s3_uri = f's3://{bucket_name}/{audio_filename}' # Establece el punto final de API url="https:" + read_key_value(config_filename, "api_endpoint_amazon_transcribe") # Realiza la solicitud POST a tu puerta de enlace API Response = request.post(url, json={'audio_file_uri': s3_uri}) result = Response.json() return result.get('transcript_uri', 'No se encontró ninguna transcripción.')

La siguiente es una función de AWS Lambda diseñada para procesar trabajos de transcripción de audio. Esta función utiliza Amazon Transcribe para manejar archivos de audio proporcionados a través de identificadores uniformes de recursos (URI) de S3, monitorea el estado del trabajo de transcripción y devuelve el URI de transcripción resultante. La función está optimizada para tareas de transcripción asincrónicas y un manejo sólido de errores:

import boto3 import json import time transcribe = boto3.client('transcribe') def lambda_handler(event, context): # Registra los datos del evento entrante print("Evento recibido: " + json.dumps(event, indent=2)) try: # Extrae el cuerpo del evento body = json.loads(event.get('body', '{}')) # Extrae el audio_file_uri del cuerpo audio_file_uri = body.get('audio_file_uri') if not audio_file_uri: return { 'statusCode': 400, 'body': json.dumps({'error': 'falta audio_file_uri'}) } # Suponiendo que el URI de S3 tiene el formato s3://bucket/key s3_bucket = audio_file_uri.split('/')[2]# Extrae el nombre del depósito s3_key = '/'.join(audio_file_uri.split('/')[3:]) # Extrae la clave job_name = f"transcription-job-{int(time.time())}" # Inicia el trabajo de transcripción respuesta = transcribe.start_transcription_job( TranscriptionJobName=job_name, Media={'MediaFileUri': audio_file_uri}, MediaFormat=s3_key.split('.')[-1], # Extraer formato de archivo LanguageCode="en-US" ) # Encuesta para completar… mientras que es Verdadero: status = transcribe.get_transcription_job(TranscriptionJobName=job_name) if status['TranscriptionJob']['TranscriptionJobStatus'] in ['COMPLETED', 'FAILED']: break time.sleep(5) if status['TranscriptionJob']['TranscriptionJobStatus'] == 'COMPLETADO': transcript_uri = status['TranscriptionJob']['Transcript']['TranscriptFileUri'] return { 'statusCode': 200, 'body': json.dumps({'transcript_uri': transcript_uri}) } else: return { 'statusCode': 500, 'body': json.dumps({'error': 'Error en el trabajo de transcripción.'}) } excepto excepción como e: # Manejar cualquier otro error return { 'statusCode': 500, 'body': json.dumps({'error': str(e)}) }

Este código captura un archivo de audio de un URI de S3, lo transcribe mediante Amazon Transcribe y devuelve el resultado de la transcripción. La transcripción ahora se puede utilizar para interacciones con asistentes, lo que permite a los técnicos documentar sus observaciones verbalmente y recibir comentarios u orientación instantánea. Agiliza el proceso de resolución de problemas, especialmente en entornos donde la interacción con manos libres es beneficiosa.

Procesamiento de datos de vídeo con análisis multimodal.

Además de admitir entradas de imagen y audio, el sistema también puede procesar datos de vídeo, lo que resulta muy beneficioso cuando los técnicos necesitan orientación visual o quieren proporcionar evidencia detallada del comportamiento del equipo. Por ejemplo, los técnicos pueden cargar vídeos que muestren el funcionamiento anormal de la máquina, lo que permite al asistente analizar las imágenes con fines de diagnóstico. Además, los técnicos podrían subir videos de capacitación y obtener rápidamente la información más relevante, pudiendo hacer preguntas sobre cómo se realizan ciertos procedimientos.

Para respaldar esta funcionalidad, desarrollamos un flujo de trabajo de procesamiento de video personalizado que extrae componentes visuales y de audio para el análisis multimodal. Si bien este enfoque era necesario en el momento del desarrollo, avances más recientes, como las capacidades nativas de comprensión de video de Amazon Nova en Amazon Bedrock, ahora ofrecen una alternativa optimizada y escalable para las organizaciones que buscan integrar una funcionalidad similar.

La siguiente figura muestra el flujo de trabajo de procesamiento de video.

Diagrama de arquitectura técnica para procesamiento de video.

El flujo de trabajo consta de los siguientes pasos clave:

El técnico sube un vídeo a través de la interfaz de la aplicación Streamlit. Si el vídeo contiene instrucciones de voz, se extrae el audio y se obtiene su transcripción utilizando el mismo método ASR mencionado anteriormente, asegurándose de que los datos de audio se utilicen con fines de diagnóstico. El sistema extrae fotogramas de vídeo individuales a intervalos regulares (por ejemplo, cada tres segundos) y los convierte en fotogramas codificados en base64. Esto proporciona un procesamiento y análisis eficiente del contenido del vídeo. Cada fotograma extraído pasa a través de un LLM multimodal, que genera títulos para los fotogramas. Esto ayuda a resumir el contenido visual del vídeo, centrándose en aspectos clave como las condiciones del equipo, el desgaste o los movimientos anormales. Para mantener la alineación entre los fotogramas de vídeo y el contenido hablado, el sistema utiliza las marcas de tiempo de extracción de fotogramas y las asigna a los intervalos de tiempo correspondientes en el audio transcrito. Esto facilita una interpretación multimodal coherente a través de entradas visuales y auditivas. El sistema actúa como un enrutador basado en LLM, lo que significa que es responsable de dirigir las consultas a la ruta de procesamiento adecuada en función de su clasificación. Un enrutador determina el tipo de consulta y la enruta en consecuencia para proporcionar una respuesta precisa y eficiente. En este contexto, el sistema clasifica la consulta del técnico en función de su interacción con el vídeo. Las consultas pueden clasificarse en diferentes categorías, como por ejemplo: Título del vídeo: si el técnico solicita un resumen o una descripción del contenido del vídeo. Pregunta-Respuesta: si el técnico hace preguntas específicas basadas en el video (por ejemplo, "¿Cuál es el problema con este componente según el video?"). Otro: si la consulta no encaja en las categorías estándar pero aún requiere procesamiento (por ejemplo, solicitudes más generales). Cuando la consulta y los subtítulos están listos, el sistema utiliza el LLM para generar respuestas basadas en el contenido de audio y video procesado. Esto permite que el asistente brinde respuestas precisas y contextuales sobre el estado del equipo o los próximos pasos para la resolución. Las respuestas generadas guían a los técnicos a través de los pasos de solución de problemas, con instrucciones detalladas sobre cómo resolver el problema detectado basándose tanto en las entradas visuales como en las de audio. Las respuestas incluyen barandillas integradas para ayudar a mantener la calidad, la seguridad y la relevancia en la orientación.

Después de extraer los subtítulos y el audio del video, se pueden procesar sin problemas utilizando los mismos métodos descritos para las modalidades de imagen y audio discutidas anteriormente en esta publicación.

La capacidad de cargar videos de capacitación o inspección, hacer que el sistema los analice y resuma y responda a las consultas de los técnicos hace que el chatbot sea una herramienta invaluable para el mantenimiento predictivo. Al combinar múltiples tipos de datos (video, audio e imágenes), el chatbot brinda soporte de diagnóstico integral, lo que reduce significativamente el tiempo de inactividad y mejora la eficiencia.

RAG multimodal para una determinación de resolución integral

RAG multimodal permite a los técnicos interactuar con la base de datos de documentos manuales y archivos de formación o diagnósticos previos. Al permitir la multimodalidad, los técnicos pueden acceder no solo al texto de los manuales sino también a diagramas o imágenes relevantes que les ayudan a diagnosticar y resolver problemas. La siguiente captura de pantalla muestra un ejemplo de esta funcionalidad.

Ejemplo de interfaz de usuario de RAG multimodal

Los siguientes pasos describen paso a paso cómo el sistema procesa datos de texto e imágenes para facilitar la recuperación integral y la generación de respuestas:

Crear incrustaciones de documentos

El primer paso consiste en extraer texto e imágenes de documentos como manuales en PDF para generar incrustaciones, que ayudan a recuperar información relevante más adelante. El siguiente diagrama muestra cómo funciona este proceso.

Arquitectura de análisis de documentos PDF con procesamiento paralelo para extracción de texto y análisis de imágenes

El flujo de trabajo consta de los siguientes pasos:

Los datos de texto se extraen de cada página del PDF utilizando la biblioteca PyMuPDF. Esto permite que la solución capture tanto datos estructurados (como tablas) como contenido no estructurado para incrustarlos. Cada segmento de texto extraído se convierte en incrustaciones utilizando el modelo Amazon Titan v2 y se almacena en las bases de conocimiento de Amazon Bedrock para una recuperación eficiente. Las imágenes también se extraen de cada página del PDF de manera similar, con filtrado para eliminar imágenes pequeñas o irrelevantes. Cada imagen es procesada por un LLM multimodal como Claude Sonnet 3.5 de Anthropic en Amazon Bedrock para generar una descripción detallada, que incluye elementos visibles y contexto del texto circundante en la página. El sistema guarda estas imágenes y genera incrustaciones basadas en las descripciones. Los metadatos de la imagen recopilados incluyen: Nombre de la imagen Ubicación de la imagen dentro del PDF Incrustación de la descripción de la imagen Texto contextual alrededor de la imagen en el documento

Al capturar no sólo la descripción de la imagen sino también el texto contextual circundante, el sistema obtiene una comprensión más completa de la relevancia y el significado de la imagen. Este enfoque mejora la precisión de la recuperación y garantiza que las imágenes se interpreten correctamente dentro de su contexto documental más amplio.

Recuperación y generación

Para la recuperación y generación, el sistema diferencia entre recuperación de texto e imagen para garantizar que tanto el contexto del texto semántico como la información visual se incorporen de manera efectiva en la respuesta final. Este enfoque permite a los técnicos recibir una respuesta más integral que utiliza tanto información escrita como ayudas visuales, lo que mejora el proceso general de resolución de problemas.

Recuperación y generación de texto.

Comenzando con el texto, utilizamos la fusión de rangos recíprocos, un método que garantiza que los resultados recuperados sean relevantes y también estén alineados semánticamente con la consulta del usuario. La fusión de rangos recíprocos opera transformando una consulta de un solo usuario en múltiples consultas relacionadas generadas por un LLM, cada una de las cuales recupera un conjunto diverso de documentos. Estos documentos se reclasifican utilizando el algoritmo de fusión de rangos recíprocos, asegurándose de que se priorice la información más importante. El siguiente diagrama ilustra este proceso.

Flujo de trabajo de respuesta a preguntas basadas en mensajes mediante almacenamiento vectorial, clasificación de documentos y modelo de lenguaje grande

El flujo de trabajo consta de los siguientes pasos:

El usuario ingresa una pregunta o consulta. Por ejemplo, "¿Por qué el motor de mi transportador vibra de manera anormal?" La consulta se envía a un LLM junto con un mensaje para generar múltiples consultas de búsqueda relacionadas. Al generar estas consultas relacionadas, el sistema proporciona una recuperación completa de información. A modo de ejemplo, la consulta inicial del usuario se puede dividir en: Consulta 1: “¿Cuáles son las posibles causas de vibraciones anormales en las cintas transportadoras?” Consulta 2: "¿Cuáles son algunos pasos para la resolución de problemas del motor del transportador debido a altos niveles de vibración?" Consulta 3: "¿Cuáles son los umbrales de vibración y las configuraciones de alarma para los sistemas transportadores?" Consulta 4: "¿Cuál es el historial de mantenimiento de los motores de transportadores con problemas de vibración?"

# Inicializar BedrockChat model_kwargs = { "max_tokens": max_tokens, "temperature": temperatura, "top_k": top_k, "top_p": top_p, "stop_sequences": ["nnHuman"], } chat_claude_v3 = BedrockChat(model_id=model_id, model_kwargs=model_kwargs) # Generar plantilla de consultas = """Eres un asistente útil que genera múltiples consultas de búsqueda basadas en una única consulta de entrada. Genera múltiples consultas de búsqueda relacionadas con: {pregunta}. Salida (3 consultas):""" Prompt_rag_fusion = ChatPromptTemplate.from_template(template) generate_queries_pipeline = (prompt_rag_fusion| chat_claude_v3| StrOutputParser()) raw_queries = generate_queries_pipeline.invoke({"pregunta": pregunta})

Las consultas generadas se envían a un recuperador de búsqueda semántica para encontrar el documento relevante en la base de datos vectorial. Para cada consulta, el recuperador produce una lista clasificada de documentos relevantes según la similitud de la incrustación. Los resultados clasificados se reclasifican utilizando la fórmula de fusión de rangos recíprocos (RRF) (consulte la siguiente figura). Para cada consulta q en el conjunto Q, la fórmula evalúa qué tan bien se clasifica un documento d para esa consulta específica (representada como rq(d)). La adición de la constante k ayuda a controlar el impacto de las consultas individuales en la puntuación general, porque ayuda a evitar que una sola consulta tenga una influencia desproporcionadamente grande en la clasificación final, proporcionando una contribución más equilibrada de las consultas relacionadas. Las puntuaciones se suman. Esto significa que si un documento d ocupa un lugar destacado en varias consultas relacionadas, recibe una puntuación RRF más alta.

Ecuación recíproca de Rank Fusion para la puntuación de relevancia del documento

El modelo generativo utiliza los documentos mejor clasificados para producir la respuesta final, proporcionando orientación sobre el diagnóstico de la causa raíz de las vibraciones anormales en la cinta transportadora.

Recuperación y generación de imágenes.

El sistema sigue un proceso de recuperación separado para consultas basadas en imágenes, asegurándose de que la información visual también se incorpore a la respuesta. La siguiente figura muestra cómo funciona este proceso.

Diagrama de recuperación de imágenes basada en incrustaciones con filtrado de similitud de coseno

El flujo de trabajo consta de los siguientes pasos:

Cuando el usuario ingresa una consulta, el sistema primero convierte esta consulta en una incrustación, que es una representación numérica que captura el significado semántico de la consulta. Esta incrustación sirve como punto de referencia para identificar descripciones de imágenes relacionadas. El sistema calcula la similitud del coseno entre la incrustación de solicitud (creada en el paso anterior) y las incrustaciones de descripciones de imágenes almacenadas en la base de datos para recuperar las imágenes más relevantes. Para este ejemplo, una consulta sobre vibraciones del motor del transportador, las imágenes relevantes pueden incluir diagramas de componentes del motor, representaciones visuales de patrones de vibración o imágenes que muestren la desalineación del equipo. Después de calcular las puntuaciones de similitud, el sistema filtra los resultados para retener sólo las imágenes que tienen una puntuación suficientemente alta. El umbral para este filtrado se establece empíricamente en 0,4 para garantizar que solo se consideren para un análisis posterior las imágenes más relevantes, que estén estrechamente alineadas con la consulta del usuario. Este paso ayuda a evitar la inclusión de imágenes irrelevantes o marginalmente relacionadas, manteniendo la precisión de la respuesta.

Los pasos descritos anteriormente se implementan en el siguiente fragmento de código, que demuestra cómo procesar consultas basadas en imágenes para su recuperación y puntuación de relevancia:

### df es el marco de datos que contiene las incrustaciones de vectores para las imágenes que contienen vectores [imagen, fuente, resumen] = df['summary'].tolist() # Obtener la incrustación de la pregunta formulada por el usuario query_embedding = get_text_embedding(text_description=question, embd_model_id=embd_model_id) #Calcular la similitud del coseno entre la incrustación de la consulta y los vectores de las imágenes cosine_scores = cosine_similarity([query_embedding], vectores)[0]df_scores = pd.Series(cosine_scores, index=df.index) # Crea una serie con estos puntajes y los ID o nombres de imágenes correspondientes multi_index = pd.MultiIndex.from_frame(df[['image', 'source']]) df_scores = pd.Series(cosine_scores, index=multi_index) #retiene solo los puntajes que se consideran suficientemente altos (se determinó 0.4 empíricamente) filtered_series = df_scores[df_scores> 0.40]

El paso final implica utilizar el conjunto de imágenes filtradas para contribuir a la generación de respuestas. En el caso de diagnosticar vibraciones anormales en el motor de un transportador, el sistema puede incluir diagramas de posibles modos de falla o guías visuales para los pasos de solución de problemas junto con la explicación textual.

Conclusión

Se espera que la implementación de un asistente generativo impulsado por IA para el mantenimiento predictivo mejore el diagnóstico al ofrecer a los mecánicos una guía clara y práctica cuando se activa una alarma, reduciendo significativamente la incidencia de causas fundamentales indeterminadas. Esta mejora puede ayudar a los mecánicos a abordar con mayor confianza y precisión los problemas del equipo, mejorando su capacidad para actuar con prontitud y eficacia.

Al optimizar los diagnósticos y brindar recomendaciones específicas para la solución de problemas, esta solución no solo puede minimizar los retrasos operativos sino también promover una mayor confiabilidad de los equipos y reducir el tiempo de inactividad en los centros logísticos de Amazon. Además, el diseño adaptable del asistente lo hace adecuado para aplicaciones de mantenimiento predictivo más amplias en diversas industrias, desde la fabricación hasta la logística y la atención médica. Aunque inicialmente se desarrolló para los centros logísticos de Amazon, la solución tiene el potencial de escalar más allá del entorno de Amazon, ofreciendo un enfoque versátil impulsado por IA para mejorar la confiabilidad y el rendimiento de los equipos.

Las mejoras futuras podrían ampliar aún más el impacto de la solución, incluida la ampliación de las capacidades de recuperación para abarcar videos junto con imágenes, capacitar a un agente inteligente para recomendar los siguientes pasos óptimos en función de diagnósticos anteriores exitosos e implementar funciones de asignación de tareas automatizadas que generan dinámicamente órdenes de trabajo, especifican recursos y asignan tareas según los resultados del diagnóstico. Mejorar la inteligencia de la solución para admitir una gama más amplia de escenarios de mantenimiento predictivo podría hacerla más versátil e impactante en diversas industrias.

Dé el primer paso hacia la transformación de sus operaciones de mantenimiento explorando estas capacidades avanzadas; contáctenos hoy para conocer cómo estas innovaciones pueden impulsar la eficiencia y la confiabilidad en su organización.

Sobre los autores

Carla Lorente es líder senior de IA de generación en AWS y ayuda a los equipos internos a transformar procesos complejos en flujos de trabajo eficientes impulsados ​​por IA. Con doble titulación del MIT (una maestría en Ciencias de la Computación y un MBA), Carla opera en la intersección de la ingeniería y la estrategia, traduciendo la IA de vanguardia en soluciones escalables que generan un impacto mensurable en AWS.

Yingwei Yu es gerente de ciencias aplicadas en Generative AI Innovation Center, AWS, donde aprovecha el aprendizaje automático y la inteligencia artificial generativa para impulsar la innovación en todas las industrias. Con un doctorado en Ciencias de la Computación de la Universidad Texas A&M y años de experiencia laboral, Yingwei aporta una amplia experiencia en la aplicación de tecnologías de vanguardia a aplicaciones del mundo real.

Parth Patwa es científico de datos en el Centro de Innovación de IA Generativa de Amazon Web Services. Es coautor de artículos de investigación en los principales lugares de IA/ML y tiene más de 1500 citas.

Aude Genevay es científica aplicada sénior en el Centro de Innovación de IA Generativa, donde ayuda a los clientes a abordar desafíos comerciales críticos y crear valor utilizando la IA generativa. Tiene un doctorado en aprendizaje automático teórico y disfruta convertir la investigación de vanguardia en soluciones del mundo real.