| 항목 | LangChain | LlamaIndex |
|---|---|---|
| 주 목적 | 범용 LLM 앱/에이전트 오케스트레이션 | 데이터 인덱싱·검색 중심 RAG 프레임워크 |
| 핵심 추상화 | Runnable, LCEL, Chain, Agent, Tool | Index, Node, Retriever, QueryEngine, Workflow |
| 강점 | 광범위한 통합, 에이전트/툴 오케스트레이션, LangGraph 상태기반 워크플로우 | RAG 파이프라인 깊이, 다양한 인덱스 구조, 데이터 커넥터(LlamaHub) |
| 약점 | 추상화가 많고 변화 잦음, 학습곡선 가파름 | 범용 에이전트 오케스트레이션은 상대적으로 얕음 |
| RAG 지원 | 기본 제공(VectorStore, Retriever) — 단순~중간 복잡도에 적합 | 벡터/요약/트리/지식그래프/하이브리드 등 풍부 |
| 에이전트 | LangGraph 기반 그래프형 에이전트, 멀티에이전트 패턴 성숙 | AgentWorkflow, FunctionAgent — 단순~중간 시나리오에 적합 |
| 데이터 커넥터 | 다수 Document Loader | LlamaHub로 매우 광범위(파일·DB·SaaS·API) |
| 구조화 출력 | Pydantic 기반 with_structured_output, OpenAI tools 연동 | Pydantic Output Parser, 함수 호출 기반 구조화 |
| 관측/평가 | LangSmith (트레이싱·평가·데이터셋) | 자체 evaluator + Arize/TruLens 등 외부 통합 |
| 배포 | LangServe, LangGraph Platform | llama_deploy (워크플로우 단위 서비스 배포) |
| 언어 | Python, JS/TS | Python (TS는 부분) |
| 라이선스 | MIT | MIT |
Function/Tool Calling 관점 비교
| 항목 | LangChain | LlamaIndex |
|---|---|---|
| OpenAI tools 호환 | ✅ bind_tools, tool_choice, 병렬 tool calls | ✅ FunctionTool, FunctionAgent로 동등 수준 지원 |
| 도구 정의 | @tool 데코레이터, Pydantic schema 자동 추론 | FunctionTool.from_defaults, Pydantic schema 지원 |
| 에이전트 루프 | LangGraph(StateGraph)로 명시적 상태/분기 제어 | AgentWorkflow의 이벤트 기반 step 모델 |
| 멀티에이전트 | Supervisor/Swarm 등 패턴 다수 | AgentWorkflow로 다중 에이전트 핸드오프 |
| 구조화 출력 강제 | tools/JSON mode 기반, Outlines/xgrammar 연동 가능 | Output Parser + tool calling 기반 |
| 스트리밍 | 토큰·중간 단계 모두 스트리밍 가능 | 토큰·이벤트 스트리밍 지원 |
권장 사용 시나리오
| 상황 | 추천 |
|---|---|
| 복잡한 멀티스텝 에이전트/워크플로우 오케스트레이션 | LangChain (LangGraph) |
| 다양한 LLM·도구·SaaS 통합이 핵심 | LangChain |
| 운영 트레이싱·평가 파이프라인 구축 | LangChain (LangSmith) |
| 대규모 문서·이종 데이터 RAG가 핵심 | LlamaIndex |
| 인덱스 구조 다양화(요약·트리·KG·하이브리드) | LlamaIndex |
| 기업 데이터 커넥터(LlamaHub) 활용 ETL→RAG | LlamaIndex |
| RAG + 가벼운 에이전트 결합 | LlamaIndex 단독 또는 LangChain과 혼용 |
- 에이전트 오케스트레이션·통합 폭·운영 도구가 우선이면 LangChain.
- 데이터 인입·인덱싱·검색 품질이 우선이면 LlamaIndex.
- 실무에서는 LlamaIndex로 RAG 코어를 구성하고, LangGraph로 에이전트/워크플로우를 감싸는 하이브리드 구성도 흔함. 두 라이브러리 모두 OpenAI tool calling 호환이 좋으므로 vLLM/Ollama 어느 백엔드와도 결합 가능.