Contents
see List개요
LLM 애플리케이션을 개발할 때 가장 많이 사용되는 두 프레임워크는 LangChain과 LlamaIndex입니다. 2025년 현재, 두 프레임워크 모두 초기 버전에서 크게 발전하여 각자의 강점이 더욱 명확해졌습니다.
LangChain은 범용 LLM 오케스트레이션 프레임워크로 발전했고, LlamaIndex는 데이터 연결과 검색에 특화된 프레임워크로 자리잡았습니다. 이 글에서는 두 프레임워크의 아키텍처, 사용 사례, 성능을 비교하여 프로젝트에 맞는 선택을 돕습니다.
핵심 개념: 설계 철학의 차이
두 프레임워크의 근본적 차이는 설계 목표에 있습니다.
- LangChain: "LLM으로 무엇이든 만들 수 있는 범용 프레임워크". 체인, 에이전트, 메모리, 도구 등 다양한 추상화를 제공합니다. LCEL(LangChain Expression Language)을 통해 선언적으로 파이프라인을 구성합니다.
- LlamaIndex: "데이터와 LLM을 연결하는 데이터 프레임워크". 문서 인덱싱, 검색, 쿼리 엔진에 집중합니다. RAG 파이프라인 구축에 최적화되어 있습니다.
간단히 말해, LangChain은 스위스 아미 나이프이고, LlamaIndex는 전문 수술 도구입니다.
실전 예제: 동일한 RAG를 양쪽으로 구현
같은 RAG 파이프라인을 두 프레임워크로 구현하여 비교합니다.
# === LangChain 방식 ===
from langchain_openai import ChatOpenAI, OpenAIEmbeddings
from langchain_community.vectorstores import FAISS
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.runnables import RunnablePassthrough
from langchain_core.output_parsers import StrOutputParser
# 벡터스토어 구성
embeddings = OpenAIEmbeddings(model="text-embedding-3-small")
vectorstore = FAISS.from_documents(documents, embeddings)
retriever = vectorstore.as_retriever(search_kwargs={"k": 3})
# LCEL 체인 구성
prompt = ChatPromptTemplate.from_template("""
다음 컨텍스트를 바탕으로 질문에 답하세요.
컨텍스트: {context}
질문: {question}
""")
chain = (
{"context": retriever, "question": RunnablePassthrough()}
| prompt
| ChatOpenAI(model="gpt-4o")
| StrOutputParser()
)
answer = chain.invoke("프로젝트 아키텍처를 설명해줘")
# === LlamaIndex 방식 ===
from llama_index.core import VectorStoreIndex, SimpleDirectoryReader
from llama_index.core import Settings
from llama_index.llms.openai import OpenAI
from llama_index.embeddings.openai import OpenAIEmbedding
# 글로벌 설정
Settings.llm = OpenAI(model="gpt-4o")
Settings.embed_model = OpenAIEmbedding(model_name="text-embedding-3-small")
# 문서 로딩 + 인덱싱 (한 줄)
documents = SimpleDirectoryReader("./docs").load_data()
index = VectorStoreIndex.from_documents(documents)
# 쿼리 엔진 생성 + 질의
query_engine = index.as_query_engine(similarity_top_k=3)
response = query_engine.query("프로젝트 아키텍처를 설명해줘")
print(response)
활용 팁
- RAG 중심이라면 LlamaIndex: 문서 검색, 요약, Q&A 시스템이 주 목적이라면 LlamaIndex가 더 간결하고 효율적입니다.
- 복잡한 워크플로우라면 LangChain: 에이전트, 멀티스텝 체인, 다양한 외부 도구 통합이 필요하면 LangChain이 유리합니다.
- 함께 사용 가능: LlamaIndex의 인덱스를 LangChain의 retriever로 사용할 수 있습니다. 두 프레임워크는 상호 보완적입니다.
- LangGraph 주목: LangChain 팀의 LangGraph는 상태 기반 에이전트 구축에 특화되어 있어, 복잡한 에이전트에는 LangGraph를 검토하세요.
- 프로덕션 고려사항: 두 프레임워크 모두 LangSmith, Arize 등 관측성(Observability) 도구와 통합됩니다. 프로덕션 배포 시 반드시 모니터링을 설정하세요.
마무리
2025년 기준으로 LangChain과 LlamaIndex 모두 성숙한 프레임워크입니다. "어느 것이 더 낫다"보다는 "어느 것이 내 프로젝트에 더 적합한가"를 기준으로 선택하세요. RAG 특화라면 LlamaIndex, 범용 에이전트 시스템이라면 LangChain이 올바른 출발점입니다.