2023. 11. 22.
최근 RAG(Retrieval-Augmented Generation) 시스템이 다양한 분야에서 활용되면서, 그 복잡성과 효율성에 대한 고민이 깊어지고 있습니다. 이러한 상황에서 LangGraph는 복잡한 RAG 시스템의 성능을 향상시키는 강력한 도구로 주목받고 있습니다. 이 글에서는 LangGraph가 왜 복잡한 RAG 시스템의 해답이 될 수 있는지에 대해 자세히 살펴보겠습니다.
LangGraph란 무엇인가?
LangGraph는 상태 기반의 그래프 아키텍처를 활용하여 복잡한 RAG 시스템을 구성하고 관리할 수 있는 프레임워크입니다. 이를 통해 개발자는 각 단계의 상태를 명확하게 정의하고, 조건에 따라 흐름을 제어할 수 있습니다.
LangGraph의 핵심 구성 요소
상태(State): 애플리케이션의 현재 상태를 나타내는 공유 데이터 구조입니다.
노드(Node): 각 노드는 특정 작업(예: 정보 검색, 응답 생성, 평가 등)을 수행하는 독립적인 단위입니다.
엣지(Edge): 노드 간의 연결을 정의하며, 조건에 따라 흐름을 제어할 수 있습니다.
이러한 구조는 복잡한 RAG 파이프라인을 명확하게 시각화하고 관리할 수 있게 해줍니다. 예를 들어, 검색, 생성, 평가 등의 단계를 각각의 노드로 정의하고, 조건에 따라 흐름을 제어할 수 있습니다.
LangGraph의 주요 기능
1. 상태 기반 워크플로우 관리
LangGraph는 상태 머신(state machine) 아키텍처를 기반으로 하여, 각 노드와 엣지를 통해 워크플로우를 구성합니다. 이러한 구조는 복잡한 RAG 파이프라인을 명확하게 시각화하고 관리할 수 있게 해줍니다.
2. 다중 에이전트 시스템 구현
LangGraph를 활용하면 각 에이전트를 독립적인 노드로 구성하여, 전문화된 작업을 수행하도록 할 수 있습니다. 예를 들어, 하나의 에이전트는 정보 검색을, 다른 에이전트는 응답 생성을 담당하게 함으로써, 전체 시스템의 효율성과 정확성을 높일 수 있습니다.
3. Adaptive RAG 구현
LangGraph는 Adaptive RAG 시스템을 구축하는 데 적합합니다. Adaptive RAG는 질문의 복잡도에 따라 처리 전략을 동적으로 조정하여, 간단한 질문에는 빠르게 응답하고, 복잡한 질문에는 심층적인 검색과 분석을 수행합니다. 이러한 유연성은 시스템의 응답 정확도와 효율성을 동시에 향상시킵니다.
LangGraph를 활용한 예시
예를 들어, "서비스 A를 만든 회사의 2023년도 매출을 알려줘"라는 질문이 들어왔을 때, LangGraph를 활용하여 다음과 같은 워크플로우를 구성할 수 있습니다:
서비스 A의 제작사 확인: "서비스 A"가 "(주) B"에서 제작되었음을 확인합니다.
매출 정보 검색: "(주) B"의 2023년도 매출 정보를 검색합니다.
응답 생성: "서비스 A를 만든 (주) B의 2023년도 매출은 100억원입니다."라는 응답을 생성합니다.

이러한 워크플로우는 각 단계를 명확하게 정의하고, 조건에 따라 흐름을 제어할 수 있어, 복잡한 질문에도 정확하고 효율적인 응답을 제공할 수 있습니다.
LangGraph에서 다중 에이전트 시스템 확장
LangGraph의 가장 강력한 기능 중 하나는 다중 에이전트 시스템(multi-agent system)을 유연하게 구성하고 확장할 수 있다는 점입니다. 단일 에이전트가 수행하기 어려운 복잡한 작업을 전문화된 에이전트들로 분산시켜 처리함으로써, 전체적인 처리 효율성과 정확도를 극대화할 수 있습니다.
에이전트 분업을 통한 복잡한 흐름 처리
예를 들어, 고객 문의 대응 시스템을 구축한다고 가정해보겠습니다. 단일 LLM이 모든 질문에 대응하기에는 제한이 존재합니다. 하지만 LangGraph를 사용하면 아래와 같은 방식으로 에이전트를 역할별로 분리할 수 있습니다:
분류 에이전트: 사용자의 질문이 제품 문의인지, 환불 요청인지, 기술 문제인지 분류합니다.
도메인 에이전트: 분류된 도메인에 따라 전문 지식이 있는 에이전트가 응답을 생성합니다.
검토 에이전트: 생성된 응답의 톤, 정확성, 정책 위반 여부를 점검합니다.
후처리 에이전트: 최종 응답을 문서화하고 CRM에 기록합니다.
이런 흐름을 LangGraph로 구성하면 각 단계가 노드로 분리되며, 에이전트 간의 흐름은 조건부 엣지로 동적으로 연결됩니다.
LangGraph가 다중 에이전트 시스템에 적합한 이유
LangGraph는 다음과 같은 점에서 다중 에이전트 시스템 구현에 이상적입니다:
상태 기반 흐름 관리: 상태 공유 및 전달이 명확하여 에이전트 간 협력이 유기적으로 이루어집니다.
조건부 엣지 지원: 상황에 따라 다른 에이전트로 흐름을 유도할 수 있습니다.
확장성과 재사용성: 노드를 쉽게 추가하거나 수정하여 새로운 역할의 에이전트를 포함할 수 있습니다.
분산 처리 용이성: 각 에이전트를 병렬 처리하거나 외부 API로 위임하는 구조도 가능합니다.
실제 사용 사례 및 적용 분야
LangGraph 기반 다중 에이전트 시스템은 아래와 같은 산업군에서 활발히 적용되고 있습니다:
금융: 고객 투자 성향 파악, 상품 추천, 위험 요소 검토
의료: 증상 분류, 의료기록 조회, 응급도 판단
전자상거래: 사용자 문의 자동 분류, 배송 이슈 대응, 상품 추천
법률: 계약서 분석, 조항 검토, 유사 판례 검색