대규모 언어 모델(LLM, Large Language Models)은 이상탐지, 예지보전, 최적화, 예측분석 등 산업 현장의 특정 과제를 수행하는 AI는 아닙니다. LLM은 인간과 기계 간 소통 장벽을 줄이는 Gateway 역할을 하며, 현장 작업자가 공정 및 장비와 ‘대화’할 수 있는 환경을 제공합니다. LLM을 통해 산업 현장 상황을 실시간으로 파악하고 필요시 명령을 통해 제어나 최적화도 수행할 것으로 기대하고 있는데요. LLM이 산업 문제를 직접 풀지는 않지만 이 모든 작업을 자연어로 가능하게 한다는 점에 큰 의의가 있습니다.

🔗AI 시대, 제조 특화 LLM이 중요한 이유 포스팅에서 제조 현장에서 LLM이 하게 될 역할과 도메인 특화 LLM의 중요성을 알아봤습니다. 이번 포스팅에서는 도메인 특화 LLM의 정의와 성능을 높이기 위해 주목받고 있는 기술 트렌드를 정리했습니다. 또 실제 산업 현장에서 LLM이 가치를 만들기 위해 왜 산업 현장 데이터 경험이 중요한지 살펴보겠습니다.

 

제조 현장에서 바로 ChatGPT를 사용하지 못하는 이유

ChatGPT4o에 제조 현장의 문제를 질문했을 때

ChatGPT4o에 제조 현장의 문제를 질문했을 때

우리가 쉽게 사용해 볼 수 있는 ChatGPT와 같은 범용 LLM의 학습 데이터는 세상의 모든 지식과 정보를 담고 있지만, 보안이 엄격하게 준수되어야 하는 기업 내부 데이터는 배우지 못했습니다. 산업 현장의 특수한 데이터를 학습하지 못한 LLM 모델은 도메인 특수성 또한 반영하지 못합니다. 세상만사에 통달한 것 같아 보이는 ChatGPT에게 아무리 현장 문제점의 해결법을 물어봐도 일반적인 해결 방법을 얘기하다 결국에는 ‘기술지원팀에 문의하라’는 답변만 돌아올 뿐입니다.

산업 현장에서 발생하는 데이터는 숙련된 현장 엔지니어가 봐도 바로 해석할 수 없는 형태가 대부분입니다. 제조 현장 예를 들면 온도, 압력, 진동, 생산 속도, 고장 기록 등 다양한 형태의 데이터가 수집됩니다. 현재 LLM 기술 수준에서 LLM 모델은 텍스트로 1차 가공된 데이터만 학습할 수 있습니다. 그렇기 때문에 산업 현장에서 수집한 raw 데이터를 모아둔 DB를 Corpus(대규모 텍스트 데이터베이스)로 변환하는 작업이 필요합니다. 약관 등 많은 데이터가 텍스트화되어 있는 금융 산업과 비교해 제조 현장의 LLM 도입 속도가 더딘 이유가 여기에 있습니다.

 

그래서 등장한 도메인 특화 LLM

데이터는 기업의 자산입니다. 기업은 데이터 반출에 민감한 경우가 많을 수밖에 없죠. OpenAI가 제공하는 LLM 모델의 성능이 보장되었다고 해도 보안이 중요한 우리 기업의 데이터를 제공하기는 어렵습니다. 민감한 데이터와 프라이버시를 보호하기 위해 조직 내부에서만 사용되는 ‘프라이빗 LLM(Private LLM)’, 특정 도메인이나 용도에 맞게 조정된 ‘커스텀 LLM(Custom LLM)’으로 대표되는 ‘도메인 특화 LLM(Domain-Specific LLM)’가 등장한 이유입니다.

도메인 특화 LLM은 제조, 유통, 의료, 법률, 금융 등 특정 도메인에 깊이 있는 전문 지식을 이해하고 있는 AI입니다. 보통 사전학습된 오픈소스 LLM 모델에 도메인 특화 데이터를 Fine-tuning을 해서 높은 전문성과 정확성을 제공합니다. 

