Zephyrnet-logo

Schneider Electric maakt gebruik van Retrieval Augmented LLM's op SageMaker om realtime updates in hun ERP-systemen te garanderen | Amazon-webservices

Datum:

Dit bericht is geschreven in samenwerking met Anthony Medeiros, Manager Solutions Engineering and Architecture voor Noord-Amerikaanse kunstmatige intelligentie, en Blake Santschi, Business Intelligence Manager, van Schneider Electric. Andere experts van Schneider Electric zijn onder meer Jesse Miller, Somik Chowdhury, Shaswat Babhulgaonkar, David Watkins, Mark Carlson en Barbara Sleczkowski. 

Enterprise Resource Planning (ERP)-systemen worden door bedrijven gebruikt om verschillende bedrijfsfuncties, zoals boekhouding, verkoop of orderbeheer, in één systeem te beheren. Ze worden met name routinematig gebruikt om informatie met betrekking tot klantaccounts op te slaan. Verschillende organisaties binnen een bedrijf kunnen verschillende ERP-systemen gebruiken en het samenvoegen ervan is een complexe technische uitdaging op grote schaal die domeinspecifieke kennis vereist.

Schneider Electric is leider in de digitale transformatie van energiebeheer en industriële automatisering. Om zo goed mogelijk aan de behoeften van hun klanten te kunnen voldoen, moet Schneider Electric de koppelingen tussen de accounts van gerelateerde klanten in hun ERP-systemen bijhouden. Naarmate hun klantenbestand groeit, komen er dagelijks nieuwe klanten bij en moeten hun accountteams deze nieuwe klanten handmatig sorteren en koppelen aan de juiste moederentiteit.

Het besluit tot koppeling is gebaseerd op de meest recente informatie die openbaar beschikbaar is op internet of in de media, en kan worden beïnvloed door recente overnames, marktnieuws of herstructureringen van divisies. Een voorbeeld van het koppelen van accounts zou zijn om de relatie tussen Amazon en zijn dochteronderneming Whole Foods Market te identificeren.(bron)].

Schneider Electric zet grote taalmodellen in vanwege hun mogelijkheden bij het beantwoorden van vragen in verschillende kennisspecifieke domeinen. De datum waarop het model is getraind, beperkt de kennis ervan. Ze hebben deze uitdaging aangepakt door gebruik te maken van een Retriever-Augmented Generation open source groottaalmodel dat beschikbaar is op Amazon SageMaker JumpStart om grote hoeveelheden externe kennis te verwerken die is verzameld en om zakelijke of publieke relaties tussen ERP-records te tonen.

Toen Schneider Electric begin 2023 besloot een deel van het koppelingsproces van accounts te automatiseren met behulp van kunstmatige intelligentie (AI), werkte het bedrijf samen met het AWS Machine Learning Solutions Lab (MLSL). Met de expertise van MLSL op het gebied van ML-advies en -uitvoering kon Schneider Electric een AI-architectuur ontwikkelen die de handmatige inspanningen bij het koppelen van workflows zou verminderen en snellere gegevenstoegang zou bieden aan hun downstream-analyseteams.

generatieve AI

Generatieve AI en grote taalmodellen (LLM’s) transformeren de manier waarop bedrijfsorganisaties traditioneel complexe uitdagingen op het gebied van de verwerking en het begrip van natuurlijke taal kunnen oplossen. Enkele van de voordelen die LLM's bieden, zijn onder meer de mogelijkheid om grote delen van de tekst te begrijpen en gerelateerde vragen te beantwoorden door mensachtige antwoorden te produceren. AWS maakt het gemakkelijk voor klanten om te experimenteren met LLM-workloads en deze te produceren door veel opties beschikbaar te stellen via Amazon SageMaker JumpStart, Amazonebodem en Amazone Titan.

Externe kennisverwerving

LLM's staan ​​bekend om hun vermogen om menselijke kennis te comprimeren en hebben opmerkelijke capaciteiten getoond bij het beantwoorden van vragen op verschillende kennisspecifieke domeinen, maar hun kennis wordt beperkt door de datum waarop het model is getraind. We pakken deze informatie-onderbreking aan door de LLM te koppelen aan een Google Search API om een ​​krachtige Retrieval Augmented LLM (RAG) te leveren die de uitdagingen van Schneider Electric aanpakt. De RAG kan grote hoeveelheden externe kennis uit de Google-zoekopdracht verwerken en zakelijke of publieke relaties tussen ERP-records weergeven.

Zie het volgende voorbeeld:

Vraag: Wie is het moederbedrijf van One Medical?
Google-query: “Eén medisch moederbedrijf” → informatie → LLM
Antwoord: One Medical, een dochteronderneming van Amazon...

