랭체인과 랭그래프: 관계자가 알려주는 선택의 기준

AI 기술 자료게시됨 6 개월 전 AI 공유 서클
9K 00

생성 AI 분야는 현재 새로운 프레임워크와 기술이 등장하면서 빠르게 진화하고 있습니다. 따라서 독자들은 이 글에 제시된 내용이 최신 정보가 아닐 수도 있다는 점을 인지해야 합니다. 이 글에서는 LLM 애플리케이션 구축을 위한 두 가지 주요 프레임워크인 LangChain과 LangGraph에 대해 자세히 살펴보고 장단점을 분석하여 가장 적합한 도구를 선택하는 데 도움을 드리고자 합니다.

LangChain vs. LangGraph:官方告诉你该如何选择

 

랭체인 및 랭그래프 파운데이션 컴포넌트

두 프레임워크의 기본 요소를 이해하면 개발자가 핵심 기능을 처리하는 방법의 주요 차이점을 더 깊이 이해하는 데 도움이 될 수 있습니다. 다음 설명은 각 프레임워크의 모든 구성 요소를 나열하지는 않지만 전반적인 설계에 대한 명확한 이해를 돕기 위한 것입니다.

LangChain

LangChain은 크게 두 가지 방식으로 사용할 수 있습니다: 사전 정의된 명령의 순차적 체인(체인)과 도구 및 구성 측면에서 서로 다른 LangChain 에이전트로 사용할 수 있습니다. 체인은 사전 정의된 선형 워크플로우를 사용하는 반면, 에이전트는 코디네이터 역할을 하며 보다 동적인(비선형) 결정을 내릴 수 있습니다.

  • 체인LLM, 에이전트, 도구, 외부 데이터 소스 및 절차적 코드에 대한 호출을 포함할 수 있는 단계의 조합입니다. 체인은 논리적 조건부 분기를 기반으로 단일 프로세스를 여러 경로로 분할할 수 있습니다.
  • 에이전트 또는 LLMLLM 자체는 자연어 응답을 생성할 수 있지만 에이전트는 LLM을 추론하고 도구를 호출하며 실패할 경우 도구를 호출할 수 있는 추가 기능과 결합합니다.
  • 도구는 체인으로 호출하거나 에이전트가 트리거하여 외부 시스템과 상호 작용할 수 있는 코드 함수입니다.
  • 프롬프트시스템 프롬프트(모델이 작업을 완료하는 방법 및 사용 가능한 도구를 나타내기 위한), 외부 데이터 소스에서 주입된 정보(모델에 더 많은 컨텍스트를 제공하기 위한) 및 사용자 입력 작업을 포함합니다.

LangGraph

LangGraph 는 AI 워크플로우 구축에 다른 접근 방식을 취합니다. 이름에서 알 수 있듯이 워크플로를 그래프로 오케스트레이션합니다. AI 에이전트, 절차적 코드 및 기타 도구 간에 유연하게 전환할 수 있기 때문에 선형 체인, 분기 체인 또는 단순한 에이전트 시스템으로는 충분하지 않은 복잡한 애플리케이션 시나리오에 더 적합하며, LangGraph는 더 복잡한 조건부 로직과 피드백 루프를 처리하도록 설계되었으며 LangChain보다 더 강력합니다.

  • 그래프또한 LangGraph는 특정 노드에 여러 번 액세스할 수 있는 루프와 피드백 메커니즘을 생성하는 순환 그래프를 지원합니다.
  • 노드: LLM 쿼리, API 호출 또는 도구 실행과 같은 워크플로우의 단계를 나타냅니다.
  • 엣지 및 조건부 엣지엣지는 노드를 연결하고 정보의 흐름을 정의하여 한 노드의 출력이 다음 노드의 입력으로 사용되도록 하는 데 사용됩니다. 조건부 엣지를 사용하면 특정 조건이 충족될 때 한 노드에서 다른 노드로 정보가 흐르도록 할 수 있습니다. 개발자는 이러한 조건을 사용자 지정할 수 있습니다.
  • 상태상태는 그래프의 현재 실행에 필요한 모든 관련 정보를 포함하는 개발자가 정의한 변수 TypedDict 객체입니다. 상태는 그래프의 현재 실행에 필요한 모든 관련 정보를 포함하는 개발자 정의 변수 TypedDict 객체입니다.LangGraph는 각 노드에서 상태를 자동으로 업데이트합니다.
  • 에이전트 또는 LLM그래프의 LLM은 입력에 대한 텍스트 응답을 생성하는 역할만 담당합니다. 반면 에이전트 기능을 사용하면 그래프에 에이전트의 다양한 구성 요소(예: 추론, 도구 선택, 도구 실행)를 나타내는 여러 노드를 포함할 수 있습니다. 에이전트는 그래프에서 어떤 경로로 이동할지 결정하고 그래프의 상태를 업데이트하며 텍스트 생성 이외의 더 많은 작업을 수행할 수 있습니다.