어렵게 정제한 데이터로 Fine-Tuning을 진행한 LLM 모델은 원하는 답변을 잘 할 수 있을까요? 사전학습 데이터보다 상대적으로 적은 수의 데이터는 오히려 LLM 전반의 추론능력을 하락 시킬수도 있으며 여전히 할루시네이션(Hallucination)이 빈번히 발생합니다. 도메인 특화 LLM을 제대로 활용하기 위해서는 우리 기업 데이터에 맞게 성능을 끌어올리는 추가 작업이 필요한 이유입니다. 추가 작업 시 주목받으며 활발한 연구가 진행되고 있는 기술이 RAG와 Prompt Chain인데요. 두 기술이 어떤 방식으로 작동하는지 살펴보겠습니다.

 

도메인 특화 LLM 기술 트렌드1: RAG

가장 대표적인 방법은 RAG(Retrieval-Augmented Generation)입니다. RAG는 정보 검색과 언어 생성 모델을 결합한 방법입니다. 기존 LLM 모델보다 더 정확하고 관련성 높은 응답 생성을 목표로 해요. RAG는 세 단계로 작동합니다. “가장 최근에 고장이 발생한 기계는 뭐야?”라는 질문을 했다고 가정해 볼게요. 

  1. 문서 검색(Retrieval): 검색 모듈이 제조업 도메인에 특화된 데이터베이스에서 관련 문서를 검색합니다. 데이터베이스에는 기계 매뉴얼, 유지보수 기록, 품질 관리 보고서, 생산 데이터 등이 포함될 수 있겠죠. 예를 들어서 다음과 같이 3개의 정보가 검색이 되었습니다.
    705-5R 의 로봇팔 고장 시점 : 2024-06-05
    502-1R 의 로봇팔 고장 시점 : 2024-06-03
    705-4L 의 로봇팔 고장 시점 : 2024-06-04
  2. 쿼리 증강(Augmented): 사용자가 입력한 질문에 앞서 검색한 정보를 추가로 줍니다
    705-5R 의 로봇팔 고장 시점 : 2024-06-05
    502-1R 의 로봇팔 고장 시점 : 2024-06-03
    705-4L 의 로봇팔 고장 시점 : 2024-06-04
    위 정보를 참조해서 아래 질문에 대답해줘: 가장 최근에 고장이 발생한 기계는 뭐야?
  3. 텍스트 생성(Generation): "최근에 고장이 발생한 기계는 705-5R 로봇팔로 2024년 06월 05일에 발생했습니다.” 검색된 문서를 기반으로 대형 언어 모델이 최종 답변을 생성합니다.

RAG는 질문에 정확한 답을 할 수 있는 도메인 특화 데이터를 미리 가지고 있다고 볼 수 있습니다. 사용자에게 질문을 받았을 때, 연관성이 높은 대규모 데이터베이스나 문서 집합을 잘 훈련된 LLM에 제공해서 자연스럽고 일관된 텍스트를 생성하는 거죠.

또 RAG는 Fine tuning과 비교해 더 적은 계산 리소스와 시간을 들여서 빠르게 feasibility(실현 가능성)를 검증할 수 있습니다. LLM 모델이 목표 성능에 도달하기까지 소요된 시간을 사전에 예측하기 비교적 쉽기 때문입니다. RAG는 실제 관련 문서를 기반으로 응답을 생성함으로써 정확성과 관련성이 크게 높아집니다. 검색 모듈이 먼저 관련 문서를 좁혀주기 때문에, 생성 모듈은 더욱 작은 범위의 정보를 바탕으로 응답을 생성하여 계산 자원을 효율적으로 사용합니다. 관련된 문서를 함께 제공할 수 있기 때문에 신뢰도도 올라갈 수 있습니다.

 

도메인 특화 LLM 기술 트렌드2: Prompt Chain  

