LangChain이란?
LangChain은 LLM을 기반으로 하는 애플리케이션을 구축하기 위한 프레임워크로, 주로 순차적인 작업을 처리하는 데 강점을 가집니다. 예를 들어, 데이터를 가져와 요약하고, 그 요약을 바탕으로 사용자에게 답변을 생성하는 순차적인 프로세스를 쉽게 구현할 수 있습니다.
- 구성 요소:
- 문서 로더: 다양한 데이터 소스에서 정보를 불러옵니다.
- 텍스트 분리기: 큰 문서를 의미 있는 작은 덩어리로 나눕니다.
- 체인(Chain): 여러 LLM 작업을 연결하여 실행합니다.
- 메모리: 대화의 맥락을 저장하여 이전 대화 내용을 활용할 수 있습니다.
- 적합한 용도:
- 순차적인 프로세스를 자동화하고, 한 단계씩 처리하는 워크플로우에 적합합니다.
- 예: 데이터 가져오기 → 요약 → 질문 응답
2. LangGraph란?
LangGraph는 비선형적이고 상태를 유지하는 다중 에이전트 시스템을 구축하는 데 특화된 프레임워크입니다. 복잡한 상태 관리와 다양한 사용자 상호작용을 처리하는 데 강점을 가집니다. 예를 들어, 작업 관리 보조 시스템처럼, 사용자 입력에 따라 동적으로 작업을 추가하고 완료하며 요약하는 시스템을 쉽게 만들 수 있습니다.
- 구성 요소:
- 노드(Node): 각 작업(예: 작업 추가, 완료, 요약 등)을 처리하는 단위.
- 엣지(Edge): 작업 간 전환을 나타내는 연결.
- 상태(State): 시스템의 상태를 유지하며, 이전 상태를 기반으로 후속 작업을 처리합니다.
- 적합한 용도:
- 복잡한 다중 에이전트 시스템과 비선형 워크플로우에 적합합니다.
- 예: 사용자 입력 → 작업 추가 → 작업 완료 → 작업 요약
3. 주요 차이점 비교
1) 핵심 초점
- LangChain: LLM을 연결하여 순차적인 작업을 처리하는 데 중점.
- LangGraph: 다중 에이전트를 활용하여 상태를 유지하는 비선형적 작업 처리.
2) 구조
- LangChain: 체인 구조 (단방향 작업 흐름), 주로 순차적인 작업에 유리.
- LangGraph: 그래프 구조 (노드와 엣지), 작업 간 순서를 자유롭게 조정하며, 상태를 유지할 수 있음.
3) 상태 관리
- LangChain: 메모리 구성 요소를 통해 일정 부분 상태를 유지할 수 있으나, 상태 관리에 제한적.
- LangGraph: 상태 관리가 핵심이며, 모든 노드에서 상태를 공유하고 수정할 수 있어 복잡한 상호작용에 강점.
4) 적용 분야
- LangChain: 데이터를 처리하고, 이를 요약한 후 답변을 생성하는 연속적이고 순차적인 프로세스에 적합.
- LangGraph: 사용자의 다양한 입력을 처리하고, 상태를 관리하며, 상호작용하는 복잡한 시스템에 적합.
4. 언제 어떤 프레임워크를 사용해야 할까?
- LangChain을 선택할 때:
- 명확한 순차적인 프로세스가 필요할 때. 예를 들어, 데이터를 크롤링하고 요약한 후 사용자에게 답변을 제공하는 경우.
- 복잡한 상태 관리가 필요 없고, 각 단계가 순차적으로 이루어지는 워크플로우에 적합합니다.
- LangGraph를 선택할 때:
- 복잡한 상호작용과 상태를 관리해야 하는 경우. 예를 들어, 사용자가 여러 작업을 추가하거나 완료하는 과정에서 이전 상태를 고려해야 할 때.
- 여러 에이전트가 서로 상호작용하고, 그 상태를 실시간으로 업데이트해야 하는 시스템에 유리합니다.
5. 결론
LangChain과 LangGraph는 각각 다른 문제를 해결하는 데 특화된 프레임워크입니다. LangChain은 LLM을 활용한 순차적인 작업 처리에 뛰어나고, LangGraph는 복잡한 상태 관리와 비선형적 흐름을 처리하는 데 강점을 보입니다. 프로젝트의 특성과 요구 사항에 맞는 프레임워크를 선택하여 효과적으로 활용할 수 있습니다.