택배 물류센터로 이해하는 LangChain 실행 흐름

LangChain으로 챗봇을 만들면, 사용자의 질문 한 줄이 답변이 되어 나오기까지 안에서 꽤 여러 단계가 돌아갑니다. 저는 이 흐름을 택배 물류센터에 비유해 설명하곤 합니다.

물류센터로 보는 실행 흐름

택배가 오면 → 분류 → 상차 → 배송 순서를 밟죠. LangChain도 비슷합니다. 질문이 들어오면 (1) 프롬프트로 포장하고 (2) LLM에 보내고 (3) 결과를 받아 (4) 필요하면 가공해서 내보냅니다. 각 단계가 컨베이어처럼 이어져 있어요.

질문 → [프롬프트 생성] → [LLM 호출] → [출력 파싱] → 답변

검색이 붙으면 (RAG)

사내 문서 기반 답변이 필요하면 중간에 "창고에서 물건 찾기" 단계가 추가됩니다. 질문으로 관련 문서를 먼저 검색하고, 그 문서를 프롬프트에 끼워 LLM에 넘기죠.

질문 → [문서 검색] → [문서+질문으로 프롬프트] → [LLM] → 답변

제가 처음 RAG를 디버깅할 때 답이 이상해서 한참 헤맸는데, 원인은 LLM이 아니라 "검색 단계에서 엉뚱한 문서를 물어온 것"이었어요. 흐름을 단계로 나눠 보면 어디서 틀어졌는지 추적이 쉬워집니다.

실무 팁: 중간 결과를 찍어봐라

흐름이 길어질수록 저는 각 단계의 출력을 로그로 남깁니다. "프롬프트에 뭐가 들어갔는지"만 찍어봐도 문제의 8할은 잡혀요. 블랙박스처럼 전체를 한 번에 보지 말고, 컨베이어 칸마다 열어보는 습관이 중요합니다.

마무리

실행 흐름을 "단계의 연결"로 이해하면 디버깅도, 기능 추가도 쉬워집니다. 다음 글에서는 이 흐름을 더 간결하게 쓰게 해주는 LCEL 문법을 다뤄보겠습니다.

댓글

이 블로그의 인기 게시물

지하철 노선도로 이해하는 LangGraph (분기·반복 설계)

LangGraph State란 무엇인가? 상태 관리 개념 쉽게 이해하기

LangGraph Node와 Edge 개념 쉽게 이해하기 (초보자 완전 정리)