1. LangChain 개요
1.1 LangChain이란?
- 대규모 언어 모델(LLM)을 활용하여 애플리케이션을 개발하기 위한 오픈 소스 프레임워크
- 2022년 10월, 머신러닝 스타트업 Robust Intelligence의 해리슨 체이스에 의해 공개됨
- LLM의 잠재력을 극대화하고, 외부 데이터와 통합하여 보다 복잡하고 유용한 애플리케이션을 구축할 수 있도록 설계됨
- AI 애플리케이션 개발의 복잡성을 줄이고, 확장 가능성과 유연성을 제공하는 강력한 도구로 자리 잡음
- 현재, 수많은 AI 서비스가 LLM + LangChain 기반으로 개발, 운영되고 있음
1.2 LangChain의 개념
- 이름 그대로 “언어의 체인”을 의미
- LLM에게 어떤 문제에 대한 일을 시키기 위하여 프롬프트를 작성할 경우, 사용자의 프롬프트를 곧바로 LLM에게 전달하는 것이 아니라 하나의 프롬프트 템플릿을 거쳐 전달하도록 추가적인 “연결고리”를 만들어 원하는 답변을 이끌어 내는 것
- 따라서 LangChain에서는
- 프롬프트 변형을 위한 프롬프트 템플릿 제공
- LLM 서비스 개발을 위한 다양한 모듈 제공
- (RAG를 위한 모듈의 예)
- Models: 여러 LLM을 애플리케이션에 통합
- Prompts: 사용자의 프롬프트를 재가공
- Document Loaders: 벡터 DB로 구축할 문서를 불러옴
- Text Splitters: 불러온 문서를 여러 청크로 분할
- Vector Stores: 분할된 텍스트 청크들을 저장
- Outpt Parsers: 원하는 답변의 형태로 재가공
1.3 주요 특징
- 데이터와의 통합
- 데이터베이스, 파일 시스템 등 다양한 외부 데이터 소스와 연결해 실시간 데이터를 활용하는 애플리케이션 개발 가능
- 유연한 구성 요소
- 프롬프트 체인, 에이전트, 메모리 등을 통해 복잡한 작업을 간소화
- 오픈 소스 및 커뮤니티 지원
- 무료로 사용 가능
- 활발한 커뮤니티를 통해 지원받을 수 있음
1.4 주요 모듈과 기능
- Model I/O
- 다양한 대규모 언어 모델(LLM), 채팅 모델, 임베딩 모델과의 인터페이스 제공.
- 텍스트 데이터를 벡터로 변환하는 임베딩 모델 지원
- 모델 출력에서 정보를 추출하는 기능 포함
- Prompt
- 프롬프트 생성 및 관리, 최적화 도구 제공
- Prompt Templates: 동적 프롬프트 생성
- Example Selectors: 상황에 맞는 예제 선택
- Output Parsers: LLM의 응답을 구조화된 형식으로 변환
- 예제 선택 및 출력 파싱 기능 포함
- Retrieval (Data Connection)
- 외부 데이터에서 정보를 검색하여 LLM과 연결(통합) 지원
- 문서 로더, 데이터 분할, 벡터 저장소 등의 기능 제공
- Document Loaders: 다양한 소스에서 문서 로드
- Document Transformers: 문서 분할 및 변환
- Vector Stores: 임베딩 데이터를 저장 및 검색
- Retrievers: 데이터 쿼리 처리
- Memory
- 대화형 애플리케이션에서 상태를 유지하기 위한 메모리 관리
- 대화 데이터를 저장하고 상태를 유지하여 문맥 인식을 강화
- 이전 대화나 작업 데이터를 저장하고 참조 가능
- Chain
- 여러 작업을 순차적으로 연결하는 체인 구성
- LLM Chains: 기본 프롬프트와 LLM 기반 체인
- Sequential Chains: 순차적 작업 처리
- Router Chains: 질문 주제에 따라 적절한 체인으로 라우팅
- Agents
- 주어진 작업에 적합한 도구와 모델을 선택해 실행
- LM이 작업 순서를 결정하고 외부 리소스와 상호작용 가능
- Tools와 이를 묶은 Toolkits 제공
1.5 활용 분야
- 사용자 맞춤형 콘텐츠 생성
- 다국어 번역 및 질의응답 시스템
- 실시간 데이터 기반 애플리케이션 구축