간단히 말해, LangChain은 선형 및 도구 기반 호출에 더 적합하며, LangGraph는 피드백 메커니즘이 있는 복잡한 다중 경로 및 AI 워크플로에 더 적합합니다.

 

핵심 기능을 처리하는 방식에서 LangChain과 LangGraph의 차이점

LangChain은 선형 워크플로우(체인을 통한) 또는 다양한 AI 에이전트 패턴에 중점을 두는 반면, LangGraph는 AI 에이전트를 통합할 수 있는 보다 유연하고 세분화된 프로세스 기반 워크플로우를 만드는 데 중점을 두는 등 일부 기능이 중복되지만 문제에 대한 접근 방식은 다릅니다, 도구 호출, 절차 코드 등을 통합할 수 있습니다.

일반적으로 LangChain은 더 많은 추상화 캡슐화와 사전 정의된 구성을 제공하기 때문에 학습 곡선이 상대적으로 낮으며, 간단한 사용 시나리오에 적용하기가 더 쉽습니다. 반면에 LangGraph는 워크플로 설계를 세밀하게 사용자 정의할 수 있으므로 덜 추상적이며 개발자가 효과적으로 사용하기 위해 더 많은 학습이 필요합니다.

도구 호출

LangChain

LangChain에서 도구가 호출되는 방식은 체인에서 일련의 단계가 순차적으로 수행되는지 또는 에이전트 기능만 사용되는지(체인에 명시적으로 정의되지 않음)에 따라 달라집니다.

  • 도구는 체인에 미리 정의된 단계로 포함되므로 에이전트에 의해 반드시 동적으로 호출되는 것이 아니라 체인이 설계될 때 어떤 도구가 호출될지 결정됩니다.
  • 에이전트가 체인에 정의되어 있지 않은 경우 에이전트는 더 많은 자율성을 가지며 액세스 권한이 있는 도구 목록에 따라 언제 어떤 도구를 호출할지 결정할 수 있습니다.

체인 접근 방식에 대한 프로세스 예시입니다:

LangChain vs. LangGraph:官方告诉你该如何选择

다음은 에이전트 메서드의 흐름에 대한 예시입니다:

LangChain vs. LangGraph:官方告诉你该如何选择

LangGraph

LangGraph에서 도구는 일반적으로 그래프에서 노드로 표시됩니다. 그래프에 에이전트가 포함된 경우 에이전트는 추론 능력에 따라 어떤 도구를 호출할지 결정할 책임이 있습니다. 에이전트가 도구를 선택하면 워크플로는 해당 도구 노드로 이동하여 해당 도구의 작업을 수행합니다. 에이전트와 도구 노드 사이의 에지에는 도구 실행 여부를 결정하는 추가 판단 로직을 추가하는 조건부 로직이 포함될 수 있습니다. 이러한 방식으로 개발자는 보다 세밀하게 제어할 수 있습니다. 그래프에 에이전트가 없는 경우, 도구는 LangChain 체인과 유사한 방식으로, 즉 미리 정의된 조건부 로직에 따라 워크플로우에서 실행되는 방식으로 호출됩니다.

