Cómo PDI creó un sistema RAG de nivel empresarial para aplicaciones de IA con AWS

PDI Technologies es un líder mundial en las industrias de venta minorista de conveniencia y venta mayorista de petróleo. Ayudan a empresas de todo el mundo a aumentar la eficiencia y la rentabilidad conectando de forma segura sus datos y operaciones. Con 40 años de experiencia, PDI Technologies ayuda a los clientes en todos los aspectos de su negocio, desde comprender el comportamiento del consumidor hasta simplificar los ecosistemas tecnológicos en toda la cadena de suministro.

Las empresas enfrentan el importante desafío de hacer que sus bases de conocimientos sean accesibles, buscables y utilizables mediante sistemas de inteligencia artificial. Los equipos internos de PDI Technologies estaban luchando con información dispersa en sistemas dispares, incluidos sitios web, páginas de Confluence, sitios de SharePoint y varias otras fuentes de datos. Para abordar esto, PDI Technologies creó PDI Intelligence Query (PDIQ), un asistente de inteligencia artificial que brinda a los empleados acceso al conocimiento de la empresa a través de una interfaz de chat fácil de usar. Esta solución está impulsada por un sistema personalizado de recuperación de generación aumentada (RAG), creado en Amazon Web Services (AWS) utilizando tecnologías sin servidor. La construcción del PDIQ requirió abordar los siguientes desafíos clave:

Extracción automática de contenido de diversas fuentes con diferentes requisitos de autenticación. Necesidad de flexibilidad para seleccionar, aplicar e intercambiar el modelo de lenguaje grande (LLM) más adecuado para diversos requisitos de procesamiento. Procesamiento e indexación de contenido para búsqueda semántica y recuperación contextual. Creación de una base de conocimiento que permita respuestas de IA precisas y relevantes. Actualización continua de información mediante rastreo programado. Respaldo de contexto específico de la empresa en interacciones de IA.

En esta publicación, analizamos la arquitectura y el flujo del proceso de PDIQ, enfocándonos en los detalles de implementación y los resultados comerciales que ha ayudado a PDI a lograr.

Arquitectura de la solución

En esta sección, exploramos el diseño integral de extremo a extremo de PDIQ. Examinamos el proceso de ingesta de datos desde el procesamiento inicial hasta el almacenamiento y las capacidades de búsqueda de usuarios, así como el marco de seguridad de confianza cero que protege a los usuarios clave a lo largo de sus interacciones con la plataforma. La arquitectura consta de estos elementos:

Programador: Amazon EventBridge mantiene y ejecuta el programador del rastreador. Rastreadores: AWS Lambda invoca rastreadores que Amazon Elastic Container Service (Amazon ECS) ejecuta como tareas. Amazon DynamoDB: conserva las configuraciones del rastreador y otros metadatos, como la ubicación de las imágenes y los títulos de Amazon Simple Storage Service (Amazon S3). Amazon S3: todos los documentos de origen se almacenan en Amazon S3. Los eventos de Amazon S3 desencadenan el flujo descendente para cada objeto que se crea o elimina. Amazon Simple Notification Service (Amazon SNS): recibe notificaciones de eventos de Amazon S3. Amazon Simple Queue Service (Amazon SQS): suscrito a Amazon SNS para mantener las solicitudes entrantes en una cola. AWS Lambda: maneja la lógica empresarial para fragmentar, resumir y generar incrustaciones de vectores. Amazon Bedrock: proporciona acceso API a los modelos básicos (FM) utilizados por PDIQ: Edición compatible con Amazon Aurora PostgreSQL: almacena incrustaciones de vectores.

El siguiente diagrama es la arquitectura de la solución.

A continuación, revisamos cómo PDIQ implementa un modelo de seguridad de confianza cero con control de acceso basado en roles para dos personas clave:

Los administradores configuran bases de conocimiento y rastreadores a través de grupos de usuarios de Amazon Cognito integrados con el inicio de sesión único empresarial. Las credenciales del rastreador se cifran en reposo mediante AWS Key Management Service (AWS KMS) y solo se puede acceder a ellas dentro de entornos de ejecución aislados. Los usuarios finales acceden a bases de conocimiento basadas en permisos de grupo validados en la capa de aplicación. Los usuarios pueden pertenecer a varios grupos (como recursos humanos o cumplimiento) y cambiar de contexto para consultar conjuntos de datos apropiados para su función.

Flujo de proceso

En esta sección, revisamos el flujo del proceso de un extremo a otro. Lo desglosamos por secciones para profundizar en cada paso y explicar la funcionalidad.

Rastreadores

El administrador configura los rastreadores para recopilar datos de una variedad de fuentes de las que depende PDI. Los rastreadores hidratan los datos en la base de conocimientos para que los usuarios finales puedan recuperar esta información. PDIQ actualmente admite las siguientes configuraciones de rastreador:

Rastreador web: al utilizar Puppeteer para la automatización del navegador sin cabeza, el rastreador convierte páginas web HTML al formato Markdown mediante Turndown. Al seguir los enlaces integrados en el sitio web, el rastreador puede capturar el contexto completo y las relaciones entre las páginas. Además, el rastreador descarga activos como archivos PDF e imágenes conservando la referencia original y ofrece a los usuarios opciones de configuración como la limitación de velocidad. Rastreador de Confluence: este rastreador utiliza la API REST de Confluence con acceso autenticado para extraer contenido de la página, archivos adjuntos e imágenes incrustadas. Preserva la jerarquía y las relaciones de las páginas, maneja elementos especiales de Confluence, como cuadros de información, notas y muchos más. Rastreador de Azure DevOps: PDI utiliza Azure DevOps para administrar su base de código, realizar un seguimiento de las confirmaciones y mantener la documentación del proyecto en un repositorio centralizado. PDIQ utiliza la API REST de Azure DevOps con OAuth o autenticación de token de acceso personal (PAT) para extraer esta información. El rastreador de Azure DevOps conserva la jerarquía del proyecto, las relaciones de sprint y la estructura del trabajo pendiente y también asigna las relaciones de los elementos de trabajo (como elementos primarios/secundarios o vinculados), proporcionando así una vista completa del conjunto de datos. Rastreador de SharePoint: utiliza la API de Microsoft Graph con autenticación OAuth para extraer bibliotecas de documentos, listas, páginas y contenido de archivos. El rastreador procesa documentos de MS Office (Word, Excel, PowerPoint) en texto con capacidad de búsqueda y mantiene el historial de versiones de los documentos y los metadatos de permisos.

Al crear configuraciones de rastreadores independientes, PDIQ ofrece una fácil extensibilidad a la plataforma para configurar rastreadores adicionales a pedido. También ofrece la flexibilidad a los usuarios administradores para configurar los ajustes de sus respectivos rastreadores (como frecuencia, profundidad o límites de velocidad).

La siguiente figura muestra la interfaz de usuario de PDIQ para configurar la base de conocimientos.

La siguiente figura muestra la interfaz de usuario de PDI para configurar su rastreador (como Confluence).

La siguiente figura muestra la interfaz de usuario de PDIQ para programar rastreadores.

Manejo de imágenes

Los datos rastreados se almacenan en Amazon S3 con etiquetas de metadatos adecuadas. Si la fuente está en formato HTML, la tarea convierte el contenido en archivos de rebajas (.md). Para estos archivos de rebajas, se realiza un paso de optimización adicional para reemplazar las imágenes en el documento con la ubicación de referencia de Amazon S3. Los beneficios clave de este enfoque incluyen:

PDI puede usar claves de objeto S3 para hacer referencia única a cada imagen, optimizando así el proceso de sincronización para detectar cambios en los datos de origen. Puede optimizar el almacenamiento reemplazando imágenes con subtítulos y evitando la necesidad de almacenar imágenes duplicadas. Proporciona la capacidad de hacer que el contenido de las imágenes se pueda buscar y relacionar con el contenido del texto en el documento. Inyecta sin problemas imágenes originales al responder a la consulta del usuario.

