택배 물류센터로 이해하는 LangChain 실행 흐름
LangChain으로 챗봇을 만들면, 사용자의 질문 한 줄이 답변이 되어 나오기까지 안에서 꽤 여러 단계가 돌아갑니다. 저는 이 흐름을 택배 물류센터에 비유해 설명하곤 합니다.
물류센터로 보는 실행 흐름
택배가 오면 → 분류 → 상차 → 배송 순서를 밟죠. LangChain도 비슷합니다. 질문이 들어오면 (1) 프롬프트로 포장하고 (2) LLM에 보내고 (3) 결과를 받아 (4) 필요하면 가공해서 내보냅니다. 각 단계가 컨베이어처럼 이어져 있어요.
질문 → [프롬프트 생성] → [LLM 호출] → [출력 파싱] → 답변
검색이 붙으면 (RAG)
사내 문서 기반 답변이 필요하면 중간에 "창고에서 물건 찾기" 단계가 추가됩니다. 질문으로 관련 문서를 먼저 검색하고, 그 문서를 프롬프트에 끼워 LLM에 넘기죠.
질문 → [문서 검색] → [문서+질문으로 프롬프트] → [LLM] → 답변
제가 처음 RAG를 디버깅할 때 답이 이상해서 한참 헤맸는데, 원인은 LLM이 아니라 "검색 단계에서 엉뚱한 문서를 물어온 것"이었어요. 흐름을 단계로 나눠 보면 어디서 틀어졌는지 추적이 쉬워집니다.
실무 팁: 중간 결과를 찍어봐라
흐름이 길어질수록 저는 각 단계의 출력을 로그로 남깁니다. "프롬프트에 뭐가 들어갔는지"만 찍어봐도 문제의 8할은 잡혀요. 블랙박스처럼 전체를 한 번에 보지 말고, 컨베이어 칸마다 열어보는 습관이 중요합니다.
마무리
실행 흐름을 "단계의 연결"로 이해하면 디버깅도, 기능 추가도 쉬워집니다. 다음 글에서는 이 흐름을 더 간결하게 쓰게 해주는 LCEL 문법을 다뤄보겠습니다.
댓글
댓글 쓰기