랭체인(LangChain)은 대규모 언어 모델과 앱의 통합을 간소화하는 SDK*다. 최근 LLM 모델의 부상과 함께 그 활용성의 측면에서 랭체인의 범용성 또한 퍼지고 있다. 새로운 오픈소스 모델의 출시나 상용 모델 제공업체의 기능이 바뀔 때마다 이 랭체인의 장점은 더욱 강력하게 작용한다.
SDK
소프트웨어 개발 키트(SDK)는 개발자를 위한 플랫폼별 구축 도구 세트입니다. 특정 플랫폼, 운영 체제 또는 프로그래밍 언어에서 실행되는 코드를 만들려면 디버거, 컴파일러 및 라이브러리와 같은 구성 요소가 필요합니다. SDK는 소프트웨어를 개발하고 실행하는 데 필요한 모든 것을 한 곳에서 제공합니다. 또한 SDK에는 문서, 튜토리얼 및 가이드와 같은 리소스와 더 빠른 애플리케이션 개발을 위한 API 및 프레임워크가 포함됩니다. (출처 - https://aws.amazon.com/ko/what-is/sdk/)
📡 통합 API 레이어 구축
1️⃣ LLM의 단점??
먼저 정보 접근의 제한이다. 일례로 ChatGPT 3.5의 경우, 2021년까지의 데이터를 학습한 LLM으로, 22년도부터의 정보에 대해서는 제대로 된 답변을 하지 못하거나, 그럴 듯한 거짓말을 지어내서 답변하는 경우가 많다. 이것이 사용자의 측면에서의 단점이있다면, LLM을 개발해야 하는 개발자의 입장에서 생기는 단점도 있다.
LLM 기반의 앱에서 수행해야 하는 작업은 대체로 개발자에게 많은 작업을 요구한다. 일례로 매개변수 조정부터 프롬프트 보강, 응답 조정에 이르기까지 고려해야 할 요소가 많은데, 기존의 데이터(ex. ~ 2022년도)만을 가지고서 학습을 하는 LLM의 특성 상 새로운 기록을 받고, 이를 기록의 형태로 유지하는 것이 힘들다. 새로운 대화를 기록하고 컨텍스트를 다시 가져오려면 영구 데이터베이스가 필요할 수도 있다. 결국 LLM 의 단, 장기 메모리를 추가하는 것도 개발자의 몫이다.
또 한 가지는 LLM의 일률적 규칙이 없다는 점이다. 감정 분석, 분류, 질문 답변, 문서 요약 등 다양한 시나리오에 특화된 여러 모델을 사용해야 할 수도 있다. 결국 여러 LLM을 사용해야 한다는 것인데, 이는 상당히 많은 작업과 복잡도를 발생시킨다.
2️⃣ 랭체인이 뭔데?
랭체인은 LLM 과 앱의 통합을 간소화하도록 설계된 SDK로, 앱과 언어 모델의 통합을 굉장히 간소화시킨 프레임워크다. 결국 LLM 앱을 구축하기 위한 통합 API 레이어를 제공하는 것인데, 그 흐름도를 간단히 살펴보면 아래와 같다.
랭체인은 앞서 말한 단일 LLM의 단점을 상쇄하는 툴들을 제공한다. 우선 존재하는 데이터만의 학습으로 인한 정보 접근 제한은 VectoreStore를 기반으로 정보 탐색 혹은 Agent 라는 툴을 활용해서 다양한 접근이 가능하도록 한다. 그리고 환각 현상이라고도 하는 거짓 답변 제공에 대한 문제는 오로지 주어진 문서에 대해서만 모델이 답할 수 있도록 프롬프트를 입력하게 할 수 있다.
마지막으로 이 Chain이라는 강력한 요소는 개발 전반의 과정을 크게 줄여줄 수 있다는 점에서 굉장히 큰 장점으로 작용한다.
3️⃣ 핵심 기능 4가지
1) 환경 인식 : LLM과 소스의 연동을 원활하게 도와준다. 즉, 앱이 LLM에 대한 컨텍스트를 구축하기 위해 여러 파일(ex. pdf, 웹 페이지, csv, 관계형 DB등)의 외부 소스에서 데이터를 검색하는 경우가 생기는데, 이 때 랭체인은 서로 다른 환경에서 데이터에 접근하고 검색할 수 있게 모듈을 제공한다.
2) 단어 임베딩 : 그렇게 외부 환경에서 가져온 데이터를 언어 모델이 이해할 수 있는 형태로 만드려면, 데이터를 벡터로 변환하는 작업이 필요하다. 그래야 언어 모델과 관련된 단어 임베딩 모델에 전달할 수 있기 때문이다. 랭체인은 선택한 LLM 모델을 기반으로 최적의 임베딩 모델을 알아서 선정해준다.
3) 벡터 데이터베이스 : 생성된 임베딩 벡터는 유사성 검색을 위해 벡터 데이터베이스에 저장된다. 랭체인은 메모리 내 배열부터 파인콘(Pinecone -> ?? 아직 DB 와의 연동성은 잘 모르겠음.. ) 과 같은 호스팅 벡터 DB 까지 다양한 소스에서 벡터를 쉽게 저장하고 검색할 수 있게 지원한다고 한다.
4) 다양한 LLM 모델 지원 : 랭체인은 오픈 AI나 코히어(Cohere) 등에서 제공하는 LLM과 허깅페이스에서 제공하는 오픈소스 LLM을 지원한다. 지원되는 모델과 API 엔드포인트도 계속해서 증가 중이다.
+) 에이전트(Agent) : LLM 이 가진 추론과 행동의 영역에서 사용되는 모듈로, 언어 모델을 통해 어떤 작업을 어떤 순서로 수행할지 결정하는데 사용한다. 예를 들어, 언어 모델에게 '웹'을 검색하는 기능을 부여하던지, 혹은 문서를 인터넷에서 '검색'할 수 있게 하는 기능을 준다던지 등을 Agent를 통해 수행할 수 있다.
♻️ LangChain의 개발 생애 period
1) 템플릿을 활용한 앱 기능 개발
2) LLM 체인 검사 (LangSmith 툴), 테스트, 모니터링
3) 서빙(serving) 혹은 배포 (LangServe). 모든 LLM 체인 API 개발
Ref)
https://bigwaveai.tistory.com/76
LangChain: LLM 서비스를 어떻게 개발할 수 있을까?
Introduction 안녕하세요! 빅웨이브에이아이 이현상입니다! 요즘 들어 블로그 포스트를 거의 올리지 못해 저도 참 아쉬웠는데요, 사실 저도 직장 근무를 하면서 회사 블로그 운영하기가 쉽지는 않
bigwaveai.tistory.com
https://www.ciokorea.com/column/305341#csidx973f1264e8a2e758d10e50c3f1541b5
기고 | LLM과 함께 뜨는 중··· 개발자를 위한 '랭체인' 안내서
랭체인(LangChain)은 노출하여 대규모 언어 모델과 애플리케이션의 통합을 간소화하는 SDK이다. 대규모 언어 모델의 부상과 함께 중요성이
www.ciokorea.com
'머신러닝(ML), 딥러닝(DL) > 자연어처리(NLP)' 카테고리의 다른 글
Transformers [NLP] (0) | 2024.04.29 |
---|---|
ELECTRA / ELECTRA-small [NLP/DL] (1) | 2024.04.26 |