Dev/AI

랭체인(LangChain)

Luigi.yoon 2025. 6. 27. 09:44

RAG나 LLM 기반 서비스에서 자주 언급되는 **LangChain(랭체인)**은 대형 언어 모델(LLM)을 활용한 응용 프로그램을 쉽게 구성할 수 있게 해주는 파이썬/자바스크립트 기반 프레임워크입니다.


✅ LangChain이란?

LangChain은 LLM을 다양한 데이터 소스(문서, DB, API 등)와 연결하고, 체계적으로 처리하는 파이프라인을 쉽게 구성하는 오픈소스 프레임워크입니다.

  • 핵심 목적: LLM을 문서 검색, 데이터 처리, 사용자 질의응답, 멀티스텝 Reasoning 등에 실제 업무 로직에 연결하기 쉽도록 해줌.
  • 주로 RAG(Retrieval-Augmented Generation), 에이전트 기반 챗봇, 검색 기반 질의응답 시스템에 많이 활용됨.


✅ LangChain 주요 구성 요소

구성 요소 설명
PromptTemplates 프롬프트 구조화 및 템플릿화
LLMs OpenAI, Hugging Face, Cohere 등 다양한 LLM 연결
Chains 여러 단계 작업(프롬프트 → 응답 → 후처리)을 연결
Agents 도구(tool) 선택, 멀티스텝 작업을 수행하는 지능형 처리 흐름
Retrievers 벡터 DB로부터 문서 검색 (예: FAISS, Pinecone)
Memory 대화 상태나 기록을 유지
Tools 외부 API, 계산기, 검색 등 기능을 호출 가능
 

✅ LangChain이 왜 필요한가?

기존 LLM 호출만으로는 다음과 같은 일들이 불편했습니다:

  • 프롬프트 재사용 어려움
  • 복잡한 데이터 처리 흐름 수동 구현 필요
  • 멀티스텝 질의응답 어려움
  • 외부 데이터 (문서, DB, API 등) 연동 어려움

→ LangChain은 이 모든 걸 모듈화해서 편하게 연결할 수 있게 해줍니다.


LangChain vs 전통 LLM 활용 방식

항목 기존 LLM API 사용 LangChain 사용
사용 방식 직접 API 호출 (ex. openai.ChatCompletion) 프레임워크로 체인 구성
문서 검색 수동 구현 필요 내장 Retriever 지원
프롬프트 템플릿 수동 문자열 조합 PromptTemplate으로 관리
멀티스텝 작업 별도 코드 필요 Chain, Agent로 손쉽게 구성
RAG 구성 직접 벡터DB 연결, 검색, 삽입 필요 RetrievalQA 등으로 일괄 구성 가능
유지보수 복잡하고 분산됨 구조화되어 재사용성과 확장성 좋음
 

✅ LangChain의 사용 예시

from langchain.chat_models import ChatOpenAI
from langchain.prompts import PromptTemplate
from langchain.chains import LLMChain

llm = ChatOpenAI(temperature=0)
prompt = PromptTemplate.from_template("서울의 유명한 음식 3가지를 추천해줘.")
chain = LLMChain(llm=llm, prompt=prompt)

response = chain.run()
print(response)

→ 이런 식으로 모듈화된 프롬프트 + 모델 + 처리 흐름을 간단하게 구성할 수 있습니다.


LangChain vs LlamaIndex vs Haystack (비교)

항목 LangChain LlamaIndex Haystack
목적 RAG 기반 전체 워크플로우 프레임워크 문서 → 벡터화/검색에 강점 검색+QA 시스템에 특화
강점 Chain/Agent 구성 유연함, LLM 통합 문서 기반 RAG 구성 편리 검색/파이프라인 튜닝
적합한 상황 복잡한 RAG, 에이전트 문서 중심 Q&A 고성능 QA, 검색
 

✅ 결론

요약
🔧 LLM 기반 응용 서비스를 쉽게 만들 수 있게 도와주는 프레임워크
📚 프롬프트, 체인, 검색, 메모리, 에이전트까지 전부 지원
💬 챗봇, 문서 질의응답, 멀티스텝 Reasoning 등에 최적화
🧱 유연성과 확장성이 좋아서 빠르게 프로토타입 구현 가능