제퍼넷 로고

Schneider Electric은 SageMaker에서 검색 증강 LLM을 활용하여 ERP 시스템의 실시간 업데이트를 보장합니다 | 아마존 웹 서비스

시간

이 게시물은 Schneider Electric의 북미 인공 지능 솔루션 엔지니어링 및 아키텍처 관리자인 Anthony Medeiros와 비즈니스 인텔리전스 관리자인 Blake Santschi와 공동으로 작성되었습니다. 추가 Schneider Electric 전문가로는 Jesse Miller, Somik Chowdhury, Shaswat Babhulgaonkar, David Watkins, Mark Carlson 및 Barbara Sleczkowski가 있습니다. 

ERP(Enterprise Resource Planning) 시스템은 회사에서 회계, 판매 또는 주문 관리와 같은 여러 비즈니스 기능을 하나의 시스템에서 관리하는 데 사용됩니다. 특히 고객 계정과 관련된 정보를 저장하는 데 일상적으로 사용됩니다. 회사 내의 여러 조직은 서로 다른 ERP 시스템을 사용할 수 있으며 이를 병합하는 것은 도메인별 지식이 필요한 대규모의 복잡한 기술 과제입니다.

슈나이더 일렉트릭은 에너지 관리 및 산업 자동화의 디지털 혁신을 선도하는 기업입니다. 고객의 요구 사항을 가장 잘 충족하기 위해 Schneider Electric은 ERP 시스템에서 관련 고객 계정 간의 링크를 추적해야 합니다. 고객 기반이 성장함에 따라 매일 신규 고객이 추가되고 계정 팀은 이러한 신규 고객을 수동으로 정렬하고 적절한 상위 엔터티에 연결해야 합니다.

연결 결정은 인터넷이나 미디어를 통해 공개적으로 이용 가능한 최신 정보를 기반으로 하며 최근 인수, 시장 뉴스 또는 부서 구조 조정의 영향을 받을 수 있습니다. 계정 연결의 예로는 Amazon과 자회사인 Whole Foods Market 간의 관계를 식별하는 것이 있습니다. ].

슈나이더 일렉트릭은 다양한 지식 특정 영역의 질문에 답하는 능력을 위해 대규모 언어 모델을 배포하고 있으며, 모델이 훈련된 날짜는 지식을 제한합니다. 그들은 다음에서 사용할 수 있는 Retriever-Augmented Generation 오픈 소스 대규모 언어 모델을 사용하여 이러한 문제를 해결했습니다. Amazon SageMaker 점프스타트 가져온 대량의 외부 지식을 처리하고 ERP 기록 간의 기업 또는 공공 관계를 표시합니다.

2023년 초, Schneider Electric은 인공 지능(AI)을 사용하여 계정 연결 프로세스의 일부를 자동화하기로 결정했을 때 AWS Machine Learning Solutions Lab(MLSL)과 파트너십을 맺었습니다. ML 컨설팅 및 실행에 대한 MLSL의 전문 지식을 통해 Schneider Electric은 연결 워크플로에서 수동 작업을 줄이고 다운스트림 분석 팀에 더 빠른 데이터 액세스를 제공하는 AI 아키텍처를 개발할 수 있었습니다.

제너레이티브 AI

생성적 AI와 대규모 언어 모델(LLM)은 비즈니스 조직이 자연어 처리 및 이해와 관련된 전통적으로 복잡한 과제를 해결할 수 있는 방식을 변화시키고 있습니다. LLM이 제공하는 이점 중 일부는 텍스트의 많은 부분을 이해하고 인간과 유사한 응답을 생성하여 관련 질문에 답할 수 있는 능력을 포함합니다. AWS에서는 Amazon SageMaker JumpStart를 통해 다양한 옵션을 제공함으로써 고객이 LLM 워크로드를 쉽게 실험하고 생산할 수 있도록 지원합니다. 아마존 기반암아마존 타이탄.

외부 지식 습득

LLM은 인간의 지식을 압축하는 능력으로 잘 알려져 있으며 다양한 지식 특정 영역의 질문에 답하는 놀라운 능력을 입증했지만, 그들의 지식은 모델이 훈련된 날짜에 따라 제한됩니다. 우리는 LLM을 Google 검색 API와 결합하여 Schneider Electric의 과제를 해결하는 강력한 검색 증강 LLM(RAG)을 제공함으로써 이러한 정보 차단 문제를 해결합니다. RAG는 ​​Google 검색에서 가져온 대량의 외부 지식을 처리하고 ERP 기록 간의 기업 또는 공개 관계를 표시할 수 있습니다.

다음 예를 참조하십시오.

질문 : 원메디컬의 모회사는 어디인가요?
구글 검색어: “One Medical 모회사” → 정보 → LLM
답변 : 아마존 자회사 원메디컬…