Prompt Chain은 복잡한 질문이나 작업을 수행하기 위해 여러 단계의 프롬프트를 연결하는 방법입니다. 더 정확하고 풍부한 답변을 위해 관련된 질문을 연속적으로 하여 논리적인 사고를 하게 하는 방식입니다. 각 단계는 이전 단계의 출력을 입력으로 사용하며, 점진적으로 문제를 해결해 나갑니다. 이는 복잡한 논리적 추론이나 여러 단계의 정보 처리가 필요한 경우에 유용합니다. 제조 현장 예를 들어, “어떤 로봇을 가장 먼저 점검해야 할까? 그 로봇의 조치기록과 담당자를 알려줘” 질문을 해결하기 위해서는 아래 단계를 거쳐 답변을 도출합니다.

  1. 첫 번째 프롬프트: ”가장 많은 경고 알람을 울린 로봇을 알려줘”
  2. 두 번째 프롬프트: ”그 알람에 대한 부품과 그에 따른 조치 기록을 알려줘”
  3. 세 번째 프롬프트: ”해당 로봇 생산 라인의 담당자를 알려줘”

다양한 유형의 데이터와 정보가 존재하는 제조 환경에서 Prompt Chain을 사용하면 정보를 단계별로 처리하고 통합할 수 있습니다. 복잡한 작업을 더 작은 하위 작업으로 분해하고, 각 작업을 단계별로 처리하는 접근이 가능해지는 거죠. 긴 시간에 걸친 문제 해결 과정이나 연속적인 작업이 많은 제조 현장에서 Prompt Chain은 컨텍스트 유지와 추적이 가능하게 합니다. 설비 유지보수, 품질 관리, 생산 공정 최적화, 프로젝트 관리, 데이터 분석 등 복잡하고 단계별로 진행되며, 지속적인 모니터링과 조정이 필요한 작업에 적용될 수 있습니다.

이 밖에도 Chain-Of-Thought(COT), Few shot learning, 관련 파이프라인 검색, Meta Filtering, 등 더 정확하고 풍부한 답변을 하도록 하는 기술이 있습니다. 마키나락스에서는 이런 기술들을 모두 LLM 서비스의 두뇌를 담당하는 agent에 탑재하고 질문에 맞는 작업들을 수행하게 해 보다 전문적이고 관련된 풍부한 답변을 도출합니다.

 

Industrial LLM for the Real World  

Industrial LLM for the Real World

Industrial LLM for the Real World

지금까지 도메인 특화 LLM의 성능을 높여주는 최신 기술 트렌드를 알아봤습니다. 산업 특화 LLM의 핵심은 산업 현장의 실질적인 문제를 해결하는 역량입니다. LLM 모델 개발도 데이터가 중요한데요. 어떤 데이터를 기반으로 도메인 특화 LLM을 학습시킬지 결정하는 일은 LLM을 적용할 공정, 문제 등을 정의하는 과정과 동일합니다. 이미 자동화가 많이 이뤄진 산업 현장이라면 단순 질의 응답을 위해 도메인 특화 LLM 모델을 만들기에는 ROI(Return on Investment, 투자수익률)가 안 나온다고 판단할 수 있습니다.

그렇기에 산업 데이터 경험이 중요합니다. 산업의 복잡성과 고유한 요구사항, 다양한 장비와 설비에서 수집하는 데이터에 대한 이해가 높을수록 다양한 각도에서 LLM을 발전시킬 수 있습니다. 오늘 자세히 살펴본 RAG와 Prompt Chain 외에도 텍스트를 작은 단위로 분할하는 ‘토크나이징(Tokenizing)’, 모델 평가 방법을 만들기 위한 ‘다운스트림(Downstream)’ 등 작업 설계 시 산업 현장 데이터 경험이 바탕이 되기 때문입니다. 데이터를 직접 들여다봐야 토크나이징을 잘할 수 있고 산업 데이터를 바탕으로 문제정의를 해본 경험이 있어야 다운스트림 태스크를 설계하기 수월합니다.

