이번 단계는 랭체인의 단방향 파이프라인(Chain)을 넘어, 모델이 스스로 상태를 확인하고 이전 단계로 돌아가거나 반복할 수 있게 해주는 [16단계: LangGraph] 에이전트의 설계도입니다. 복잡한 AI 워크플로우를 제어하는 핵심 기술을 정리해 드립니다.
[LLM 컨셉] LangGraph: 순환하고 사고하는 AI 워크플로우
**랭그래프(LangGraph)**는 랭체인(LangChain) 생태계 위에서 구축된 라이브러리로, LLM 애플리케이션에 순환(Cycle) 구조와 상태 관리(State Management) 기능을 부여합니다. 단순한 'A → B → C' 흐름이 아니라, 결과가 만족스럽지 않으면 다시 'A'로 돌아가 재시도하는 지능적인 루프를 설계할 수 있게 해줍니다.
1. 왜 랭그래프가 필요한가? (Chain의 한계 극복)
기존 랭체인의 Chain은 흐름이 일정하게 정해진 '직선 도로'와 같습니다. 하지만 실제 업무는 훨씬 복잡합니다.
- 반복과 수정: "코드를 짰는데 에러가 났어? 그럼 다시 수정해서 실행해봐"라는 논리는 직선 도로에서 구현하기 어렵습니다.
- 상태 유지: 여러 단계를 거치는 동안 어떤 정보를 얻었는지, 어떤 시도를 했는지 기억(State)해야 합니다.
- 복잡한 분기: 조건에 따라 다음 목적지를 유연하게 결정해야 하는 에이전트 서비스에는 랭그래프의 그래프 구조가 필수적입니다.
2. 랭그래프의 3대 구성 요소
랭그래프는 워크플로우를 하나의 **그래프(Graph)**로 정의합니다.
- Nodes (노드): 실제 작업을 수행하는 단위입니다. (예: LLM의 답변 생성, 파이썬 코드 실행, 데이터베이스 검색 등)
- Edges (엣지): 노드와 노드를 잇는 경로입니다.
- Conditional Edges: 특정 조건(예: LLM의 판단 결과)에 따라 다음 어느 노드로 갈지 결정하는 갈림길 역할을 합니다.
- State (상태): 그래프 전체에서 공유되는 **'공동 메모리'**입니다. 현재까지의 대화 내용, 검색 결과, 에러 메시지 등을 담고 있으며 노드가 실행될 때마다 이 상태를 업데이트합니다.
3. 핵심 메커니즘: 순환(Cycle)과 제어
랭그래프의 가장 큰 특징은 **'루프(Loop)'**를 명시적으로 제어할 수 있다는 점입니다.
- ReAct 패턴 구현: 모델이 생각(Reasoning)하고 행동(Acting)한 뒤, 그 결과를 관찰(Observation)하여 다시 생각하는 과정을 그래프의 순환 구조로 완벽하게 묘사할 수 있습니다.
- 인간 개입 (Human-in-the-loop): 그래프가 진행되다가 중요한 결정 시점에 잠시 멈추고(Breakpoint) 사람의 승인을 받은 뒤 다시 진행하는 워크플로우도 가능합니다.
4. 랭그래프 vs 일반 랭체인 에이전트
| 구분 | 일반 에이전트 (Executor) | 랭그래프 (LangGraph) |
| 제어권 | 모델의 판단에 전적으로 의존 (블랙박스) | 개발자가 흐름을 명확히 설계 (화이트박스) |
| 복잡도 | 단순한 도구 사용에 적합 | 기업용 복잡한 비즈니스 로직에 적합 |
| 상태 관리 | 대화 기록 정도만 유지 | 단계별 작업 결과물(State)을 정교하게 관리 |
| 커스터마이징 | 흐름 수정이 어려움 | 노드와 엣지 단위로 세밀한 수정 가능 |
5. [선생님의 심화 보충] 상태의 영속성 (Persistence)
랭그래프의 또 다른 강력한 기능은 **'체크포인트(Checkpointing)'**입니다. 그래프의 진행 상태를 데이터베이스에 실시간으로 저장할 수 있어, 중간에 서버가 꺼지거나 사용자가 며칠 뒤에 돌아와도 중단되었던 바로 그 지점부터 작업을 재개할 수 있습니다. 이는 실전용 AI 서비스를 만들 때 매우 중요한 신뢰성 요소입니다.
✍️ 공부를 마치며
랭그래프는 LLM에게 '절차적인 사고 능력'을 부여하는 설계도입니다. 이제 우리는 복잡한 논리 구조를 가진 AI 시스템을 만들 준비가 되었습니다. 이제 이 똑똑한 설계도 위에, 실제 외부 세상과 소통할 수 있는 '연결 통로'를 달아줄 차례입니다.
BM25 -> TF-IDF의 발전
IDF는 검색의 희귀성을 나타냄(the, a)는 낮은 점수 희귀한 단어는 높은점수
TF 빈도수를 나타냄 빈도수가 많을수록 높은 점수 일정 점수를 넘기지않음
문서길이 정규화는 점수 보정 작업
핵심 파라미터 k1과 d
k1은 단어 빈도의 영향력을 조절
d는 문서 길이에대한 정규화를 조절
페이징랭크?-> 구글을 만든 알고리즘 (스파크전용)
RRF
sudo apt update
sudo apt install g++ autoconf libfontconfig1-dev pkg-config libjpeg-dev gnome-common libglib2.0-dev gtk-doc-tools libyelp-dev yelp-tools gobject-introspection libsecret-1-dev libnautilus-extension-dev
sudo apt install poppler-utils
sudo apt install tesseract-ocr
sudo apt install libtesseract-dev
pip install pi-heif
pip install unstructured_inference
pip install pdf2image
'AI > LLM' 카테고리의 다른 글
| [MCP] LLM의 만능 커넥터 (0) | 2025.08.08 |
|---|---|
| [Agent] 자율적인 AI 에이전트 (1) | 2025.08.07 |
| [LangChain] AI 파이프라인 구축 (0) | 2025.08.05 |
| [Semantic Search] 의미 기반 검색 (4) | 2025.08.04 |
| [Vector DB] 지식의 저장소 (3) | 2025.08.01 |