앞의 예(Schneider Electric 고객 데이터베이스에서 가져온)는 2023년 XNUMX월에 발생한 인수에 관한 것이므로 지식 부족으로 인해 LLM만으로는 포착할 수 없습니다. Google 검색으로 LLM을 강화하면 최신 정보가 보장됩니다.

Flan-T5 모델

해당 프로젝트에서 우리는 Flan-T5-XXL 모델을 사용했습니다. 플랜-T5 모델 가족.

Flan-T5 모델은 명령어 조정이 가능하므로 다양한 제로샷 NLP 작업을 수행할 수 있습니다. 우리의 다운스트림 작업에서는 방대한 양의 세계 지식을 수용할 필요가 없었고 오히려 검색 결과를 통해 제공되는 텍스트의 맥락을 고려하여 질문 답변을 잘 수행해야 했기 때문에 11B 매개변수 T5 모델이 잘 수행되었습니다.

JumpStart는 다음을 통해 이 모델 제품군의 편리한 배포를 제공합니다. 아마존 세이지 메이커 스튜디오 그리고 SageMaker SDK. 여기에는 Flan-T5 Small, Flan-T5 Base, Flan-T5 Large, Flan-T5 XL 및 Flan-T5 XXL이 포함됩니다. 또한 JumpStart는 다양한 양자화 수준에서 몇 가지 버전의 Flan-T5 XXL을 제공합니다. 추론을 위해 Flan-T5-XXL을 엔드포인트에 배포했습니다. Amazon SageMaker Studio 점프스타트.

Flan-T5 SageMaker JumpStart 경로

LangChain을 이용한 증강 LLM 검색

랭체인 LLM으로 구동되는 애플리케이션 개발을 가능하게 하는 인기 있고 빠르게 성장하는 프레임워크입니다. 의 개념을 기반으로 합니다. 쇠사슬, 이는 주어진 작업에 대한 LLM의 기능을 향상시키기 위해 설계된 다양한 구성 요소의 조합입니다. 예를 들어, 이를 통해 사용자 정의할 수 있습니다. 프롬프트 LLM을 외부 검색 엔진이나 데이터 소스와 같은 다양한 도구와 통합합니다. 사용 사례에서는 Google을 사용했습니다. 서퍼 구성 요소를 사용하여 웹을 검색하고 사용할 수 있는 Flan-T5-XXL 모델을 배포했습니다. Amazon SageMaker Studio 점프스타트. LangChain은 전반적인 오케스트레이션을 수행하고 검색 결과 페이지가 Flan-T5-XXL 인스턴스에 제공되도록 허용합니다.

검색 증강 생성(RAG)은 두 단계로 구성됩니다.

  1. 검색 외부 소스의 관련 텍스트 덩어리
  2. 증가 LLM에 제공된 프롬프트에 컨텍스트가 포함된 청크입니다.

Schneider Electric의 사용 사례에서 RAG는 다음과 같이 진행됩니다.

  1. 주어진 회사 이름은 "X의 모회사는 누구입니까?"와 같은 질문(여기서 X는 주어진 회사임)과 결합되어 Serper AI를 사용하여 Google 쿼리에 전달됩니다.
  2. 추출된 정보는 프롬프트 및 원본 질문과 결합되어 답변을 위해 LLM으로 전달됩니다.

다음 다이어그램은 이 프로세스를 보여줍니다.

RAG 워크플로우

다음 코드를 사용하여 엔드포인트를 생성합니다.

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

검색 도구 인스턴스화:

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

다음 코드에서는 검색 및 기능 보강 구성 요소를 함께 연결합니다.

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"

신속한 엔지니어링

문맥과 질문의 조합을 프롬프트라고 합니다. 우리가 사용한 포괄적 프롬프트(모회사 요청에 대한 변형)는 대부분의 공공 부문(도메인)에서 잘 수행되었지만 모회사라는 개념이 의미가 없기 때문에 교육이나 의료 분야에서는 잘 일반화되지 않았습니다. 교육용으로는 "X"를, 의료용으로는 "Y"를 사용했습니다.

이 도메인별 프롬프트 선택을 활성화하려면 특정 계정이 속한 도메인도 식별해야 했습니다. 이를 위해 "{계정}의 도메인은 무엇입니까?"라는 객관식 질문이 있는 RAG도 사용했습니다. 첫 번째 단계로 답변을 바탕으로 두 번째 단계로 관련 프롬프트를 사용하여 계정의 상위 계정에 문의했습니다. 다음 코드를 참조하세요.

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"

부문별 프롬프트는 전반적인 성능을 55%에서 71%의 정확도로 향상시켰습니다. 전반적으로 효과적인 개발을 위해 투자된 노력과 시간은 프롬프트 LLM 응답의 질이 크게 향상되는 것으로 보입니다.

표 형식 데이터가 포함된 RAG(SEC-10k)

SEC 10K 서류는 상장 회사가 매년 제출하는 자회사 및 하위 부문에 대한 신뢰할 수 있는 또 다른 정보 소스입니다. 이러한 서류는 SEC에서 직접 확인할 수 있습니다. EDGAR 또는을 통해  CorpWatch API.