마키나락스는 데이터를 유의미하게 만들어 산업 현장을 지능화하는 일을 하고 있습니다. 산업 현장의 정확한 상황을 판단하기 위해서는 AI 결과뿐만 아니라 다양한 데이터들을 참조해 종합적인 판단을 내려야 하는데요. 그간의 경험을 바탕으로 범용 LLM이 활동하는 온라인 세계(Virtual world)를 넘어 산업 특화 LLM을 통해 로봇, 공정, 설비, 장비 등 물리적 세계(Real world)에서도 혁신을 만들어 나갈 계획입니다. 마키나락스와 함께 Real world에서 Industrial LLM가 만들 혁신을 경험해 보고 싶다면 언제든 아래 배너를 통해 연락해 주세요. 마키나락스가 여러 산업 현장에서 얻은 실질적인 AI 성공 경험을 바탕으로 함께 고민하고 방법을 제안해 드리겠습니다.

회사에 병가를 신청할 때 진료확인서와 진단서 중 어떤 서류를 제출해야 하는지 알고 있나요? ChatGPT에 물어본다고 해도 명확한 답을 알 수는 없습니다. 회사마다 규정이 다르고 ChatGPT는 우리 회사 규정을 학습하지 않았기 때문입니다. 담당자나 병가 신청 경험이 있는 동료에게 물어보면 가장 빨리 알 수 있을 텐데요. 하지만 지금이 오전 6시이고 병원 창구 앞이라면 누구한테 물어봐야 할까요? 이런 상황을 직접 겪은 마키나락스 AI 엔지니어 장종하님은 회사에 복귀해 곧바로 ‘드민이’를 개발했습니다. 이른 아침, 야근, 주말 등 담당자가 일하고 있지 않은 상황에도 24시간 답변해 줄 AI 챗봇이 탄생한 계기입니다. AI 회사에서는 대규모 언어 모델(LLM, Large Language Models)을 업무에 어떻게 활용하고 있을까요? 최신 AI 기술을 적용해 만든 챗봇 개발 과정과 구성원들의 사용 후기를 소개합니다.

 

똑똑하고 귀여운 우리 회사 맞춤 AI 드민이

빠르고 다정하게 답변해주는 드민이

빠르고 다정하게 답변해주는 드민이

드민이는 회사의 행정업무를 뜻하는 ‘Administration’에 인격을 부여해서 지은 이름입니다. 미니언즈를 닮은 귀여운 외모에 항상 마키나락스 내부 데이터를 공부하고 있습니다. 귀엽죠? 드민이는 마키나락스 구성원들이 Slack(슬랙) ‘ask-admin’ 채널에 회사 생활 관련 문의를 하면, 바로 스레드로 답변을 달아줍니다. 담당자나 해결 방법을 알려줘요. 또 슬랙에 @드민이를 검색한 후 DM을 보내도 빠르게 답변을 해주고요. 업무 관련 내용뿐만 아니라 같이 잡담도 나눌 수 있습니다. “배고프다”고 말을 걸면 간식을 챙겨먹으라고 다정하게 답해주고 간식을 신청하는 슬랙 ‘snack’ 채널에 지금 먹고 싶은 간식을 신청하라고 안내해 줍니다. 회사 관련 퀴즈도 만들어 주고요. 똑똑하죠?

 

드민이는 어떤 방법으로 개발된 LLM인가요?

드민이는 ▲잘 만들어진 LLM ▲우리 회사 데이터에 특화된 답변을 할 수 있게 정보를 주는 RAG(Retrieval-Augmented Generation) ▲사용 편의성을 위한 Slack-Bolt. 세 가지를 결합해서 만들었습니다. 종하님이 그린 전체적인 스키마는 아래와 같습니다.

드민이 스키마 구조

드민이 스키마 구조

