LangGraph 활용처
1. 문서 기반 고도화 RAG 파이프라인
상황
-
사용자가 "LangGraph가 무엇인가요?"라고 질문
-
여러 chunk로 나뉜 기술문서에서 답변을 생성해야 할 때
LangGraph 활용 구조
질문
↓
[Retrieve node] → 관련 chunk 3개 검색
↓
[Filter node] → 중요도 낮은 chunk 제거
↓
[Summary node] → 각 chunk 요약
↓
[Answer node] → 요약된 정보 기반 답변 생성
이점
-
무의미한 chunk를 제거할 수 있다.
-
비용 절감과 정확도 향상이 가능하다.
-
각 노드에서 개별 로직을 적용할 수 있다. (예: chunk별 요약 스타일을 다르게 할 수 있다.)
문서 기반 고도화 RAG 파이프라인은 문서 검색과 정보 요약을 결합하여, 사용자의 질문에 대해 보다 정확하고 관련성 높은 답변을 생성하는 고급 파이프라인을 구성하는 방식이다.
이 시스템은 여러 문서 chunk로 나누어진 콘텐츠를 처리하여, 질문에 맞는 chunk만 선택적으로 활용하고, 필요한 부분을 요약한 후 최종적으로 답변을 생성한다.
구체적인 상황 설명
상황
-
사용자가 "LangGraph가 무엇인가요?"라고 질문하는 경우
-
이 질문에 대해 여러 개의 기술 문서에서 정보를 검색해야 하며, 각 문서는 chunk로 나뉘어져 있다.
-
각 chunk는 문서 내에서 독립적으로 유의미한 정보를 포함하고 있기 때문에, 이를 효율적으로 검색하고 요약하여 최적의 답변을 도출해야 한다.
LangGraph 활용 구조
-
[Retrieve node] - 관련 chunk 검색
-
기술 문서에서 사용자의 질문과 관련된 정보를 담고 있을 가능성이 높은 chunk들을 벡터 검색을 통해 추출한다.
-
이 단계에서 사용자는
top-k
방식 또는 유사도 기반 검색을 통해 관련된 문서들을 찾는다.
-
-
[Filter node] - 중요도 낮은 chunk 제거
-
검색된 chunk들 중에서, 질문과 관련이 적은 부분을 필터링한다.
-
문서 길이가 길거나, 내용이 너무 일반적인 부분은 제외하고, 실제 질문에 관련된 핵심 정보를 담고 있는 부분만 남긴다.
-
-
[Summary node] - 각 chunk 요약
-
선택된 chunk들을 요약하여 불필요한 세부 정보를 제거하고 핵심만 남긴다.
-
예를 들어, 기술적인 용어나 복잡한 문장은 간결하게 재구성하여 질문에 대한 답변을 보다 명확하게 도출할 수 있도록 한다.
-
-
[Answer node] - 최종 답변 생성
-
요약된 정보를 기반으로 최종적인 답변을 생성한다.
-
정확한 답변을 제공하기 위해, 요약된 내용을 조합하거나 다양한 관점을 제시할 수 있다.
-
각 노드의 구체적 역할과 이점
1. [Retrieve node] - 관련 chunk 검색
-
역할: 사용자의 질문에 관련된 문서의 chunk들을 검색하는 단계.
-
예를 들어, 사용자가 "LangGraph가 무엇인가요?"라고 질문하면,
LangGraph
에 대한 정의, 특징, 활용 사례 등이 포함된 chunk를 검색하여 선택한다. -
이때 벡터 검색, 문서 임베딩 등을 사용하여 의미적으로 가까운 chunk를 찾는다.
-
-
이점
-
정확도: 정확한 chunk를 선택하여 불필요한 데이터 처리 비용을 절감할 수 있다.
-
유연성: 사용자의 질문에 맞는 문서만 선택적으로 사용할 수 있어, 응답의 관련성을 높일 수 있다.
-
2. [Filter node] - 중요도 낮은 chunk 제거
-
역할: 검색된 chunk 중에서 질문과 관련성이 낮은 부분을 제거하는 단계.
- 예를 들어, 기술 문서 내에서 세부적인 코드 예시나 불필요한 배경 설명 등이 포함되어 있다면 이를 제거한다.
-
이점
-
효율성: 핵심적인 정보만 추출하여 불필요한 chunk를 걸러내고 성능을 최적화할 수 있다.
-
정확도: 중요한 정보만 남기고, 중복된 내용이나 잘못된 정보를 제외하여 정확도를 높일 수 있다.
-
3. [Summary node] - 각 chunk 요약
-
역할: 검색된 chunk들을 핵심적인 내용으로 요약하여, 답변을 생성하기 쉽게 만든다.
- 예를 들어, 길고 복잡한 기술적인 설명을 간략하게 재구성하여 사용자가 쉽게 이해할 수 있는 형태로 만든다.
-
이점
-
시간 절약: 긴 문서나 chunk를 요약하여 사용자가 원하는 답변을 빠르게 제공할 수 있다.
-
간결성: 핵심 내용만 포함되어 불필요한 설명이 제거되므로, 정확하고 간결한 답변을 제공할 수 있다.
-
4. [Answer node] - 최종 답변 생성
-
역할: 요약된 정보들을 조합하여 사용자의 질문에 대한 최종 답변을 생성한다.
- 예를 들어, 여러 문서에서 추출한 chunk들의 요약을 바탕으로 사용자에게 직접적인 답변을 제공한다.
-
이점
-
유연성: 여러 다른 관점에서 요약된 정보를 결합하여 최적의 답변을 도출할 수 있다.
-
정확도: 최종 답변이 더 정확하고 유의미한 정보를 포함할 수 있게 된다.
-
실제 사용 예시
예시: "LangGraph가 무엇인가요?" 질문에 대한 답변 생성
-
Retrieve node:
사용자 질문에 맞는 LangGraph 관련 문서를 벡터 검색을 통해 검색하여 3개의 관련 chunk를 찾는다. -
Filter node:
검색된 chunk 중에서 불필요한 내용이나 중복된 설명을 제거하고, 핵심적인 LangGraph의 특징에 해당하는 chunk들만 남긴다. -
Summary node:
각 chunk를 간결하게 요약하여 LangGraph의 주요 개념, 활용 방식, 장점 등을 간단히 정리한다. -
Answer node:
요약된 내용을 바탕으로 "LangGraph는 LLM 애플리케이션을 상태 기반으로 설계할 수 있게 해주는 프레임워크입니다. 여러 노드를 통해 복잡한 워크플로우를 설계할 수 있으며, 분기와 반복, 병렬 처리 등이 가능합니다."와 같은 최종 답변을 생성한다.
이점 및 최적화
-
정확도 향상: 무의미한 chunk나 정보를 걸러내고, 중요한 정보만을 사용하므로 정확한 답변을 도출할 수 있다.
-
비용 절감: 불필요한 chunk를 처리하지 않으므로 시스템 자원 사용을 최소화할 수 있다.
-
유연성: 각 노드에서 처리하는 로직을 사용자의 요구사항에 맞게 최적화할 수 있다. 예를 들어, 요약 방식이나 필터링 기준을 쉽게 변경할 수 있다.
-
효율성: 한 번의 질의에 대해 빠르고 간결한 답변을 제공할 수 있다.
2. 상태 기반 대화 흐름 관리 (Stateful Chatbot)
상황
- 고객센터 챗봇이 “반품을 하고 싶어요” 라고 말하면,
→ 사용자의 최근 주문 상태와 계정 상태에 따라 분기 처리해야 할 때
LangGraph 활용 구조
질문
↓
[Intent 판단 node]
├── "반품"
│ ├── [주문 유무 node] → 최근 주문 조회
│ │ ├── 있음 → [반품 절차 안내]
│ │ └── 없음 → [안내 불가 응답]
└── "문의" → 고객센터 연결
이점
-
유저 상태(세션, 구매 이력 등)를 그래프 상태에 포함할 수 있다.
-
다단계 판단 흐름을 구성할 수 있다.
3. 멀티 문서 비교 분석 시스템
상황
- 사용자가 "LangChain과 LlamaIndex의 차이점은?"이라고 질문
LangGraph 활용 구조
질문
↓
[검색 노드] → 각각 LangChain 문서, LlamaIndex 문서 검색
↓
[요약 노드] → 각각 요약
↓
[비교 노드] → 유사점/차이점 비교 정리
↓
[응답 노드] → 답변 생성
이점
-
문서 2개 이상을 병렬 처리하여 성능 향상이 가능하다.
-
비교용 프롬프트와 요약 로직을 분리할 수 있다.
4. Multi-hop QA (Chain-of-Thought)
상황
-
사용자가 “Qdrant에 데이터를 넣고 검색하려면 어떤 절차가 필요하나요?”라고 질문
-
단계별로 reasoning이 필요한 질문
LangGraph 활용 구조
질문
↓
[1단계: 데이터 삽입 이해 노드]
↓
[2단계: 벡터 검색 이해 노드]
↓
[3단계: 전체 절차 생성 노드]
↓
[응답 생성]
이점
-
중간 reasoning 결과들을 상태로 유지하면서 답변을 생성할 수 있다.
-
단계별 추론 실패를 방지할 수 있다.
5. 코드 리뷰/편집 도우미
상황
-
사용자가 "이 코드에서 성능 병목을 찾아줘"라고 요청
-
긴 코드 chunk별로 나눠서 분석하고, 이슈가 있는 부분만 응답하고 싶을 때
LangGraph 활용 구조
질문 + 코드
↓
[코드 chunking]
↓
[chunk 분석 node] (여러 개, 병렬 처리 가능)
↓
[성능 이슈가 있는 chunk만 추림]
↓
[응답 생성]
이점
-
각 chunk를 노드로 분석할 수 있어 병목 지점만 선택할 수 있다.
-
상태로 이슈 chunk, 사유, 개선 제안까지 포함할 수 있다.
6. 사용자 목표 기반 워크플로우 수행
상황
- 사용자가 “Qdrant 설치해서 샘플 문서 검색까지 해보고 싶어요”라고 요청
LangGraph 활용 구조
질문
↓
[목표 추출] → "Qdrant 설치 및 테스트"
↓
[계획 수립 node] → Step 1~3 구성
↓
[각 단계 실행 node]
├─ Step 1: 설치 명령어 생성
├─ Step 2: 문서 업로드 코드 작성
└─ Step 3: 검색 코드 작성
↓
[통합 응답]
이점
-
단계별 프롬프트, 조건 분기를 사용할 수 있다.
-
사용자의 피드백을 받아 흐름을 수정할 수 있다.
7. 자동화된 LLM 평가 플로우 (A/B Testing)
상황
- 두 개의 LLM (예: GPT-4 vs Gemini)을 같은 질문으로 평가하고 비교
LangGraph 활용 구조
질문
↓
[LLM A 응답 생성 노드]
[LLM B 응답 생성 노드]
↓
[응답 비교 평가 노드] (예: Rouge, BLEU, 또는 사용자 피드백)
↓
[최종 결과 반환]
이점
-
동일 질문으로 멀티 LLM 비교가 가능하다.
-
LangGraph 상태에 각 결과와 점수를 저장할 수 있다.
결론
LangGraph는 단순히 여러 노드를 잇는 것이 아니라, 다음이 가능하게 해준다:
-
상태 유지 기반 흐름 제어
-
조건 분기, 반복, 병렬 흐름 설계
-
유저 입력, 환경, 질문 유형에 따라 다양한 처리 흐름 구성
“고정된 질문-답 구조를 넘어서고 싶다”,
“chunk마다 다르게 처리하거나 사용자 상태를 반영하고 싶다”
→ 이런 상황이면 LangGraph는 아주 강력한 선택이 될 수 있다.
어떤 워크플로우가 현재 프로젝트에 가장 잘 맞을지 고민된다면,
필요한 유즈케이스에 맞는 LangGraph 예제를 만들어줄 수 있다.