Logotipo de Zephyrnet

Schneider Electric aprovecha los LLM de recuperación aumentada en SageMaker para garantizar actualizaciones en tiempo real en sus sistemas ERP | Servicios web de Amazon

Fecha:

Esta publicación fue coescrita con Anthony Medeiros, Gerente de Ingeniería y Arquitectura de Soluciones para Inteligencia Artificial de América del Norte, y Blake Santschi, Gerente de Inteligencia Comercial, de Schneider Electric. Otros expertos de Schneider Electric incluyen a Jesse Miller, Somik Chowdhury, Shaswat Babhulgaonkar, David Watkins, Mark Carlson y Barbara Sleczkowski. 

Las empresas utilizan los sistemas de planificación de recursos empresariales (ERP) para gestionar varias funciones comerciales, como contabilidad, ventas o gestión de pedidos, en un solo sistema. En particular, se utilizan habitualmente para almacenar información relacionada con las cuentas de los clientes. Diferentes organizaciones dentro de una empresa pueden utilizar diferentes sistemas ERP y fusionarlos es un desafío técnico complejo a escala que requiere conocimientos específicos del dominio.

Schneider Electric es líder en la transformación digital de la gestión energética y la automatización industrial. Para satisfacer mejor las necesidades de sus clientes, Schneider Electric necesita realizar un seguimiento de los vínculos entre las cuentas de los clientes relacionados en sus sistemas ERP. A medida que su base de clientes crece, se agregan nuevos clientes diariamente y sus equipos de cuentas tienen que clasificar manualmente a estos nuevos clientes y vincularlos a la entidad matriz adecuada.

La decisión de vinculación se basa en la información más reciente disponible públicamente en Internet o en los medios de comunicación y podría verse afectada por adquisiciones recientes, noticias del mercado o reestructuraciones divisionales. Un ejemplo de vinculación de cuentas sería identificar la relación entre Amazon y su filial, Whole Foods Market [fuente].

Schneider Electric está implementando modelos de lenguaje grandes por sus capacidades para responder preguntas en diversos dominios de conocimiento específicos; la fecha en que se entrenó el modelo limita su conocimiento. Abordaron ese desafío utilizando un modelo de lenguaje grande de código abierto de generación aumentada de Retriever disponible en JumpStart de Amazon SageMaker para procesar grandes cantidades de conocimiento externo extraído y mostrar relaciones corporativas o públicas entre los registros de ERP.

A principios de 2023, cuando Schneider Electric decidió automatizar parte de su proceso de vinculación de cuentas mediante inteligencia artificial (IA), la empresa se asoció con el Laboratorio de soluciones de aprendizaje automático (MLSL) de AWS. Con la experiencia de MLSL en consultoría y ejecución de ML, Schneider Electric pudo desarrollar una arquitectura de IA que reduciría el esfuerzo manual en sus flujos de trabajo de vinculación y brindaría un acceso a datos más rápido a sus equipos de análisis posteriores.

IA generativa

La IA generativa y los modelos de lenguajes grandes (LLM) están transformando la forma en que las organizaciones empresariales pueden resolver desafíos tradicionalmente complejos relacionados con el procesamiento y la comprensión del lenguaje natural. Algunos de los beneficios que ofrecen los LLM incluyen la capacidad de comprender grandes porciones de texto y responder preguntas relacionadas produciendo respuestas similares a las humanas. AWS facilita a los clientes experimentar y producir cargas de trabajo de LLM al ofrecer muchas opciones disponibles a través de Amazon SageMaker JumpStart. lecho rocoso del amazonasy Titán Amazonas.

Adquisición de conocimientos externos

Los LLM son conocidos por su capacidad para comprimir el conocimiento humano y han demostrado capacidades notables para responder preguntas en diversos dominios específicos del conocimiento, pero su conocimiento está limitado por la fecha en que se entrenó el modelo. Abordamos ese límite de información combinando el LLM con una API de búsqueda de Google para ofrecer un potente LLM de recuperación aumentada (RAG) que aborde los desafíos de Schneider Electric. El RAG puede procesar grandes cantidades de conocimiento externo extraído de la búsqueda de Google y mostrar relaciones corporativas o públicas entre los registros del ERP.