드민이는 마키나락스 근무 규칙, 취업 규칙, 퇴직연금DC규약, 노사협의회 정책, 슬랙 채널 ‘ask-admin’ 내용, 전문연구요원 관련 문서 등 다양한 운영 관련 데이트를 참고해서 답변합니다. 이때 슬랙 채널 데이터를 제외하면 모두 PDF 방식의 데이터이고 PDF 데이터도 모두 텍스트로 변환했습니다. 또한, 잘못된 정보를 제공하는 할루시네이션(Hallucination)은 줄이고 명확한 문장을 전달하기 위해 Prompt Engineering을 통해 모르는 내용은 모른다고 하고 최대한 담당자를 추론할 수 있게 유도했습니다. 

드민이 작동 방식

드민이 작동 방식

‘회사 전화번호가 뭔가요?’ 라는 질문을 받았을 때, 이 문장을 모델이 잘 이해할 수 있도록 숫자로 임베딩(embedding)하는 과정을 수행합니다. 이후 리트리브(Retrieve)를 수행해 이 문장과 관련된 문장 여러 개를 추출하는 과정을 거치게 됩니다. RAG를 간단히 설명하면 질문에 답을 할 수 있는 데이터를 미리 가지고 있고 그 데이터를 잘 훈련된 LLM이 이해하기 쉽게 답변을 생성해 주는 방식입니다. 드민이를 만든 기술에 대한 자세한 내용은 🔗도메인 특화 LLM 성능을 높이는 AI 기술 트렌드 포스팅을 참고해 주세요.

 

사내 챗봇을 Slack에 연동하는 방법

드민이의 초기 기획 단계에서는 ChatGPT처럼 별도의 웹페이지에서 답변하는 방향을 생각했습니다. 하지만 드민이 오픈 전 관련 구성원들에게 테스트를 진행했는데, 생각보다 사용률이 높지 않았다고 해요. 그래서 종하님은 ‘ask-admin 데이터를 주로 참고했으니 회사에서 가장 많이 사용하는 슬랙과 연동하면 접근성이 좋아지지 않을까?’라는 생각을 하고 실행에 옮겼습니다.

지금부터 Slack-Bolt를 사용해 슬랙과 드민이를 연동한 방법을 단계별로 설명해 드릴게요.

  1. Slack 앱 생성: 먼저 Slack 앱을 생성하고 해당 앱의 설정에서 기본적인 구성을 완료해야 합니다. Slack 앱의 설정에서는 OAuth 토큰, 슬랙 봇 토큰 등을 얻을 수 있습니다.
  2. Bolt 설치: 선택한 언어(Node.js, Python, Java)에 따라 Bolt를 설치합니다. 이를 위해 해당 언어의 패키지 관리자를 사용하여 Slack-Bolt 패키지를 설치합니다.
  3. 앱 설정 및 이벤트 구독: Slack 앱의 설정에서 이벤트 구독을 활성화하고, 앱이 반응할 이벤트 유형을 선택합니다. 예를 들어, 메시지가 채널에 게시되거나 멘션 되었을 때 앱이 반응하도록 설정할 수 있습니다.
  4. 액션 설정: Slack 앱이 수행할 작업 또는 응답을 정의합니다. 이를 위해 Bolt의 API를 사용하여 각 이벤트에 대한 콜백 함수를 작성합니다. 예를 들어, 사용자가 특정 메시지를 보낼 때 앱이 특정 작업을 수행하도록 콜백 함수를 작성할 수 있습니다.

아래 예제 코드와 같이 수행한다면 스레드 달기, 답변, 이모지 달기 등의 작업을 할 수 있습니다.

from slack_bolt import App

app = App()

### 스레드 달기
@app.message("특정 메시지")
def thread_message(message, say):
say(text="스레드에 달릴 메시지입니다.", thread_ts=message["ts"])

### 답변하기
@app.message("특정 메시지")
def reply_message(message, say):
say(text="특정 메시지에 대한 답변입니다.", thread_ts=message["ts"])