상담원용 다이어그램 흐름의 예가 포함되어 있습니다:

LangChain vs. LangGraph:官方告诉你该如何选择

에이전트가 없는 다이어그램의 흐름 예시입니다:

LangChain vs. LangGraph:官方告诉你该如何选择

역사와 기억에 대한 대화

LangChain

LangChain은 대화 기록과 메모리를 처리하기 위한 추상화 계층을 내장하고 있습니다. 다양한 수준의 세분화된 메모리 관리 기능을 지원하여 토큰 수량을 주로 다음과 같은 방법으로 계산합니다:

  • 전체 세션 대화 내역(전체 세션 대화 내역)
  • 대화 기록 요약 버전(요약된 대화 기록)
  • 사용자 정의 메모리(CDM)

또한 개발자는 장기 기억 시스템을 사용자 지정하여 대화 기록을 외부 데이터베이스에 저장하고 필요할 때 관련 기억을 검색할 수 있습니다.

LangGraph

LangGraph에서 State는 메모리 관리를 담당하며, 매 순간마다 정의된 변수를 기록하여 상태 정보를 추적합니다.State에는 다음이 포함될 수 있습니다:

  • 역사와의 대화
  • 의무 이행 단계
  • 언어 모델의 마지막 출력
  • 기타 중요한 정보

각 노드가 시스템의 현재 상태에 액세스할 수 있도록 노드 간에 상태를 전달할 수 있습니다. 그러나 LangGraph 자체는 세션 전반에 걸쳐 장기 메모리를 제공하지 않습니다. 개발자가 메모리를 지속적으로 저장해야 하는 경우, 나중에 검색할 수 있도록 외부 데이터베이스에 메모리와 변수를 저장하는 특정 노드를 도입할 수 있습니다.

즉시 사용 가능한 RAG 기능

LangChain

LangChain은 기본적으로 복잡한 RAG 워크플로우를 지원하며 개발자가 애플리케이션에 RAG를 쉽게 통합할 수 있도록 정교한 도구 세트를 제공합니다. 예를 들어 다음을 제공합니다:

  • 문서 로드
  • 텍스트 구문 분석
  • 창작물 임베딩
  • 벡터 스토리지
  • 검색 기능(검색 기능)

개발자는 LangChain에서 제공하는 API를 직접 사용할 수 있습니다( langchain.document_loaderslangchain.embeddings 노래로 응답 langchain.vectorstores)를 사용하여 RAG 워크플로우를 구현합니다.

LangGraph

LangGraph에서 RAG는 개발자가 설계하고 그래프 구조의 일부로 구현해야 합니다. 예를 들어 개발자는 각각에 대해 별도의 노드를 만들 수 있습니다:

  • 문서 구문 분석
  • 임베딩 계산(임베딩 계산)
  • 시맨틱 검색(검색)

이러한 노드는 노멀 엣지 또는 조건부 엣지를 통해 서로 연결될 수 있으며, 개별 노드의 상태를 사용하여 정보를 전달함으로써 RAG 파이프라인의 여러 단계 간에 데이터를 공유할 수 있습니다.

병렬 처리

LangChain

LangChain을 사용하면 여러 체인 또는 에이전트를 병렬로 실행할 수 있습니다. RunnableParallel 클래스를 사용하여 기본적인 병렬 처리를 구현합니다.

그러나 고급 병렬 계산이나 비동기 도구 호출이 필요한 경우 개발자는 다음과 같은 Python 라이브러리를 사용해야 합니다. asyncio) 자체 구현.

LangGraph

