본문 바로가기
최신 AI

가장 쉽게 이해할 수 있는 LangChain 설명

by 구라100단 2026. 2. 20.

이 글을 통해 LangChain을 아주 쉽게 이해해 보고, 작은 프로젝트를 만들어 봅시다.

LangChain이 왜 존재하는가?

코드는 잠시 잊고, 진짜 문제를 먼저 생각해 봅시다.

GPT, Mistral, Llama 같은 LLM을 직접 쓰면 세 가지 큰 한계가 있습니다.

 

문제 1. LLM은 모든 걸 잊어버린다

메시지 하나 보낼 때마다 이전 대화 기억이 전혀 없어요. 직접 이전 대화를 다 넣어주지 않으면 초기화됩니다.

장기 기억 기능이 없어요.

 

문제 2. LLM은 내 데이터를 볼 수 없다

다음 같은 질문을 하면 LLM은 아무것도 못 합니다.

  • “이 PDF 읽어줘”
  • “이 데이터베이스에서 찾아줘”
  • “내 폴더 보고 요약해줘”

LLM은 외부 데이터를 스스로 가져올 수 없기 때문입니다.

 

문제 3. LLM은 여러 단계를 거치는 작업을 잘 못한다

예: “이 문서 읽고 → 사람 이름 추출 → 번역 → 요약해줘”

시도야 하겠지만, 체계적으로 단계를 나누고, 도구를 부르고, 논리를 따라가며 작업을 관리할 방법이 없습니다.

항상 대충 추측하면서 진행합니다. → 매우 답답함

 

LangChain은 이 세 문제를 모두 해결해 줍니다

LangChain이 LLM에게 주는 새로운 능력 3가지:

  1. 기억(Memory) -  채팅봇이 매번 모든 걸 잊지 않게 해줍니다.
  2. 도구(Tools) - 웹 검색, PDF 읽기, 파이썬 코드 실행, 데이터베이스 조회 등 외부 기능을 사용할 수 있게 합니다.
  3. 구조화된 작업 흐름(Chains & Agents) - 단계별로 논리적으로 진행하거나, 상황에 맞는 도구를 스스로 선택하게 합니다.

→ LangChain은 날것의 LLM을 실제로 쓸 수 있는 똑똑한 시스템으로 바꿔줍니다.

이 기본 개념만 이해하면 나머지는 다 쉬워집니다.

LangChain의 5가지 핵심 구성 요소

이 부분만 이해해도 LangChain의 70%는 이해한 겁니다

  1. Models (모델)
  2. Prompts (프롬프트)
  3. Output Parsers (출력 파서)
  4. Document Loaders & Retrievers (문서 로더 & 검색기)
  5. Chains & Agents (체인 & 에이전트)

이제 각 부분에 대해서 알아 봅시다.

(A) Models — 앱의 두뇌

  • Chat Models : 대화용으로 GPT-4, Llama 3, Mistral 등이 있음
  • Text LLMs :Prompt로 부터 텍스트 생성용
  • Embedding Models : 텍스트 → 벡터 변환용, 검색/RAG에 필수

LangChain은 통일된 인터페이스를 제공하므로 모델(GPT Llamma Mistral)을 변경하는데 단지 한줄 수정으로 끝낼 수 있습니다.

(B) Prompts — 모델이 이해하는 Instructions

프롬프트는 단순한 Instruction들이다. 하지만 Langchain에서는 큰 힘을 발휘할 수 있습니다.

단순메시지가 아닌 프롬프트 템플릿을 만들어 재 사용이 가능하도록 해 줍니다.

Python
from langchain.prompts import PromptTemplate
prompt = PromptTemplate.from_template("간단한 말로 {topic}을 설명해줘.")

→ {topic}만 바꿔가며 재사용 가능해짐 . 즉 Prompt가 깔끔하고 유지보수가 쉬워지게 됨

(C) Output Parsers — 모델에게 구조를 강제하기

LLM은 자유롭게 길게 문장으로 쓰는 걸 좋아하지만, 실제 앱에서는

  • JSON
  • 리스트
  • 키-값 쌍
  • 특정 Formats

같은 구조가 필요합니다.

Output Parser를 사용하므로 “이 형식으로만 답변해!”라고 강제 할 수 있습니다

 

Example:

from langchain.output_parsers import StructuredOutputParser

이는 모델의 출력을 예측 가능하게 만들어주며, 이는 앱에 필수적인 요소입니다

(D) Document Loaders & Retrievers — LangChain이 정보를 읽는 방법

Document Loaders : PDF, 웹페이지, Notion, DB 등에서 데이터를 가져옴

from langchain_community.document_loaders import WebBaseLoader
loader = WebBaseLoader("https://example.com")
docs = loader.load()

Retrievers : 문서가 시스템에 저장되면 검색 도구를 사용하여 문서를 지능적으로 검색할 수 있습니다. → RAG의 핵심 기반

 

비유하자면...

  • Document  Loader = 도서관에 책 가져오기
  • Retriever = 필요한 정확한 페이지를 찾아주는 사서

(E) Chains & Agents — 작업 흐름 엔진

이 부분이 Langchain을 Powerful하게 만들어 주고 있는 것입니다.

Chains = 고정된 레시피 - 다음 단계가 미리 정해져 있음 (순서가 있는 직선형 흐름)

Agents = 상황에 따라 판단하는 요리사 - LLM이 스스로 “다음엔 뭘 해야 하지?” 생각하고 도구 선택 (무엇을, 어떤 툴을 사용할지, 다음 Step은 어디로 갈지 등)

 

RAG — LangChain의 심장

왜 RAG가 필요한가? LLM은 엄청난 양의 데이터를 학습했지만 당신의 개인 문서는 모릅니다.

예를 들어 나의 PDF를 요약해줘, 회사 Handbook의 내용을 알려줘 같은 질문을하면 LLM은 해당 문서에 대한 정보가 없으므로 답변할 수 없습니다.

그렇다고 긴 문서를 프롬프트에 다 넣으면 → 토큰 초과 발생

짧게 넣으면 → 맥락 손실 이 발생합니다.

그래서 큰 용량의 문서를 저장해야 하고, 그 문서를 똑똑하게 검색하고, 관련 부분만을 취해서 LLM에 전달하는 시스템이 필요합니다.그런데 그런 시스템이 RAG (Retrieval Augmented Generation)입니다.

 

RAG가 하는 일 (가장 쉽게 이해하기)

LLM에 Goodle Search 를 연결한 것과 같은 것이 RAG 입니다.

하는일은...

  1. 질문이 들어옴
  2. 내 문서들 중 관련 있는 조각을 검색
  3. 그 문서 조각 + 질문을 LLM에게 전달
  4. LLM이 실제 데이터 기반으로 답변 생성

이렇게 함으로 환각(hallucination)을 대폭 감소시키고, 사실 기반 답변이 가능해 집니다.

 

RAG 파이프라인 7단계 (이 순서만 외우세요)

  1. 문서 로드 : Bring PDFs, websites, text files, or databases into LangChain.
  2. 문서 → 작은 조각(Chunk)으로 분할 (200–500 tokens)
  3. 조각 → 임베딩(벡터) 변환 : 의미적으로 가까운 Text를 높은 숫자로 부여 / AI가 의미 기반으로 검색하는 방법이 됨
  4. 벡터 데이터베이스에 저장 (Chroma, Pinecone, Weaviate, FAISS 등)
  5. 사용자의 질문 도착 : VectorDB에서 검색할 수 있음
  6. 질문과 가장 비슷한 조각 검색 (Retriever) 
  7. LLM이 질문 + 검색된 조각을 확인해서 최종 답변을 생성함 
    • RAG is not a LangChain thing.
    • RAG is an industry standard.
    • LangChain just makes it extremely easy to implement.

이 흐름만 알면 LangChain으로 어떤 RAG든 만들 수 있습니다.

Agents (에이전트)

Agent란? = LLM이 어떤 도구를 언제 쓸지, 다음 행동은 뭘 할지 스스로 결정하는 시스템

    Agent = LLM + 행동 능력

에이전트가 반복하는 추론과정 사이클 (ReAct : Reason + Act ) : Pick a tool → Use it → Think again → Answer

  • Thought: 지금 뭘 해야 하지?
  • Action: ○○ 도구 사용
  • Observation: 도구 결과 받음
  • Thought: 이제 다음은?
  • 반복과 최종 답변

언제 에이전트를 써야 하나?

  • 여러 단계가 필요한 경우
  • 도구를 써야 하는 경우 (웹 검색, 계산기, 코드 실행 등)
  • 동적 판단이 필요한 경우

에이전트를 쓰지 말아야 할 때

  • 단순 Q&A
  • 순수 RAG
  • 고정된 순서 작업 → 불필요한 지연 + 예측 불가능성 증가
  • 요약하기

Example of an Agent in LangChain

from langchain.agents import initialize_agent, load_tools
from langchain_openai import ChatOpenAI

llm = ChatOpenAI()
tools = load_tools(["serpapi", "llm-math"], llm=llm)
agent = initialize_agent(
    tools, 
    llm,
    agent="zero-shot-react-description"
)
agent.run("What is 23 * 47? Also search who discovered gravity.")

This agent:

  • uses a calculator tool
  • uses web search
  • then produces the final answer

All automatically.

Agents allow an LLM choose which tool to use and execute multi-step reasoning to solve tasks.

Memory (기억)

LLM은 약점이 있는데 기본적으로 모든 대화 기록을 잊습니다.

LangChain Memory가 자동으로 과거 대화를 프롬프트에 넣어줌으로 유지할 수 있습니다.

 

주요 메모리 유형 4가지

  1. ConversationBufferMemory — 전부 저장 (짧은 대화용)
  2. ConversationSummaryMemory — 요약본만 저장 (긴 대화용)
  3. ConversationBufferWindowMemory — 최근 N개 메시지만 저장
  4. EntityMemory — 사람/사물에 대한 사실 저장 (개인화 좋음)

 

미니 프로젝트 — 25줄 이내로 PDF 질문 답변 RAG 앱 만들기

목표는 PDF 파일을 업로드하고 질문을 하여 PDF 파일을 기반으로 정확한 답변을 얻는 것입니다.

과정은 다음과 같습나다

문서 로딩 청킹 임베딩 벡터 DB 리트리버 LLM 최종 답안

  1. 라이브러리 설치 
    Bash
    pip install langchain langchain-community langchain-openai chromadb pypdf
  2. PDF 로드
    Python
    from langchain_community.document_loaders import PyPDFLoader
    loader = PyPDFLoader("sample.pdf")
    docs = loader.load()
  3. 청크로 자르기
    Python
    from langchain.text_splitter import RecursiveCharacterTextSplitter
    splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=50)
    chunks = splitter.split_documents(docs)
  4. 임베딩 + 벡터 DB
    Python
    from langchain_community.vectorstores import Chroma
    from langchain_openai import OpenAIEmbeddings
    db = Chroma.from_documents(chunks, OpenAIEmbeddings())
    retriever = db.as_retriever()
  5. RAG 체인 생성
    Python
    from langchain.chains import RetrievalQA
    from langchain_openai import ChatOpenAI
    qa = RetrievalQA.from_chain_type(llm=ChatOpenAI(), retriever=retriever)
  6. 질문하기 → 답변
    Python
    response = qa.run("이 PDF의 핵심 아이디어는 뭐야?")
    print(response)

이 정도면 LangChain의 거의 모든 핵심을 이해하신 겁니다.

 


자 이것으로  "LangChain을 사용한다"라고 하는 사람들의 90%수준까지 배운것입니다. (대부분의 개발자 보다 많은 것을 알게 된 것입니다.) LangChain은 복잡한 프레임워크가 아니라, 간단한 아이디어들을 조합한 것일 뿐입니다.

 

이해한 내용을 다시 한번 정리해 봅시다.

  1. Why LangChain exists
  2. The 5 core components (LLMs, prompts, parsers, retrievers, chains)
  3. How RAG actually works
  4. How agents think and act
  5. How memory makes LLMs feel human
  6. How to build a real mini project