Het voorgaande voorbeeld (uit de klantendatabase van Schneider Electric) betreft een overname die in februari 2023 plaatsvond en dus niet door de LLM alleen zou worden opgepakt vanwege kennisuitval. Het uitbreiden van de LLM met Google Search garandeert de meest actuele informatie.

Flan-T5-model

In dat project gebruikten we het Flan-T5-XXL-model van de Vlaai-T5 familie van modellen.

De Flan-T5-modellen zijn instructie-afgestemd en kunnen daarom verschillende zero-shot NLP-taken uitvoeren. In onze stroomafwaartse taak was het niet nodig om een ​​enorme hoeveelheid wereldkennis te huisvesten, maar eerder om goed te presteren op het gebied van het beantwoorden van vragen, gegeven een context van teksten die via zoekresultaten werden verstrekt, en daarom presteerde het T11-model met 5B-parameters goed.

JumpStart zorgt voor een gemakkelijke inzet van deze modelfamilie door middel van Amazon SageMaker Studio en de SageMaker SDK. Dit omvat Flan-T5 Small, Flan-T5 Base, Flan-T5 Large, Flan-T5 XL en Flan-T5 XXL. Bovendien biedt JumpStart een paar versies van Flan-T5 XXL met verschillende kwantiseringsniveaus. We hebben Flan-T5-XXL geïmplementeerd op een eindpunt voor gevolgtrekking met behulp van Amazon SageMaker Studio Jumpstart.

Pad naar Flan-T5 SageMaker JumpStart

Ophalen van Augmented LLM met LangChain

LangChain is een populair en snelgroeiend raamwerk dat de ontwikkeling van applicaties mogelijk maakt die worden aangedreven door LLM's. Het is gebaseerd op het concept van ketens, dit zijn combinaties van verschillende componenten die zijn ontworpen om de functionaliteit van LLM's voor een bepaalde taak te verbeteren. Het stelt ons bijvoorbeeld in staat om maatwerk te leveren prompts en integreer LLM's met verschillende tools zoals externe zoekmachines of gegevensbronnen. In onze use-case gebruikten we Google Serper component om op internet te zoeken en het Flan-T5-XXL-model geïmplementeerd dat beschikbaar is Amazon SageMaker Studio Jumpstart. LangChain voert de algehele orkestratie uit en zorgt ervoor dat de zoekresultatenpagina's in de Flan-T5-XXL-instantie worden ingevoerd.

De Retrieval-Augmented Generation (RAG) bestaat uit twee stappen:

  1. Ophalen van relevante tekstfragmenten uit externe bronnen
  2. toenemen van de chunks met context in de prompt die aan de LLM wordt gegeven.

Voor de gebruikssituatie van Schneider Electric gaat de RAG als volgt te werk:

  1. De opgegeven bedrijfsnaam wordt gecombineerd met een vraag als “Wie is het moederbedrijf van X”, waarbij X het opgegeven bedrijf is) en doorgegeven aan een Google-query met behulp van de Serper AI
  2. De geëxtraheerde informatie wordt gecombineerd met de prompt en de oorspronkelijke vraag en voor antwoord doorgegeven aan de LLM.

Het volgende diagram illustreert dit proces.

RAG-workflow

Gebruik de volgende code om een ​​eindpunt te maken:

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

Zoekhulpmiddel instantiëren:

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

In de volgende code koppelen we de ophaal- en augmentatiecomponenten aan elkaar:

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"

De snelle techniek

De combinatie van de context en de vraag wordt de prompt genoemd. We merkten dat de algemene vraag die we gebruikten (variaties rond het vragen naar het moederbedrijf) goed presteerde voor de meeste publieke sectoren (domeinen), maar niet goed generaliseerde naar het onderwijs of de gezondheidszorg, omdat het begrip moederbedrijf daar geen betekenis heeft. Voor onderwijs gebruikten we “X”, terwijl we voor gezondheidszorg “Y” gebruikten.

Om deze domeinspecifieke promptselectie mogelijk te maken, moesten we ook het domein identificeren waartoe een bepaald account behoort. Hiervoor hebben we ook een RAG gebruikt waarbij een meerkeuzevraag “Wat is het domein van {account}?” als eerste stap, en op basis van het antwoord hebben we als tweede stap navraag gedaan bij de ouder van het account, waarbij we de relevante prompt gebruikten. Zie de volgende code:

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"

De sectorspecifieke aanwijzingen hebben de algehele prestaties verbeterd van 55% naar 71% van de nauwkeurigheid. Over het geheel genomen zijn de inspanningen en de tijd die zijn geïnvesteerd om effectief te ontwikkelen effectief prompts lijken de kwaliteit van de LLM-respons aanzienlijk te verbeteren.

RAG met tabelgegevens (SEC-10k)