LangGraph는 노드 간에 종속성이 없는 한(예: 한 LLM의 출력을 다음 노드의 입력으로 사용할 수 없는 경우) 노드의 병렬 실행을 자연스럽게 지원합니다. 즉, 상호 의존적인 노드가 아니라면 여러 에이전트를 동시에 실행할 수 있습니다.

LangGraph에서도 지원됩니다:

  • 활용 RunnableParallel 여러 그래프 실행
  • 파이썬의 asyncio 라이브러리 병렬 호출 도구

재시도 로직 및 오류 처리

LangChain

LangChain의 오류 처리는 개발자가 명시적으로 정의해야 하며, 이를 통해 수행할 수 있습니다:

  • 체인 내 재시도 로직 소개(재시도 로직)
  • 상담원의 툴 호출 실패 처리하기

LangGraph

LangGraph는 오류 처리를 별도의 노드로 만들어 워크플로우에 직접 오류 처리 로직을 포함할 수 있습니다.

  • 작업이 실패하면 다른 오류 처리 노드로 이동하거나 현재 노드에서 다시 시도할 수 있습니다.
  • 실패한 노드는 전체 워크플로가 다시 실행되는 것이 아니라 개별적으로 다시 시도됩니다.
  • 이렇게 하면 다이어그램을 처음부터 다시 시작할 필요 없이 실패한 지점부터 계속 실행할 수 있습니다.

작업에 여러 단계와 도구 호출이 포함된 경우 이 오류 처리 메커니즘이 매우 중요할 수 있습니다.

 

랭체인과 랭그래프 중 어떤 것을 선택하나요?

개발자는 할 수 있습니다:

  • LangChain만 사용
  • LangGraph만 사용
  • 랭체인과 랭그래프 함께 사용하기

또한 LangGraph의 그래프 구조화 기능을 Microsoft의 AutoGen과 같은 다른 에이전트 프레임워크와 결합할 수도 있습니다. 자동 생성 에이전트를 LangGraph의 노드로 사용합니다.

랭체인과 랭그래프는 각각 장점이 있기 때문에 올바른 도구를 선택하는 것이 혼란스러울 수 있습니다.

랭체인은 언제 선택해야 하나요?

개발자가 AI 워크플로를 빠르게 구축해야 하는 경우, 다음은 LangChain을 선택하는 데 고려해야 할 몇 가지 시나리오입니다:

  • 선형 작업문서 검색, 텍스트 생성, 요약 등을 위한 사전 정의된 워크플로입니다.
  • 동적 의사 결정이 필요한 AI 에이전트를 사용하지만 복잡한 프로세스를 세밀하게 제어할 필요는 없습니다.

LangGraph는 언제 선택해야 하나요?

애플리케이션 시나리오에 비선형(비선형) 워크플로우가 필요한 경우 다음 상황에 대해 LangGraph를 고려하세요:

  • 이 작업에는 여러 구성 요소의 동적 상호 작용이 포함됩니다.
  • 조건부 판단, 복잡한 분기 로직, 오류 처리 또는 병렬 실행이 필요합니다.
  • 개발자는 LangChain에서 제공하지 않는 일부 기능을 자체적으로 구현할 의향이 있습니다.

랭체인과 랭그래프는 언제 함께 사용해야 하나요?

LangChain의 즉시 사용 가능한 추상화 기능(예: RAG 구성 요소, 대화 메모리 등)과 LangGraph의 비선형 오케스트레이션 기능을 모두 활용하고 싶다면, 두 기능을 모두 사용하는 것을 고려할 수 있습니다.

이 두 가지를 결합하면 각자의 강점을 최대한 활용하여 더욱 유연하고 강력한 AI 워크플로우를 만들 수 있습니다.

© 저작권 정책

관련 문서

댓글 없음

댓글에 참여하려면 로그인해야 합니다!
지금 로그인
없음
댓글 없음...