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 등에 최적화 |
🧱 유연성과 확장성이 좋아서 빠르게 프로토타입 구현 가능 |