brunch

You can make anything
by writing

C.S.Lewis

by 알바트로스 Dec 07. 2024

LangChain과 LanGgraph는 어떻게 다를까?

RAG를 구현하는 두 가지 대표적인 프레임워크

지난 시간에는 복잡한 RAG를 마치 레고블록처럼 분리하여 관리할 수 있는 모듈러 레그(Modular RAG)라는 개념을 소개했습니다. LLM 개발자들이 애플리케이션을 개발할 때 이러한 모듈러 레그의 기능을 구현하고 복잡한 RAG를 마치 자신만의 레고블록처럼 가지고 놀 수 있는 손쉬운 방법이 있습니다. 바로 Langchain과 Langgraph와 같은 간편하면서도 강력한 개발 프레임워크들을 활용하는 것입니다.


이번 시간에는 RAG 시스템을 모듈화 하여 더욱 효율적이고 유연하게 활용할 수 있도록 도와주는 강력한 도구인 Langchain와 Langgraph 대해 알아보겠습니다. Langchain과 Langgraph는 일견 비슷한 프레임워크인 것처럼 보이지만 본질적으로 전혀 다릅니다. 둘 다 RAG 시스템을 구성하는 다양한 요소들을 연결하고 조정하는 프레임워크로 손쉽게 RAG를 구현하는 데에 중요한 역할을 하지만, 구현하는 방식에서는 큰 차이를 보이기 때문입니다.


1. Langchain이란 무엇인가?


Langchain은 RAG 시스템을 구성하는 다양한 컴포넌트를 쉽게 연결하고 관리할 수 있도록 돕는 파이프라인 프레임워크입니다. 특히, 임베딩 모델, 벡터 DB, LLM과 같은 핵심 요소들을 통합하여, 여러 종류의 모델과 도구들을 손쉽게 사용할 수 있도록 설계되어 있습니다. Langchain을 사용하면 RAG 파이프라인에서 발생할 수 있는 복잡한 작업들을 자동화하거나 추상화하여 개발자들이 시스템을 보다 쉽게 구축하고 확장할 수 있도록 돕습니다.


출처 : Langchain

한마디로 여태껏 배운 임베딩 모델, 벡터 DB, Retriever와 같은 RAG의 여러 구성 요소들을 하나의 패키지로 활용할 수 있는 종합선물셋트라고 할 수 있습니다.



2. Langgraph란 무엇인가?


LangGraph 역시 Langchain과 같이 RAG 개발을 도와주는 프레임워크라는 점에서는 동일합니다. 하지만 LangGraph는 한 발 더 나아가 LLM을 사용하여 상태를 유지하고 여러 에이전트를 포함한 애플리케이션을 쉽게 만들 수 있도록 도와주는 프레임워크입니다. LangGraph에는 LangChain의 기능을 확장하여 복잡한 에이전트 런타임 개발에 필수적인 순환 그래프를 만들고 관리할 수 있는 기능을 추가되어 있습니다. LangGraph의 핵심 개념에는 그래프 구조, 상태 관리 및 조정이 포함됩니다.


출처 : Langgraph


3. Langchain과 Langgraph는 어떻게 다른가?


랭체인(LangChain)과 랭그래프(LangGraph)는 둘 다 대규모 언어 모델(LLM)을 활용한 애플리케이션 개발을 위한 프레임워크이지만, 그 구조와 사용 목적에서 큰 차이를 보입니다. Langchain은 보다 직선적이고 경직되어 있는 반면에 Langgraph는 선형적이고 유연합니다. 


이러한 차이점이 생긴 이유는 애초에 LangGraph가 LangChain의 단점을 보완하기 위해 만들어진 프레임워크이기 때문입니다. 개발자들이 LLM을 통해서 일종의 파이프라인을 만들다 보면, 이전 LLM 결과에 대해서 다음 작업으로 넘길 때, LLM이 생성되는 결과가 잘못되어 전체 파이프라인 실패로 이어지는 경우가 많습니다. 이러한 한계점을 해결하기 위해 분기 처리나 후처리 로직을 담는 방법이 있는데 LLM의 특성상 결과가 제어되지 않습니다. 이러면 전반적인 구조나 결과를 보기가 쉽지 않았습니다. 