Vea el siguiente ejemplo:

Pregunta: ¿Quién es la empresa matriz de One Medical?
Consulta de Google: “Empresa matriz de One Medical” → información → LLM
Respuesta One Medical, una subsidiaria de Amazon…

El ejemplo anterior (tomado de la base de datos de clientes de Schneider Electric) se refiere a una adquisición que ocurrió en febrero de 2023 y, por lo tanto, no sería detectada únicamente por el LLM debido a cortes de conocimiento. Ampliar el LLM con la búsqueda de Google garantiza la información más actualizada.

Flan-T5 modelo

En ese proyecto utilizamos el modelo Flan-T5-XXL de la Flan-T5 familia de modelos.

Los modelos Flan-T5 están ajustados a las instrucciones y, por lo tanto, son capaces de realizar diversas tareas de PNL de disparo cero. En nuestra tarea posterior no era necesario acomodar una gran cantidad de conocimiento mundial, sino más bien tener un buen desempeño en la respuesta a preguntas dado un contexto de textos proporcionados a través de los resultados de búsqueda y, por lo tanto, el modelo T11 de parámetros 5B funcionó bien.

JumpStart proporciona una implementación conveniente de esta familia de modelos a través de Estudio Amazon SageMaker y el SDK de SageMaker. Esto incluye Flan-T5 Pequeño, Flan-T5 Base, Flan-T5 Grande, Flan-T5 XL y Flan-T5 XXL. Además, JumpStart ofrece algunas versiones de Flan-T5 XXL con diferentes niveles de cuantización. Implementamos Flan-T5-XXL en un punto final para inferencia usando Inicio rápido de Amazon SageMaker Studio.

Camino hacia Flan-T5 SageMaker JumpStart

Recuperación LLM aumentada con LangChain

LangChain es un marco popular y de rápido crecimiento que permite el desarrollo de aplicaciones impulsadas por LLM. Se basa en el concepto de cadenas, que son combinaciones de diferentes componentes diseñados para mejorar la funcionalidad de los LLM para una tarea determinada. Por ejemplo, nos permite personalizar ideas e integrar LLM con diferentes herramientas como motores de búsqueda externos o fuentes de datos. En nuestro caso de uso, utilizamos Google Serpiente componente para buscar en la web e implementó el modelo Flan-T5-XXL disponible en Inicio rápido de Amazon SageMaker Studio. LangChain realiza la orquestación general y permite que las páginas de resultados de la búsqueda se introduzcan en la instancia Flan-T5-XXL.

La Generación Aumentada de Recuperación (RAG) consta de dos pasos:

  1. Recuperación de fragmentos de texto relevantes de fuentes externas
  2. aumentar de los fragmentos con contexto en el mensaje dado al LLM.

Para el caso de uso de Schneider Electric, el RAG procede de la siguiente manera:

  1. El nombre de la empresa dado se combina con una pregunta como "¿Quién es la empresa matriz de X", donde X es la empresa dada) y se pasa a una consulta de Google utilizando Serper AI?
  2. La información extraída se combina con la pregunta inicial y original y se pasa al LLM para obtener una respuesta.

El siguiente diagrama ilustra este proceso.

Flujo de trabajo de RAG

Utilice el siguiente código para crear un punto final:

# Spin FLAN-T5-XXL Sagemaker Endpoint
llm = SagemakerEndpoint(...)

Herramienta de búsqueda de instancias:

search = GoogleSerperAPIWrapper()
search_tool = Tool( name="Search", func=search.run, description="useful for when you need to ask with search", verbose=False)

En el siguiente código, encadenamos los componentes de recuperación y aumento:

my_template = """
Answer the following question using the information. n
Question : {question}? n
Information : {search_result} n
Answer: """
prompt_template = PromptTemplate( input_variables=["question", 'search_result'], template=my_template)
question_chain = LLMChain( llm=llm, prompt=prompt_template, output_key="answer") def search_and_reply_company(company): # Retrieval search_result = search_tool.run(f"{company} parent company") # Augmentation output = question_chain({ "question":f"Who is the parent company of {company}?", "search_result": search_result}) return output["answer"] search_and_reply_company("Whole Foods Market") "Amazon"

