AI 솔루션/LLMOps

[LLMOps] LangChain의 모든 것 (1) 개요와 컨셉

MNC 2023. 8. 8. 16:38

“5일만에 사용자 100만명 달성"

 

ChatGPT의 성공을 가장 잘 나타내는 말이 아닐까 싶은데요. 메타의 SNS인 Thread를 제외하고는 단기간에 가장 많은 사용자 모집에 성공한 사례이며, 이 기록은 당분간 깨지지 않을 것으로 보여집니다.

 

이 기록은 AI 분야를 두고 보면 그 의미가 더욱 깊은데요.

'인간 vs AI' 구도로 화제가 되었던 이세돌 9단과 알파고의 대결 이후로 급격하게 높아진 관심에 비해, 이렇다 할 실체를 보이지 못하던 AI 기술이 드디어 모두의 일상생활을 바꾸는 서비스로 등장한 첫 사례이기 때문입니다. 동시에 앞으로 AI 기술이 어떻게 시장을 장악해야 하는가에 대한 실마리를 제공했다는 점에서도 시사하는 바가 큽니다. 

 

마인즈앤컴퍼니(MNC)는 이러한 최근의 추세에 더불어 MNC의 ChatGPT 기반 검색 솔루션 딥서핑(Deep Searfing)의 자연어 처리 기술, 그리고 MLOps 상의 ML 플랫폼 기술을 더한 Large Language Model Operations(LLMOps) 개발의 최전선에 있습니다.

 

MNC가 개발 중인 LLMOps에서는 LLM 서비스 워크플로우 구성을 위해, 1) 기존 서비스에서 많이 활용하는 챗봇 레벨의 워크플로우와, 2) 최근 활용도가 증가하고 있는 LLM 레벨의 워크플로우를 통합적으로 관리할 수 있는 기능을 제공합니다.

총 3편에 걸쳐 진행되는 이번 시리즈에서는 LLM 레벨의 워크플로우 구성을 누구나 쉽게 할 수 있도록 지원하는 라이브러리인 LangChain에 대해 소개드리겠습니다. 

 

이번 시리지를 통해 LongChain에 대한 이해도를 더욱 높이고, MNC가 선제적으로 개발 중인 LLMOps에 대해서도 알아가실 수 있기를 바랍니다. 

 


작성: 마인즈앤컴퍼니 이강산 매니저 (Data Scientist)

 

서비스란 “특정 기능을 제공하는 것”을 이야기 합니다. 단순하게는 숫자 두개를 입력하면 덧셈 결과를 알려주는것도 서비스이고, 복잡하게는 카메라를 이용하여 사용자가 집에 왔다는 것을 감지하여 조명, 보일러 등 가전기기를 제어하고 내일 날씨를 알려주는 등의 홈 어시스턴트 기능도 서비스입니다.

 

특히 후자의 경우 다양한 외부 환경과의 연동을 필요로 합니다. DB와 연동을 위해서는 특정 DB를 사용할 줄 알아야 하고, API 서비스와 연동을 위해서는 각 API의 사양을 알아야 하는 등 task-specific 한 지식과 개발 기간도 필요합니다. 

 

따라서 복잡한 서비스의 경우 규모가 크고 다양한 분야의 전문가들이 있는 개발 조직에서만 안정적으로 제공할 수 있었고, 그조차도 서비스마다 요건이 다르기 때문에 여러 서비스를 개발하더라도 개발 비용이 크게 감소하지 않아, B2B나 B2G 레벨에서 선택지가 적은 형태로 존재하게 되었습니다.

 

그러나 LangChain은 Language + Chain 이라는 이름 그대로 복잡한 서비스도 언어 모델(Language Model, LM)을 통해 쉽게 구성할 수 있도록 돕는 역할을 제공하는데요. 특정 task에 한정된 서비스의 개발 비용을 크게 줄일 수 있으며, 개인이 복잡한 B2C 서비스 구성을 쉽게 할 수 있게 도와줍니다. 물론 운영 비용은 반대로 크게 증가하지만, 최근의 sLLM 기술의 발전 속도가 비용에 대한 우려를 불식시키는 것으로 보여집니다.

 

이러한 특성으로 인해 LangChain은 ChatGPT 서비스 런칭 한 달 여 전인 2022년 10월 말에 첫 commit을 시작으로 2023년 7월 27일 현재 56.4k의 star 수를 보유할 정도로 급격하게 발전해왔습니다. Awesome LangChain 페이지에 따르면 현재 280개 이상의 파생 콘텐츠가 LangChain을 기반으로 하고 있습니다.

 