LangGraph는 LangChain 생태계 내에서 이러한 문제를 직접 해결하기 위해 설계된 강력한 라이브러리입니다. 이 라이브러리는 여러 LLM 에이전트(또는 체인)를 구조화된 방식으로 정의, 조정 및 실행할 수 있는 프레임워크를 제공합니다. 구체적인 차이점은 아래와 같습니다.



1) 구조 및 워크플로우


일단 구조 자체가 다릅니다. 위에서 보신 것처럼 랭체인 (LangChain)은 체인 구조를 사용합니다. 즉, 여러 구성 요소(모듈)를 순차적으로 연결하여 작업을 처리하는 방식입니다. 각 구성 요소가 직선적으로 연결되어 있으며, 각 단계가 완료되면 다음 단계로 넘어갑니다. 이 구조는 비교적 단순한 흐름을 따릅니다.


반면에 랭그래프 (LangGraph)는 그래프 구조를 사용하여 작업을 처리합니다. 여러 노드(에이전트)가 협업하고 서로 연결되어 있어, 작업을 다양한 경로로 처리할 수 있습니다. 복잡한 워크플로우에서 각 단계가 다양한 조건에 따라 실행될 수 있고, 순환 구조와 조건부 에지를 통해 더욱 유연한 흐름을 지원합니다.


출처 : 논문 AutoGen: 다중 에이전트 대화를 통한 차세대 LLM 애플리케이션 가능하게 하기



2) 상태 관리


랭체인은 메모리 모듈을 통해 상태를 유지합니다. 즉, 각 체인 실행 중에 상태를 관리하며, 단일 흐름에서 작업을 처리합니다. 랭그래프는 글로벌 상태 관리를 통해 여러 에이전트가 정보를 공유하고, 이를 바탕으로 전체 시스템의 일관성과 효율성을 유지합니다. 각 노드가 글로벌 상태를 참조하면서 동작합니다.


여러 에이전트의 상태정보를 가지는 랭그래프 (출처 : https://medium.com/@lorevanoudenhove/)


3) 유연성 및 확장성


랭체인은 구성 요소들의 조합에 유연성을 제공하지만, 주로 직선적인 체인 구조에서의 작업 흐름을 따릅니다. 주로 다소 단순한 애플리케이션에서 유용합니다. 랭그래프는 조건부 에지와 사이클 기반 구조를 통해 복잡한 다단계 작업이나 동적인 의사결정 트리 구성을 지원합니다. 이는 멀티 에이전트 협업이나 복잡한 시스템에서 특히 유용합니다.


4) 주요 사용 사례


랭체인은 문서 Q&A, 데이터 분석, API 통합 등 직선적인 흐름을 가진 작업에 적합합니다. 단순한 워크플로우를 구현할 때 유리합니다. 랭그래프는 복잡한 에이전트 간 협업, 다단계 추론, 동적인 의사결정 트리 등 복잡한 워크플로우를 관리하고 실행하는 데 유용합니다.

랭그레프를 활용한 멀티에이전트 구조(출처 : https://medium.com/@ashpaklmulani)



요약하자면 랭체인은 주로 직선적이고 간단한 애플리케이션 개발에 적합하고, 랭그래프는 복잡한 시스템과 다단계 작업, 협업이 필요한 환경에 더 적합한 프레임워크입니다. 활용 목적에 따라 두 프레임워크 중 더욱 적합한 것을 선택할 수 있습니다. 예를 들어 개발자가 원하는 복잡도와 유연성을 고려해 적합한 프레임워크를 사용할 수 있습니다. 비교적 간단한 요구 사항에 대해서는 랭체인이 좋은 대안이 될 수도 있지만 개발의 편의성이나 보다 정교한 AI 에이전트 개발에는 랭체인이 필수입니다. 

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari