Blog
CH01 LangChain 시작하기
2026.02.27
·Web·by 배레온/부산/개발자#Agent#LangChain#LCEL#LLM#RAG
핵심 포인트
- 1본 자료는 LangChain 프레임워크를 활용한 한국어 튜토리얼로, 언어 모델 기반 애플리케이션 개발을 위한 설치부터 고급 기능까지 다룹니다.
- 2프롬프트, 출력 파서, 다양한 LLM 모델 활용법, 메모리, 문서 로더, 텍스트 분할, 임베딩, 벡터 저장소, 검색기, 리랭커 등 LangChain의 핵심 컴포넌트들을 상세히 설명합니다.
- 3Retrieval Augmented Generation(RAG), LangChain Expression Language(LCEL), 체인(Chains), 평가(Evaluations), 그리고 에이전트(Agent) 및 LangGraph를 활용한 복잡한 애플리케이션 구축 사례까지 포괄적인 내용을 제공합니다.
<랭체인LangChain 노트>는 LangChain 한국어 튜토리얼로서, LangChain 프레임워크를 활용하여 언어 모델 기반 애플리케이션을 개발하는 방법을 포괄적으로 다룬다. 이 프레임워크는 언어 모델이 문맥을 인식하고(다양한 문맥 소스와 연결), 주어진 문맥을 바탕으로 추론하고 조치를 취할 수 있도록 지원하며, 검색 증강 생성(RAG), 구조화된 데이터 분석, 챗봇 등 다양한 애플리케이션 제작에 활용된다.
본 튜토리얼은 다음과 같은 주요 모듈과 주제로 구성되어 있다:
- CH01 LangChain 시작하기: LangChain의 기본적인 설치 방법(Python 3.11 권장)과 함께,
requirements.txt를 통한 전체 설치 및requirements-mini.txt를 통한 최소 기능 설치를 안내한다. LangChain의 핵심 구성 요소인 LangChain 라이브러리(인터페이스, 통합, 런타임, 체인/에이전트 구현), LangChain 템플릿(배포 가능한 참조 아키텍처), LangServe(REST API 배포), LangSmith(디버깅, 테스트, 평가, 모니터링), LangGraph(상태 유지가능한 다중 액터 애플리케이션 구축)를 소개한다. 또한, LangChain의 개발 용이성(컴포넌트의 조립 및 통합)과 즉시 사용 가능한 체인 제공의 강점을 설명하며, 주요 모듈로 모델 I/O(프롬프트 관리, LLM 인터페이스), 검색(데이터 강화 생성), 에이전트(조치 결정, 실행, 반복)를 상세히 다룬다.
- CH02 프롬프트 (Prompt): 기본적인 프롬프트 구성,
FewShotPromptTemplate를 활용한 퓨샷 프롬프트, LangChain Hub를 통한 프롬프트 관리 및 공유, 개인화된 프롬프트 업로드 방법을 설명한다.
- CH03 출력 파서 (Output Parsers): LLM의 출력을 특정 구조나 형식으로 변환하는 다양한 출력 파서들을 소개한다.
PydanticOutputParser,CommaSeparatedListOutputParser,StructuredOutputParser,JsonOutputParser,PandasDataFrameOutputParser,DatetimeOutputParser,EnumOutputParser,OutputFixingParser등이 포함되어 있으며, 각 파서의 기능과 활용 사례를 다룬다.
- CH04 모델 (Model): 다양한 LLM 모델 활용법을 제시하며, 캐싱(
Cache), 모델 직렬화(Serialization를 통한 저장 및 불러오기), 토큰 사용량 확인 등 모델 관리 기법을 포함한다. 구글 생성 AI(Google Generative AI), 허깅페이스 엔드포인트(HuggingFace Endpoints), 허깅페이스 로컬(HuggingFace Local), 허깅페이스 파이프라인(HuggingFace Pipeline), Ollama, GPT4ALL, 비디오 질의응답 LLM(Gemini) 등 다양한 모델 연동 방법을 소개한다.
- CH05 메모리 (Memory): 대화형 애플리케이션에서 이전 대화 내용을 기억하게 하는 다양한 메모리 유형을 다룬다.
ConversationBufferMemory,ConversationBufferWindowMemory,ConversationTokenBufferMemory,ConversationEntityMemory,ConversationKGMemory,ConversationSummaryMemory,VectorStoreRetrieverMemory등의 메모리 구현 및 활용법과 함께, LCEL Chain에 메모리 추가, SQLite에 대화 내용 저장,RunnableWithMessageHistory에ChatMessageHistory추가하는 방법을 설명한다.
- CH06 문서 로더 (Document Loader): 다양한 형식의 문서를 LangChain
Document객체로 로드하는 방법을 제공한다. PDF, 한글(HWP), CSV, Excel, Word, PowerPoint, 웹 문서(WebBaseLoader), 텍스트(TextLoader), JSON, Arxiv,UpstageLayoutAnalysisLoader,LlamaParser등 광범위한 문서 형식을 지원한다.
- CH07 텍스트 분할 (Text Splitter): 로드된 문서를 LLM 처리에 적합한 청크(chunk)로 분할하는 기술을 설명한다.
CharacterTextSplitter,RecursiveCharacterTextSplitter,TokenTextSplitter,SemanticChunker와 같은 기본적인 분할기부터, 코드 분할(Python, Markdown, JAVA, C++, C#, GO, JS, Latex 등),MarkdownHeaderTextSplitter,HTMLHeaderTextSplitter,RecursiveJsonSplitter등 특수 목적 분할기를 포함한다.
- CH08 임베딩 (Embedding): 텍스트를 벡터 공간의 수치 표현으로 변환하는 임베딩 모델들을 다룬다.
OpenAIEmbeddings,CacheBackedEmbeddings를 통한 캐시 활용,HuggingFace Embeddings,UpstageEmbeddings,OllamaEmbeddings,GPT4ALL임베딩,Llama CPP임베딩 등 다양한 임베딩 모델의 사용법을 소개한다.
- CH09 벡터저장소 (VectorStore): 임베딩된 벡터를 저장하고 검색하는 데 사용되는 벡터 저장소들을 다룬다.
Chroma,FAISS,Pinecone등 주요 벡터 저장소의 특징과 활용법을 설명한다.
- CH10 검색기 (Retriever): 벡터 저장소에서 관련 문서를 검색하는 다양한 검색기 유형을 소개한다.
VectorStore-backed Retriever,ContextualCompressionRetriever,EnsembleRetriever,LongContextReorder,ParentDocumentRetriever,MultiQueryRetriever,MultiVectorRetriever,SelfQueryRetriever,TimeWeightedVectorStoreRetriever등이 포함된다. 또한 한글 형태소 분석기(Kiwi, Kkma, Okt)와 BM25 검색기 연동,Convex Combination(CC)이 적용된EnsembleRetriever등 한국어 특화 검색 기법도 다룬다.
- CH11 리랭커 (Reranker): 검색된 문서들의 관련성을 재평가하여 순위를 조정하는 리랭커 모델들을 소개한다.
Cross Encoder Reranker,Cohere Reranker,Jina Reranker,FlashRank Reranker등 다양한 리랭커의 활용법을 다룬다.
- CH12 Retrieval Augmented Generation (RAG): LangChain의 핵심 기능 중 하나인 RAG 애플리케이션 구축 방법을 실질적인 예시와 함께 설명한다. PDF 문서 기반 QA, 네이버 뉴스 기사 QA, RAG의 기능별 다양한 모듈 활용기,
RAPTOR를 이용한 긴 문맥 요약(Long Context Summary), 대화 내용을 기억하는 RAG 체인 구축 등을 포함한다.
- CH13 LangChain Expression Language (LCEL): LangChain의 강력한 구성 요소인 LCEL을 심층적으로 다룬다.
RunnablePassthrough,Runnable구조 검토,RunnableLambda, LLM 체인 라우팅(RunnableLambda,RunnableBranch),RunnableParallel을 통한 병렬 처리, 동적 속성 지정(configurable_fields,configurable_alternatives),@chain데코레이터,RunnableWithMessageHistory, 사용자 정의 제네레이터(generator), Runtime Arguments 바인딩, 폴백(fallback) 모델 지정 등 LCEL의 다양한 기능과 활용 패턴을 설명한다.
- CH14 체인 (Chains): 특정 목적을 위한 여러 컴포넌트의 연결인 체인 구축 방법을 소개한다. 문서 요약 체인, SQL 체인, 구조화된 출력 체인(
with_structered_output) 등을 다룬다.
- CH15 평가 (Evaluations): LLM 애플리케이션의 성능을 평가하는 다양한 방법을 제시한다.
RAGAS를 활용한 합성 테스트 데이터셋 생성 및 평가, HuggingFace Dataset과 LangSmith를 활용한 데이터셋 관리, LLM-as-Judge, 임베딩 기반 평가(embedding_distance), 사용자 정의 LLM 평가,Rouge,BLEU,METEOR,SemScore기반 휴리스틱 평가, 실험 평가 비교(Experiment), 요약 방식 평가,Groundedness(할루시네이션) 평가, 실험 비교(Pairwise Evaluation), 반복 평가, 온라인 평가를 활용한 평가 자동화 등 다각적인 평가 기법을 설명한다.
- CH16 에이전트 (Agent): LLM이 도구를 사용하여 복잡한 작업을 수행하도록 하는 에이전트 구축 방법을 다룬다. 도구(
Tools) 정의 및 바인딩, 에이전트 기본 구조, Claude, Gemini, Ollama, Together.ai를 활용한 에이전트 연동, Iteration 기능과 사람 개입(Human-in-the-loop), Agentic RAG, CSV/Excel 데이터 분석 에이전트,Toolkits활용 에이전트, RAG + Image Generator 에이전트를 통한 보고서 작성, 도구를 활용한 토론 에이전트(Two Agent Debates with Tools) 등 다양한 에이전트 시나리오를 제시한다.
- CH17 LangGraph: LangChain 위에 구축된 LangGraph 라이브러리를 통해 상태 유지가 가능한 다중 액터 애플리케이션을 구축하는 방법을 심도 있게 다룬다. 핵심 기능으로 LangGraph 관련 Python 문법 이해, 챗봇/에이전트 구축, 메모리 추가, 노드별 스트리밍 출력, Human-in-the-loop, 중간단계 개입 및 되돌림, 사람에게 물어보는 노드, 메시지 삭제,
ToolNode를 사용한 도구 호출, 병렬 노드 실행, 대화 기록 요약, 서브그래프 추가 및 변환, 스트리밍 모드 활용 등을 설명한다. 구조 설계 파트에서는 기본 그래프 생성, Naive RAG, 관련성 체커(Relevance Checker), 웹 검색, 쿼리 재작성 모듈 추가, Agentic RAG, Adaptive RAG 등 복잡한 RAG 파이프라인 설계를 다룬다. Use Cases 파트에서는 에이전트 대화 시뮬레이션, 사용자 요구사항 기반 메타 프롬프트 생성 에이전트, CRAG(Corrective RAG), Self-RAG, 계획 후 실행(Plan-and-Execute), 멀티 에이전트 협업 네트워크(Multi-Agent Collaboration Network), 멀티 에이전트 감독자(Multi-Agent Supervisor), 계층적 멀티 에이전트 팀(Hierarchical Multi-Agent Teams), SQL 데이터베이스 상호작용 에이전트, STORM 개념 도입 연구 에이전트 등 고급 에이전트 시나리오를 제시한다.
- CH18 기타 정보:
StreamEvent타입별 정리와 같은 추가적인 유용한 정보를 제공한다.
이 문서는 LangChain의 기본 개념부터 고급 RAG, 에이전트, LangGraph에 이르기까지 LangChain 생태계의 거의 모든 주요 구성 요소를 실제 개발 관점에서 상세히 다루고 있다.