La ingeniería rápida

La combinación del contexto y la pregunta se llama indicación. Notamos que el mensaje general que utilizamos (variaciones en torno a preguntar por la empresa matriz) funcionó bien para la mayoría de los sectores públicos (dominios), pero no se generalizó bien a la educación o la atención médica, ya que la noción de empresa matriz no tiene significado allí. Para educación usamos "X" mientras que para atención médica usamos "Y".

Para habilitar esta selección de solicitud específica de dominio, también tuvimos que identificar el dominio al que pertenece una cuenta determinada. Para esto, también utilizamos un RAG donde una pregunta de opción múltiple "¿Cuál es el dominio de {cuenta}?" como primer paso, y en base a la respuesta, preguntamos al padre de la cuenta utilizando el mensaje correspondiente como segundo paso. Vea el siguiente código:

my_template_options = """
Answer the following question using the information. n
Question :  {question}? n
Information : {search_result} n
Options :n {options} n
Answer: """ prompt_template_options = PromptTemplate(
input_variables=["question", 'search_result', 'options'],
template=my_template_options)
question_chain = LLMChain( llm=llm, prompt=prompt_template_options, output_key="answer") my_options = """
- healthcare
- education
- oil and gas
- banking
- pharma
- other domain """ def search_and_reply_domain(company):
search_result = search_tool.run(f"{company} ")
output = question_chain({ "question":f"What is the domain of {company}?", "search_result": search_result, "options":my_options})
return output["answer"] search_and_reply_domain("Exxon Mobil") "oil and gas"

Las indicaciones específicas del sector han aumentado el rendimiento general del 55 % al 71 % de precisión. En general, el esfuerzo y el tiempo invertidos para desarrollar estrategias efectivas ideas parecen mejorar significativamente la calidad de la respuesta LLM.

RAG con datos tabulares (SEC-10k)

Las presentaciones SEC 10K son otra fuente confiable de información para subsidiarias y subdivisiones presentadas anualmente por empresas que cotizan en bolsa. Estas presentaciones están disponibles directamente en la SEC EDGAR o a través de  CuerpoReloj API.

Suponemos que la información se proporciona en formato tabular. A continuación se muestra un pseudo csv conjunto de datos que imita el formato original del conjunto de datos SEC-10K. Es posible fusionar varios csv fuentes de datos en un marco de datos de pandas combinado:

# A pseudo dataset similar by schema to the CorpWatch API dataset
df.head()

index	relation_id source_cw_id	target_cw_id	parent subsidiary 1 90 22569 37 AMAZON WHOLE FOODS MARKET
873 1467 22569 781 AMAZON TWITCH
899 1505 22569 821 AMAZON ZAPPOS
900 1506 22569 821 AMAZON ONE MEDICAL
901 1507 22569 821 AMAZON WOOT!

LangChain proporciona una capa de abstracción para los pandas a través de crear_pandas_dataframe_agent. Hay dos ventajas clave al utilizar LangChain/LLM para esta tarea:

  1. Una vez activado, permite a un consumidor intermedio interactuar con el conjunto de datos en lenguaje natural en lugar de código.
  2. Es más resistente a los errores ortográficos y a las diferentes formas de nombrar cuentas.

Giramos el punto final como se indica arriba y creamos el agente:

# Create pandas dataframe agent
agent = create_pandas_dataframe_agent(llm, df, varbose=True)

En el siguiente código, consultamos la relación matriz/subsidiaria y el agente traduce la consulta al lenguaje pandas:

# Example 1
query = "Who is the parent of WHOLE FOODS MARKET?"
agent.run(query) #### output
> Entering new AgentExecutor chain...
Thought: I need to find the row with WHOLE FOODS MARKET in the subsidiary column
Action: python_repl_ast
Action Input: df[df['subsidiary'] == 'WHOLE FOODS MARKET']
Observation:
source_cw_id	target_cw_id	parent subsidiary
22569 37 AMAZON WHOLE FOODS MARKET
Thought: I now know the final answer
Final Answer: AMAZON
> Finished chain.
# Example 2
query = "Who are the subsidiaries of Amazon?"
agent.run(query)
#### output
> Entering new AgentExecutor chain...
Thought: I need to find the row with source_cw_id of 22569
Action: python_repl_ast
Action Input: df[df['source_cw_id'] == 22569]
...
Thought: I now know the final answer
Final Answer: The subsidiaries of Amazon are Whole Foods Market, Twitch, Zappos, One Medical, Woot!...> Finished chain. 'The subsidiaries of Amazon are Whole Foods Market, Twitch, Zappos, One Medical, Woot!.'

Conclusión

En esta publicación, detallamos cómo utilizamos los componentes básicos de LangChain para aumentar un LLM con capacidades de búsqueda, con el fin de descubrir relaciones entre las cuentas de clientes de Schneider Electric. Ampliamos el proceso inicial a un proceso de dos pasos con identificación de dominio antes de utilizar un mensaje específico del dominio para una mayor precisión.

Además de la consulta de Búsqueda de Google, se pueden utilizar conjuntos de datos que detallan estructuras corporativas, como las presentaciones SEC 10K, para aumentar aún más el LLM con información confiable. El equipo de Schneider Electric también podrá ampliar y diseñar sus propios mensajes imitando la forma en que clasifican algunas cuentas del sector público, mejorando aún más la precisión del proceso. Estas capacidades permitirán a Schneider Electric mantener estructuras organizativas actualizadas y precisas de sus clientes y desbloquear la capacidad de realizar análisis sobre estos datos.


Acerca de los autores

Antonio Medeiros es Gerente de Ingeniería y Arquitectura de Soluciones en Schneider Electric. Se especializa en ofrecer iniciativas de IA/ML de alto valor para muchas funciones comerciales dentro de América del Norte. Con 17 años de experiencia en Schneider Electric, aporta al equipo un gran conocimiento de la industria y experiencia técnica.

Blake Sanstchi es gerente de inteligencia empresarial en Schneider Electric y lidera un equipo de análisis centrado en respaldar a la organización de ventas a través de conocimientos basados ​​en datos.

Josué LevyJosué Levy Es gerente sénior de ciencias aplicadas en el laboratorio de soluciones de aprendizaje automático de Amazon, donde ayuda a los clientes a diseñar y crear soluciones de IA/ML para resolver problemas comerciales clave.

Kosta Belz es un científico aplicado senior en AWS MLSL con enfoque en IA generativa y procesamiento de documentos. Le apasiona crear aplicaciones utilizando Knowledge Graphs y PNL. Tiene alrededor de 10 años de experiencia en la creación de soluciones de datos e inteligencia artificial para crear valor para clientes y empresas.

Aude Ginebray es científica aplicada en Amazon GenAI Incubator, donde ayuda a los clientes a resolver problemas comerciales clave a través del aprendizaje automático y la inteligencia artificial. Anteriormente fue investigadora en aprendizaje automático teórico y disfruta aplicando sus conocimientos para ofrecer soluciones de última generación a los clientes.

Md Sirajus Salekin es científico aplicado en el laboratorio de soluciones de aprendizaje automático de AWS. Ayuda a los clientes de AWS a acelerar sus negocios mediante la creación de soluciones de IA/ML. Sus intereses de investigación son el aprendizaje automático multimodal, la IA generativa y las aplicaciones de aprendizaje automático en la atención sanitaria.

Zichén Wang, PhD, es científico aplicado senior en AWS. Con varios años de experiencia en investigación en el desarrollo de ML y métodos estadísticos utilizando datos biológicos y médicos, trabaja con clientes en diversos sectores verticales para resolver sus problemas de ML.

Antón Gridin es un arquitecto principal de soluciones que respalda cuentas industriales globales, con sede en la ciudad de Nueva York. Tiene más de 15 años de experiencia en la creación de aplicaciones seguras y liderando equipos de ingeniería.

punto_img

Información más reciente

punto_img