El siguiente es un archivo de rebajas de muestra donde las imágenes se reemplazan con la ubicación del archivo S3:

![image-20230113-074652](https:// amzn-s3-demo-bucket.s3.amazonaws.com/kb/123/file/attachments/12133171243_image-20230113-074652.png)

Procesamiento de documentos

Este es el paso más crítico del proceso. El objetivo clave de este paso es generar incrustaciones de vectores para que puedan usarse para la comparación de similitudes y la recuperación efectiva basada en la consulta del usuario. El proceso sigue varios pasos, comenzando con los subtítulos de las imágenes, luego la fragmentación del documento, la generación de resúmenes y la generación de incrustaciones. Para subtitular las imágenes, PDIQ escanea los archivos de rebajas para localizar etiquetas de imágenes. Para cada una de estas imágenes, PDIQ escanea y genera un título de imagen que explica el contenido de la imagen. Este título se vuelve a inyectar en el archivo de rebajas, junto a la etiqueta, enriqueciendo así el contenido del documento. Este enfoque ofrece una capacidad de búsqueda contextual mejorada. PDIQ mejora el descubrimiento de contenido al incorporar información extraída de imágenes directamente en los archivos de rebajas originales. Este enfoque garantiza que el contenido de la imagen se convierta en parte del texto que se puede buscar, lo que permite una recuperación del contexto más rica y precisa durante la búsqueda y el análisis. Este enfoque también ahorra costes. Para evitar llamadas de inferencia LLM innecesarias para exactamente las mismas imágenes, PDIQ almacena metadatos de imágenes (ubicación del archivo y subtítulos generados) en Amazon DynamoDB. Este paso permite la reutilización eficiente de subtítulos generados previamente, eliminando la necesidad de realizar repetidas llamadas de generación de subtítulos a LLM.

El siguiente es un ejemplo de un mensaje de título de imagen:

Eres un asistente profesional de subtítulos de imágenes. Su tarea es proporcionar descripciones claras, objetivas y objetivas de las imágenes. Concéntrese en describir elementos, objetos y escenas visibles de manera neutral y adecuada.

El siguiente es un fragmento del archivo Markdown que contiene la etiqueta de imagen, el título generado por LLM y la ubicación del archivo S3 correspondiente:

![image-20230818-114454: La imagen muestra una notificación de consejo de seguridad en la pantalla de una computadora. La notificación se titula "Consejo de seguridad" y aconseja al usuario que utilice contraseñas generadas para mantener sus cuentas seguras. La contraseña sugerida, "2m5oFX#g&tLRMhN3", se muestra en un cuadro verde. Debajo de la contraseña sugerida, hay una sección denominada "Muy segura", que indica la seguridad de la contraseña. La longitud de la contraseña está establecida en 16 caracteres e incluye letras minúsculas, letras mayúsculas, números y símbolos. También hay un botón "Descartar" para cerrar la notificación. Debajo de la sección de contraseñas, hay un enlace para "Ver historial de contraseñas". La parte inferior de la imagen muestra iconos de navegación para "Vault", "Generador", "Alertas" y "Cuenta". El icono "Generador" está resaltado en rojo.] (https://amzn-s3-demo-bucket.s3.amazonaws.com/kb/ABC/file/attachments/12133171243_image-20230818-114454.png)

Ahora que a los archivos de rebajas se les inyectan títulos de imágenes, el siguiente paso es dividir el documento original en partes que quepan en la ventana contextual del modelo de incrustaciones. PDIQ utiliza el modelo Amazon Titan Text Embeddings V2 para generar vectores y almacenarlos en Aurora PostgreSQL-Compatible Serverless. Según las pruebas de precisión internas y las mejores prácticas de fragmentación de AWS, PDIQ realiza la fragmentación de la siguiente manera:

70% de los tokens para contenido 10% se superponen entre fragmentos 20% para tokens de resumen

Utilizando la lógica de fragmentación de documentos del paso anterior, el documento se convierte en incrustaciones de vectores. El proceso incluye:

Calcular parámetros de fragmentos: determine el tamaño y la cantidad total de fragmentos necesarios para el documento según el cálculo del 70 %. Generar resumen de documento: utilice Amazon Nova Lite para crear un resumen de todo el documento, limitado por la asignación de token del 20 %. Este resumen se reutiliza en todos los fragmentos para proporcionar un contexto coherente. Fragmentar y anteponer resumen: divida el documento en fragmentos superpuestos (10%), con el resumen antepuesto en la parte superior. Generar incrustaciones: utilice Amazon Titan Text Embeddings V2 para generar incrustaciones de vectores para cada fragmento (resumen más contenido), que luego se almacena en el almacén de vectores.

Al diseñar un enfoque personalizado para generar una sección de resumen encima de todos los fragmentos, PDIQ garantiza que cuando un fragmento en particular coincida según una búsqueda de similitud, el LLM tenga acceso al resumen completo del documento y no solo al fragmento que coincidió. Este enfoque enriquece la experiencia del usuario final, lo que resulta en un aumento de la tasa de aprobación de precisión del 60 % al 79 %.

El siguiente es un ejemplo de una solicitud de resumen:

Eres un asistente especializado en resúmenes de documentos con experiencia en contenido comercial y técnico. Su tarea es crear resúmenes concisos y ricos en información que: Preservar todos los datos cuantificables (números, porcentajes, métricas, fechas, cifras financieras) Resaltar terminología comercial clave y conceptos específicos de dominio Extraer entidades importantes (personas, organizaciones, productos, ubicaciones) Identificar relaciones críticas entre conceptos Mantener precisión objetiva sin agregar interpretaciones Centrarse en extraer información que sería más valiosa para: Responder preguntas comerciales específicas Respaldar la toma de decisiones basada en datos Permitir la recuperación de información precisa en un sistema RAG El resumen debe ser completo pero conciso, priorizando hechos específicos sobre descripciones generales. Incluya tablas, listas o datos estructurados en un formato que preserve sus relaciones. Asegúrese de que todos los términos técnicos, acrónimos y vocabulario especializado se conserven exactamente como están escritos.

El siguiente es un ejemplo de texto resumido, disponible en cada fragmento:

### Resumen: Proceso de creación de usuarios de PLC y restablecimiento de contraseña **Descripción general del documento:** Este documento proporciona instrucciones para crear nuevos usuarios y restablecer contraseñas **Instrucciones clave:** {Abreviado para ilustración del blog} Este resumen captura los pasos, requisitos y entidades esenciales involucrados en el proceso de creación de usuarios de PLC y restablecimiento de contraseñas mediante Jenkins. —

El fragmento 1 tiene un resumen en la parte superior seguido de detalles de la fuente:

{Texto resumido desde arriba} Este resumen captura los pasos, requisitos y entidades esenciales involucrados en el proceso de creación de usuarios de PLC y restablecimiento de contraseña utilizando Jenkins. título: 2. Proceso de creación de usuario de PLC y restablecimiento de contraseña. [imagen-20230818-114454: La imagen muestra una notificación de consejo de seguridad en la pantalla de una computadora. La notificación se titula "Consejo de seguridad" y aconseja al usuario que utilice contraseñas generadas para mantener sus cuentas seguras. La contraseña sugerida, "2m5oFX#g&tLRMhN3", se muestra en un cuadro verde. Debajo de la contraseña sugerida, hay una sección denominada "Muy segura", que indica la seguridad de la contraseña. La longitud de la contraseña está establecida en 16 caracteres e incluye letras minúsculas, letras mayúsculas, números y símbolos. También hay un botón "Descartar" para cerrar la notificación. Debajo de la sección de contraseñas, hay un enlace para "Ver historial de contraseñas". La parte inferior de la imagen muestra iconos de navegación para "Vault", "Generador", "Alertas" y "Cuenta". El icono "Generador" está resaltado en rojo.](https://amzn-s3-demo-bucket.s3.amazonaws.com/kb/123/file/attachments/12133171243_image-20230818-114454.png)

El fragmento 2 tiene un resumen en la parte superior, seguido de una continuación de los detalles de la fuente:

{Texto resumido desde arriba} Este resumen captura los pasos, requisitos y entidades esenciales involucrados en el proceso de creación de usuarios de PLC y restablecimiento de contraseña utilizando Jenkins. — Mantiene un menú con opciones como ![image-20230904-061307: – El texto generado ha sido bloqueado por nuestros filtros de contenido.](https:// amzn-s3-demo-bucket.s3.amazonaws.com/kb/123/file/attachments/12133171243_image-20230904-061307.png)

PDIQ escanea cada fragmento de documento y genera incrustaciones de vectores. Estos datos se almacenan en la base de datos Aurora PostgreSQL con atributos clave, incluido un ID de base de conocimiento único, el atributo de incrustación correspondiente, el texto original (resumen más fragmento más título de imagen) y un objeto binario JSON que incluye campos de metadatos para mayor extensibilidad. Para mantener sincronizada la base de conocimientos, PDI implementa los siguientes pasos:

Agregar: estos son objetos de origen nuevos y netos que deben ingerirse. PDIQ implementa el flujo de procesamiento de documentos descrito anteriormente. Actualización: si PDIQ determina que el mismo objeto está presente, compara el valor de la clave hash de la fuente con el valor hash del objeto JSON. Eliminar: si PDIQ determina que un documento fuente específico ya no existe, activa una operación de eliminación en el depósito S3 (s3:ObjectRemoved:*), lo que da como resultado un trabajo de limpieza, eliminando los registros correspondientes al valor clave en la tabla Aurora.

PDI utiliza Amazon Nova Pro para recuperar el documento más relevante y genera una respuesta siguiendo estos pasos clave:

Al utilizar la búsqueda por similitud, recupera los fragmentos de documentos más relevantes, que incluyen resumen, datos de fragmentos, título de imagen y enlace de imagen. Para el fragmento coincidente, recupere el documento completo. Luego, LLM reemplaza el enlace de la imagen con la imagen real de Amazon S3. LLM genera una respuesta basada en los datos recuperados y el mensaje del sistema preconfigurado.

El siguiente es un fragmento del mensaje del sistema:

Asistente de soporte especializado en la plataforma Logística (PLC) de PDI, ayudando al personal a investigar y resolver casos de soporte en Salesforce. Ayudará a encontrar soluciones, resumir la información del caso y recomendar los próximos pasos apropiados para su resolución. Profesional, claro, técnico cuando sea necesario manteniendo un lenguaje accesible. Proceso de resolución: Plantilla de formato de respuesta: Manejar información confidencial:

Resultados y próximos pasos

Al crear esta solución RAG personalizada en AWS, PDI obtuvo los siguientes beneficios:

Las opciones de configuración flexibles permiten la ingesta de datos en las frecuencias preferidas del consumidor. El diseño escalable permite la ingesta futura de sistemas fuente adicionales a través de rastreadores fácilmente configurables. Admite la configuración del rastreador mediante múltiples métodos de autenticación, incluidos nombre de usuario y contraseña, pares clave-valor secretos y claves API. Los campos de metadatos personalizables permiten un filtrado avanzado y mejoran el rendimiento de las consultas. La gestión dinámica de tokens ayuda a PDI a equilibrar inteligentemente los tokens entre contenido y resúmenes, mejorando las respuestas de los usuarios. Consolida diversos formatos de datos de origen en un diseño unificado para un almacenamiento y recuperación optimizados.

PDIQ proporciona resultados comerciales clave que incluyen:

Tasas de eficiencia y resolución mejoradas: la herramienta permite a los equipos de soporte de PDI resolver las consultas de los clientes significativamente más rápido, a menudo automatizando problemas de rutina y brindando respuestas inmediatas y precisas. Esto ha llevado a que los clientes esperen menos la resolución de los casos y a que los agentes sean más productivos. Alta satisfacción y lealtad del cliente: al brindar respuestas precisas, relevantes y personalizadas basadas en documentación en vivo y conocimiento de la empresa, PDIQ aumentó los puntajes de satisfacción del cliente (CSAT), los puntajes netos de promotor (NPS) y la lealtad general. Los clientes se sienten escuchados y apoyados, fortaleciendo las relaciones con la marca PDI. Reducción de costos: PDIQ maneja la mayor parte de las consultas repetitivas, lo que permite que el personal de soporte limitado se concentre en casos de nivel experto, lo que mejora la productividad y la moral. Además, PDIQ se basa en una arquitectura sin servidor, que se escala automáticamente y minimiza los costos y los gastos operativos. Flexibilidad empresarial: una única plataforma puede servir a diferentes unidades de negocio, que pueden seleccionar el contenido configurando sus respectivas fuentes de datos. Valor incremental: cada nueva fuente de contenido agrega valor medible sin necesidad de rediseñar el sistema.

PDI continúa mejorando la aplicación con varias mejoras planificadas en proceso, que incluyen:

Cree una configuración de rastreador adicional para nuevas fuentes de datos (por ejemplo, GitHub). Cree una implementación agente para que PDIQ se integre en procesos comerciales complejos más grandes. Comprensión mejorada de los documentos con extracción de tablas y preservación de estructuras. Soporte multilingüe para operaciones globales. Clasificación de relevancia mejorada con técnicas de recuperación híbridas. Capacidad de invocar PDIQ en función de eventos (por ejemplo, confirmaciones de origen).

Conclusión

El servicio PDIQ ha transformado la forma en que los usuarios acceden y utilizan el conocimiento empresarial en PDI Technologies. Al utilizar los servicios sin servidor de Amazon, PDIQ puede escalar automáticamente con la demanda, reducir los gastos operativos y optimizar los costos. El enfoque único de la solución para el procesamiento de documentos, incluida la gestión dinámica de tokens y el sistema de subtítulos de imágenes personalizado, representa una importante innovación técnica en los sistemas RAG empresariales. La arquitectura equilibra exitosamente el rendimiento, el costo y la escalabilidad mientras mantiene los requisitos de seguridad y autenticación. A medida que PDI Technologies continúa ampliando las capacidades de PDIQ, les entusiasma ver cómo esta arquitectura puede adaptarse a nuevas fuentes, formatos y casos de uso.

Sobre los autores

Samit Kumbhani es arquitecto senior de soluciones de Amazon Web Services (AWS) en el área de la ciudad de Nueva York con más de 18 años de experiencia. Actualmente se asocia con proveedores de software independientes (ISV) para crear soluciones en la nube altamente escalables, innovadoras y seguras. Fuera del trabajo, a Samit le gusta jugar al cricket, viajar y andar en bicicleta.

Jhorlin De Armas es Arquitecto II en PDI Technologies, donde lidera el diseño de plataformas impulsadas por IA en Amazon Web Services (AWS). Desde que se unió a PDI en 2024, ha diseñado un servicio de IA compositivo que permite asistentes, agentes, bases de conocimiento y barreras de seguridad configurables utilizando Amazon Bedrock, Aurora Serverless, AWS Lambda y DynamoDB. Con más de 18 años de experiencia en la creación de software empresarial, Jhorlin se especializa en arquitecturas centradas en la nube, plataformas sin servidor y soluciones de IA/ML.

David Mbonu es arquitecto sénior de soluciones en Amazon Web Services (AWS) y ayuda a los clientes ISV de aplicaciones empresariales horizontales a crear e implementar soluciones transformacionales en AWS. David tiene más de 27 años de experiencia en arquitectura de soluciones empresariales e ingeniería de sistemas en empresas de software, tecnología financiera y nube pública. Sus intereses recientes incluyen AI/ML, estrategia de datos, observabilidad, resiliencia y seguridad. David y su familia residen en Sugar Hill, GA.