또한 최근에는 LLM 어플리케이션의 디버그, 테스트, 평가 및 모니터링을 위한 플랫폼인 LangSmith를 발표하는 등 아주 활발히 업데이트를 하고 있기도 합니다.

 

Integration

LangChain의 주요 특징 중 하나는 대규모 오픈소스 커뮤니티를 보유하고 있다는 것입니다. 이 커뮤니티는 다양한 환경에서 LangChain과의 연동을 원하는 사용자들이 직접 개발에 참여하여, 광범위한 외부 서비스나 프레임워크와의 연동을 가능하게 합니다. 예를 들어, 채팅 모델의 연동에는 OpenAI의 API를 사용할 수 있지만 현재 그 외에도 8개의 추가 모듈을 제공하고 있습니다. 이 시리즈에서는 기본 모듈을 소개할 예정이지만, 제공되는 모듈이 이보다 훨씬 많다는 것을 염두에 두시기 바랍니다.

https://python.langchain.com/docs/integrations


Key Concepts

LangChain 공식 문서에 따르면, LangChain은 “언어 모델을 이용하여 어플리케이션을 개발하는 프레임워크” 이며 언어 모델(LM)을 다른 데이터 소스에 연결하는 데이터 인식성과 언어 모델이 주변 환경과 상호작용하게 하는 능동성을 핵심으로 내세웁니다.

 

직관적으로 보자면, 아래와 같이 텍스트로만 서비스를 구성 할 수 있다는 점이 가장 큰 특징입니다.

 

# 서비스 구성:
- A는 구글 검색을 해주는 툴이야
- B는 데이터베이스와 연동을 위한 툴이야
- A와 B를 이용해서 대화형 챗봇을 구성해줘

# 서비스 이용:
user 라는 테이블에서 kslee@mnc.ai 라는 이메일을 가진 사람의 전화번호를 구글에 검색하고
결과를 키워드로 요약해줘

 

LangChain에서 위와 같이 서비스를 구성하면 아래와 같은 순서로 작업을 수행하게 됩니다.

  1. 데이터베이스 연동 툴을 사용할 수 있음을 인식
    1. LM을 이용하여 SELECT phone FROM user WHERE email='kslee@mnc.ai' 라는 쿼리 생성
    2. db에 접속하여 쿼리를 실행하고 결과를 얻음
  2. 구글 검색 툴을 사용할 수 있음을 인식
    1. LM으로 주어진 API document를 해석하여 endpoint, method, request param, body 결정
    2. 실제 요청 후 응답 얻음
  3. LM으로 검색 결과를 키워드로 요약하여 사용자에게 응답

 

위의 예시가 그다지 복잡하지는 않지만, LangChain에서는 이를 단 몇 줄의 코드로 구성 할 수 있습니다. 특히 입력 포맷이 정해지지 않은 자연어 입력이기 때문에 말투나 언어가 바뀌어도 수행이 가능하며, DB의 종류가 바뀌거나 구글 검색이 Bing 검색으로 바뀌는 등의 세부적인 변경이 있어도 코드의 수정을 최소화할 수 있다는 장점을 갖습니다.

 

더불어, 위의 예시는 간단한 순차적 서비스를 보여주지만, Router Chain이나 Agent, Tool 등의 고수준 기능을 활용하면 서비스 플로우의 분기 설정이나 도구의 사용 가능성을 LM을 통해 결정하는 등, 더 복잡한 워크플로우 구성이 가능합니다.

 

한계

LLM으로 컴포넌트를 이해하여 서비스를 구성한다는 것은 LLM 사용의 본래 의도 외에도 LLM을 추가로 사용한다는 것을 의미하며, 이것은 막대한 비용 증가를 의미하기도 합니다. LLM 모델 특성 상 간단한 분기 로직이라도 재현을 100% 보장하지는 않는다는 것도 LangChain의 단점이며 프로덕션 레벨에서는 LangChain을 이용한 서비스 구현은 최우선 사항은 아닐 수 있습니다. 이 점을 고려하여 MNC LLMOps에서는 챗봇 레벨과 LLM 레벨에서의 서비스 구성을 구분합니다.

 

여기까지 LangChain의 배경과 기본 컨셉에 관해 살펴보았습니다. 다음 장에서는 이를 구현하기 위해 제공되는 LangChain의 모듈들에 대해 살펴보겠습니다.

 

https://mnc.ai