De SEC 10K-deponeringen zijn een andere betrouwbare bron van informatie voor dochterondernemingen en onderafdelingen die jaarlijks door beursgenoteerde bedrijven worden ingediend. Deze documenten zijn rechtstreeks beschikbaar op SEC EDGAR of doorheen  BodyWatch API.

We gaan ervan uit dat de informatie in tabelvorm wordt gegeven. Hieronder staat een pseudo csv dataset die het oorspronkelijke formaat van de SEC-10K-dataset nabootst. Het is mogelijk om meerdere samen te voegen csv gegevensbronnen in een gecombineerd panda-dataframe:

# 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!

De LangChain biedt een abstractielaag voor panda's create_pandas_dataframe_agent. Er zijn twee belangrijke voordelen aan het gebruik van LangChain/LLM's voor deze taak:

  1. Eenmaal opgestart, kan een downstream-consument communiceren met de dataset in natuurlijke taal in plaats van in code
  2. Het is beter bestand tegen spelfouten en verschillende manieren om accounts een naam te geven.

We draaien het eindpunt zoals hierboven en maken de agent:

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

In de volgende code zoeken we naar de ouder-dochterrelatie en de agent vertaalt de zoekopdracht in panda-taal:

# 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!.'

Conclusie

In dit bericht hebben we gedetailleerd beschreven hoe we bouwstenen van LangChain hebben gebruikt om een ​​LLM uit te breiden met zoekmogelijkheden, om relaties tussen de klantaccounts van Schneider Electric bloot te leggen. We hebben de initiële pijplijn uitgebreid naar een proces in twee stappen met domeinidentificatie voordat we een domeinspecifieke prompt gebruikten voor een grotere nauwkeurigheid.

Naast de Google Zoeken-query kunnen datasets die bedrijfsstructuren beschrijven, zoals de SEC 10K-registraties, worden gebruikt om de LLM verder uit te breiden met betrouwbare informatie. Het Schneider Electric-team zal ook in staat zijn om hun eigen prompts uit te breiden en te ontwerpen, waarbij de manier wordt nagebootst waarop ze sommige rekeningen uit de publieke sector classificeren, waardoor de nauwkeurigheid van de pijplijn verder wordt verbeterd. Deze mogelijkheden zullen Schneider Electric in staat stellen om de organisatiestructuren van hun klanten up-to-date en accuraat te houden, en de mogelijkheid te ontsluiten om analyses uit te voeren bovenop deze data.


Over de auteurs

Antonius Medeiros is manager Solutions Engineering en Architectuur bij Schneider Electric. Hij is gespecialiseerd in het leveren van hoogwaardige AI/ML-initiatieven aan veel zakelijke functies in Noord-Amerika. Met 17 jaar ervaring bij Schneider Electric brengt hij een schat aan sectorkennis en technische expertise mee naar het team.

Blake Sanstchi is Business Intelligence Manager bij Schneider Electric en leidt een analyseteam dat zich richt op het ondersteunen van de verkooporganisatie door middel van datagestuurde inzichten.

Jozua LevyJozua Levy is Senior Applied Science Manager in het Amazon Machine Learning Solutions-lab, waar hij klanten helpt bij het ontwerpen en bouwen van AI/ML-oplossingen om belangrijke zakelijke problemen op te lossen.

Kosta Belz is een Senior Applied Scientist bij AWS MLSL met focus op generatieve AI en documentverwerking. Hij heeft een passie voor het bouwen van applicaties met behulp van Knowledge Graphs en NLP. Hij heeft ongeveer 10 jaar ervaring in het bouwen van data- en AI-oplossingen om waarde te creëren voor klanten en ondernemingen.

Aude Geneve is een Applied Scientist in de Amazon GenAI Incubator, waar ze klanten helpt bij het oplossen van belangrijke zakelijke problemen via ML en AI. Ze was eerder onderzoeker op het gebied van theoretische ML en past haar kennis graag toe om klanten state-of-the-art oplossingen te bieden.

Mevrouw Sirajus Salekin is een toegepaste wetenschapper bij AWS Machine Learning Solution Lab. Hij helpt AWS-klanten hun bedrijf te versnellen door AI/ML-oplossingen te bouwen. Zijn onderzoeksinteresses zijn multimodaal machine learning, generatieve AI en ML-toepassingen in de gezondheidszorg.

Zichen Wang, PhD, is een senior toegepast wetenschapper in AWS. Met een aantal jaren onderzoekservaring in de ontwikkeling van ML- en statistische methoden met behulp van biologische en medische gegevens, werkt hij samen met klanten in verschillende branches om hun ML-problemen op te lossen.

Anton Gridin is een Principal Solutions Architect die Global Industrial Accounts ondersteunt, gevestigd in New York City. Hij heeft meer dan 15 jaar ervaring met het bouwen van veilige applicaties en het leiden van technische teams.

spot_img

Laatste intelligentie

spot_img