블로그
그동안 다양한 콘텐츠를 통해, 대규모언어모델(LLM, Large Language Model)의 가치에 대해 확인해봤습니다.
많은 매체에서 LLM을 통해, 생산성을 높이는 방법에 대해 이야기하는 만큼, 개발의 세계에서도 LLM의 활용 가치에 대해 생각해볼 수 있을 텐데요.
오늘은 LLM을 활용한 어플리케이션 개발 프레임워크 “랭체인”에 대해 알아보겠습니다.
1. 랭체인(LangChain)이란?
LangChain is a framework for developing applications powered by large language models (LLMs).
(출처: 랭체인 문서, 링크)
랭체인은 해리슨 체이스(Harrison Chase)의 오픈 소스 프로젝트로 2022년 10월에 시작되었습니다. 이를 통해 개발된 랭체인은 LLM을 활용한 어플리케이션 개발을 단순화할 수 있도록 하는 프레임워크로, 이는 앱의 개발부터, 제품화, 배포까지 단순화합니다.
- 개발: LangChain의 오픈 소스 빌딩 블록과 구성 요소를 사용하여 애플리케이션을 개발하세요. 타사 통합 및 템플릿을 활용하여 신속하게 시작하세요.
- 제품화: LangSmith를 사용하여 체인을 검사, 모니터링하고 평가하여 지속적으로 최적화하고 자신 있게 배포하세요.
- 배포: LangServe를 사용하여 어떤 체인이든 API로 변환하세요.
(출처: 랭체인 문서, 링크)
랭체인 공식 문서에서 소개하는 랭체인의 사용 사례는 다음과 같습니다.
- RAG(Retrieval-Augmented Generation)를 사용한 질문 응답 (링크)
- 구조화된 출력 추출 (링크)
- 챗봇 (링크)
2. 랭체인의 모듈
pip install langchain
pip 명령을 활용한 랭체인의 기본 설치 코드
랭체인은 파이썬이나 자바스크립트 기반의 라이브러리를 기반으로 사용할 수 있습니다.
랭체인을 설치하고 나면, 그 안의 6개의 모듈을 사용할 수 있는데요.
모델 I/O (Model I/O)
: 언어 모델과의 상호 작용을 담당하며, 입력과 출력을 처리합니다. 랭체인은 모든 언어 모델과의 인터페이스할 수 있는 환경을 제공합니다.
[사진1] 모델 I/O (출처: 링크)
데이터 연결 (Data Connection)
: 많은 LLM 어플리케이션은 모델의 학습 세트에 포함되지 않은 사용자별 데이터가 필요합니다. 이를 달성하는 주요 방법은 검색 보강 생성(RAG)입니다. 랭체인은 애플리케이션별 데이터와 상호 작용하는 인터페이스를 제공하며, 데이터를 로드, 변환, 저장 및 쿼리하기 위한 빌딩 블록을 제공합니다.
[사진2] 데이터 연결 (출처: 링크)
체인 (Chain): 체인은 호출의 일련의 순서를 나타냅니다 - LLM(언어 모델), 도구 또는 데이터 전처리 단계에 대한 호출이 될 수 있습니다. 이 모듈은 애플리케이션의 작업 흐름을 결정하고 실행하는 데 필요한 호출 시퀀스를 정의합니다.
에이전트 (Agent): 에이전트는 언어 모델을 사용하여 취해야 할 일련의 조치를 선택합니다. 체인에서는 일련의 조치가 하드코딩되어 있습니다. 그러나 에이전트에서는 언어 모델이 추론 엔진으로 사용되어 어떤 조치를 취할지와 그 순서를 결정합니다.
메모리 (Memory): 체인 실행 중에 애플리케이션 상태를 유지합니다. 이 모듈은 체인이 실행되는 동안 필요한 데이터 및 상태 정보를 관리합니다.
콜백 (Callback): 체인의 중간 단계를 기록하고 스트리밍합니다. 이 모듈은 체인의 실행 과정을 모니터링하고, 중간 단계에서 필요한 작업을 수행할 수 있도록 지원합니다.
이러한 랭체인을 활용하는데는 ‘랭체인 식 언어’인 LCEL(LangChain Expression Language)가 사용되는데요. LCEL는 LangChain 구성 요소의 기반으로, 체인을 구성하는 선언적인 방법입니다. LCEL은 프로토타입을 코드 변경 없이 제품으로 출시하는 것을 지원하기 위해 설계되었습니다.
3. 랭체인 도입 사례
랭체인은 랭체인의 초기 도입 사례로, 일본의 리테일 기업 라쿠텐(Rakuten)을 소개했는데요. 그 내용을 일부 요약하면 다음과 같습니다.
- 랭체인은 라쿠텐에 LLM을 활용해 개발하는 데 공통되고 성공적인 상호 작용 패턴을 제공
- 랭스미스 테스트 및 평가와 사용자 정의 평가 매트릭스를 사용하여 다양한 접근 방식 (모델, 인지구조 등)에 대한 실험을 실행하고 결과를 측정
- 데이터는 라쿠텐의 환경 내에서 유지되며, 랭스미스를 사용하여 개발 워크플로우와 프로덕션용 액세스를 분리할 수 있었음
(출처: 링크)
한 편, 라쿠텐은 올해 대규모 일본어 데이터셋으로 훈련한 대형언어모델(LLM), Rakuten/RakutenAI-7B를 출시하면서 AI 역량을 향상하고 있습니다.
(출처: 링크)
랭체인은 현재 별도의 법인으로서, 주요 제품인 랭체인(LangChain), 랭스미스(LangSmith), 랭서브(LangServe)를 꾸준히 업데이트 하고 있는데요. 지난 4월 24일에는 마이크로소프트(Microsoft)사의 애저 쿠버네티스 어플리케이션(Azure Kuberetes Application)으로서 랭스미스를 애저 마켓플레이스에 출시하면서, LLM 어플리케이션을 개발, 협업, 테스트 및 모니터링하는 통합된 데브옵스(DevOps) 플랫폼으로서의 랭스미스의 입지를 확장하고 있습니다. (출처: 링크) 뛰어난 퍼포먼스를 보이는 LLM의 활용안을 모색하는 가운데, 랭체인의 영향력이 주목됩니다.
-
Reference
Martin Heller, InfoWorld (2023.09.13), “LLM 개발을 더 간편하게” 랭체인(LangChain)의 이해
https://www.itworld.co.kr/news/307189
IBM, “What is LangChain?”
https://www.ibm.com/topics/langchain
LangChain
https://www.langchain.com/about
LangChain Introduction
https://python.langchain.com/docs/get_started/introduction
AI타임즈, “라쿠텐, 최강 일본어 성능 LLM 출시...벤치마크 69점 기록”
https://www.aitimes.com/news/articleView.html?idxno=158411