우리는 정보가 표 형식으로 제공된다고 가정합니다. 아래는 가짜 csv 파일 SEC-10K 데이터 세트의 원래 형식을 모방한 데이터 세트입니다. 여러개 병합 가능 csv 파일 데이터 소스를 결합된 Pandas 데이터 프레임으로 변환합니다.

# 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은 다음을 통해 팬더를 위한 추상화 계층을 제공합니다. create_pandas_dataframe_agent. 이 작업에 LangChain/LLM을 사용하면 두 가지 주요 이점이 있습니다.

  1. 가동되면 다운스트림 소비자가 코드가 아닌 자연어로 데이터 세트와 상호 작용할 수 있습니다.
  2. 철자 오류와 다양한 계정 이름 지정 방법에 더욱 강력합니다.

위와 같이 엔드포인트를 회전하고 에이전트를 생성합니다.

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

다음 코드에서는 상위/자회사 관계를 쿼리하고 에이전트는 쿼리를 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!.'

결론

이 게시물에서는 Schneider Electric의 고객 계정 간의 관계를 파악하기 위해 LangChain의 빌딩 블록을 사용하여 LLM에 검색 기능을 추가하는 방법을 자세히 설명했습니다. 더 높은 정확도를 위해 도메인별 프롬프트를 사용하기 전에 도메인 식별을 통해 초기 파이프라인을 XNUMX단계 프로세스로 확장했습니다.

Google 검색 쿼리 외에도 SEC 10K 서류와 같은 기업 구조를 자세히 설명하는 데이터 세트를 사용하여 신뢰할 수 있는 정보로 LLM을 더욱 강화할 수 있습니다. 또한 슈나이더 일렉트릭 팀은 일부 공공 부문 계정을 분류하는 방식을 모방한 자체 프롬프트를 확장하고 설계하여 파이프라인의 정확성을 더욱 향상시킬 수 있습니다. 이러한 기능을 통해 Schneider Electric은 고객의 정확한 최신 조직 구조를 유지하고 이 데이터를 기반으로 분석을 수행할 수 있는 능력을 확보할 수 있습니다.


저자에 관하여

앤서니 메데이로스 Schneider Electric의 솔루션 엔지니어링 및 아키텍처 관리자입니다. 그는 북미 내 다양한 ​​비즈니스 기능에 고부가가치 AI/ML 이니셔티브를 제공하는 것을 전문으로 합니다. Schneider Electric에서 17년간 근무한 그는 풍부한 산업 지식과 기술 전문 지식을 팀에 제공합니다.

블레이크 산스티 Schneider Electric의 비즈니스 인텔리전스 관리자로 데이터 기반 통찰력을 통해 영업 조직을 지원하는 데 중점을 둔 분석 팀을 이끌고 있습니다.

조슈아 레비조슈아 레비 Amazon Machine Learning 솔루션 연구소의 수석 응용 과학 관리자로서 고객이 주요 비즈니스 문제를 해결하기 위한 AI/ML 솔루션을 설계하고 구축하도록 돕습니다.

코스타 벨즈 생성 AI 및 문서 처리에 중점을 두고 있는 AWS MLSL의 수석 응용 과학자입니다. 그는 지식 그래프와 NLP를 사용하여 애플리케이션을 구축하는 데 열정을 갖고 있습니다. 그는 고객과 기업을 위한 가치를 창출하기 위해 데이터 및 AI 솔루션을 구축하는 데 약 10년의 경험을 갖고 있습니다.

오드 제네바 Amazon GenAI 인큐베이터의 응용 과학자로서 고객이 ML 및 AI를 통해 주요 비즈니스 문제를 해결하도록 돕습니다. 그녀는 이전에 이론적 ML 분야의 연구원이었으며 자신의 지식을 적용하여 고객에게 최첨단 솔루션을 제공하는 것을 즐깁니다.

Md 시라후스 살레킨 AWS 기계 학습 솔루션 연구소의 응용 과학자입니다. 그는 AI/ML 솔루션을 구축하여 AWS 고객이 비즈니스를 가속화하도록 돕습니다. 그의 연구 관심 분야는 다중 모드 기계 학습, 생성적 AI, 의료 분야의 ML 애플리케이션입니다.

지첸 왕, PhD는 AWS의 수석 응용 과학자입니다. 생물학 및 의료 데이터를 사용한 ML 및 통계 방법 개발에 대한 수년간의 연구 경험을 바탕으로 그는 다양한 분야의 고객과 협력하여 ML 문제를 해결합니다.

안톤 그리딘 뉴욕시에 기반을 두고 글로벌 산업 계정을 지원하는 수석 솔루션 설계자입니다. 그는 보안 애플리케이션을 구축하고 엔지니어링 팀을 이끄는 데 15년 이상의 경험을 갖고 있습니다.

spot_img

최신 인텔리전스

spot_img