### 이모지 달기
@app.message("특정 메시지")
def add_reaction(body, client, ack):
ack()
client.reactions_add(
channel=body["channel"],
name="이모지 이름", # 이모지의 이름을 지정합니다.
timestamp=body["ts"] # 메시지의 timestamp를 지정하여 해당 메시지에 이모지를 답니다.
)

if __name__ == "__main__":
app.start()

드민이랑 일해보니 어떤가요?

계속해서 소환되는 현주님

계속해서 소환되는 현주님

드민이는 실제 마키나락스 구성원들의 효율성을 높여주고 있습니다. 회사의 살림을 책임지고 있는 ask-admin 채널에는 정말 다양한 질문들이 생기고 있는데요. 자연스럽게 반복적인 질문들이 생기는데, 이때 드민이의 존재가 빛을 발하고 있습니다. 또 여러 가지 업무를 진행하고 있는 담당자들이 실시간으로 슬랙 채널을 확인하는 일은 쉽지 않은데요. 이때도 드민이가 가장 먼저 답을 해주고, 담당자를 알려주기 때문에 하루 종일 채널을 모니터링해야 하는 수고로움을 덜었습니다. 덕분에 다른 업무에 더 집중할 수 있다고 해요.

“드민이는 그동안 채널 안에서 나눴던 모든 질문과 답변을 학습해서 빠르게 답변을 해주고 있는데요. 바쁜 admin실의 귀여운 인턴 역할을 톡톡히 하고 있어요. 앞으로 더욱 똑똑해진 드민이를 기대합니다. 드민이 파이팅!” 드민이에게 담당자로 가장 많이 소환되는 용현주님은 드민이에게 칭찬을 아끼지 않았습니다. 다른 구성원들도 드민이 덕분에 슬랙이 더 활발해지고, 사내 분위기도 더 좋아졌다고 입을 모아 말했답니다. 드민이를 만든 종하님은 드민이가 ‘똑똑하다’는 말을 들을 때 가장 보람을 느낀다고 해요. 이런 게 아버지의 마음일까요? 마키나락스 구성원 여러분 앞으로 드민이에게 똑똑하다고 칭찬 많이 해 주세요!

 

LLM TF팀과 드민이의 상관관계

드민이는 마키나락스 구성원들의 효율적인 회사 생활을 지원해 주고 있는 동시에 산업 특화 LLM 개발을 위해 중요한 역할을 하고 있습니다. 다양한 시도와 연구를 진행 중인 마키나락스 LLM TF팀의 테스트 베드로 활약하고 있는 것인데요. 최근에는 CSV 파일을 기반으로 차트 그려주는 기능 테스트를 수행하고 있고, Runway 위에서 동작하고 있는 덕분에 Vector DB 와 챗봇을 쉽게 연결하는 기획도 이루어지고 있습니다. 또 마키나락스가 진행한 RAG 기반의 로봇 예지정비 특화 LLM 에이전트 아키텍처를 구현하는 작업에도 드민이 개발 경험이 녹아있습니다. 이 외에도 LLM을 실제 산업 현장에 적용할 수 있는 무궁무진한 테스크를 검증하는 데 핵심적인 역할을 해줄 것으로 기대하고 있어요.

이미지를 클릭하면 STK 사전 등록 페이지로 연결됩니다

이미지를 클릭하면 STK 사전 등록 페이지로 연결됩니다

마키나락스는 제조, 유통, 배터리, 반도체, 국방, 물류 등 다양한 산업 현장을 AI로 지능화하고 있습니다. AI를 실제 물리적인 환경과 연결하고 있는데요. 그간의 산업 AI 경험과 더불어 어떻게 하면 LLM을 통해 산업 현장에 더 큰 가치를 전달할 수 있을지도 함께 고민하고 있습니다. 그 고민의 결과는 ‘Smart Tech Korea’의 마키나락스 부스와 강연에서 공유할 예정이에요. 6월 19일부터 21일까지 서울 코엑스에서 열립니다. 곧 포스팅으로도 공유하겠습니다.

 

Use Cases
See how AI technology in anomaly detection, optimization, and predictive analytics is making industries intelligent