はじめに
LlamaIndex(旧 GPT Index)と LangChain は、いずれも LLM アプリケーション、とりわけ Retrieval-Augmented Generation (RAG) の構築を容易にする OSS フレームワークです。両者は重なる部分を持ちながらも、「何を中心概念に据えるか」「どこまでを責務とするか」という設計思想が大きく異なります。本稿では次の観点で比較します。
| 観点 | LlamaIndex | LangChain |
|---|---|---|
| コア概念 | データ→ノード→インデックス→クエリエンジンという四層モデル | Runnable → Chain → Agent の三層モデル |
| 主目的 | エンタープライズデータの取り込み・構造化・高性能検索 | モデル呼び出しやツール呼び出しを組み合わせたワークフロー/エージェント構築 |
| データ連携 | 160+ コネクタ(LlamaHub)。Structured/Unstructured どちらも統合 ibm.com | 400+ ドキュメントローダ。複数の埋め込み・ベクタ DB を選択可 python.langchain.com |
| インデックス | List/Tree/Graph など多様。インデックス合成でスケーラブル | 典型的には Vector Store Index。Index API は v0.2 で安定化 python.langchain.com |
| RAG パイプライン | Query → Retriever → Post-Processor → Response Synthesizer をワンラインで呼び出し | TextSplitter・Retriever・Chain を明示的に接続 |
| エージェント | 2025-06 公開の Agent Framework(Spreadsheet Agent など) llamaindex.ai | AgentExecutor(旧)、LangGraph (LangChain v0.2〜) で状態遷移を定義 |
| 評価/監視 | llama-index-eval。2025-05 以降 API 刷新 docs.llamaindex.ai | LangSmith でトレーシング・デバッグ・評価を統合 |
| デプロイ | LlamaCloud (托管) / 自前 FastAPI / Flask | LangServe (via FastAPI) / LangGraph |
| 言語サポート | Python, TypeScript | Python, JavaScript/TypeScript |
| ライセンス | Apache-2.0 | MIT |
| コミュニティ傾向 | “検索×業務文書” に強いユーザが多い | エージェント/ツール連携の PoC 作成者が多い |
1. 設計思想と抽象化レイヤ
-
LlamaIndex は「ドキュメントを どう表現・検索 するか」を第一級概念に据え、
IndexとQueryEngineが API の中心です。開発者は「インデックスを選ぶ → クエリを投げる」だけで RAG を構築できます。ibm.com -
LangChain は「LLM 呼び出しステップを どう合成 するか」にフォーカスし、
Runnableを最小単位に据えて複数のツール・モデル・メモリを束ねる“チェーン”を構築します。これによりチャットボット・ツール実行・エージェントなど幅広いワークフローを表現できます。python.langchain.com
2. RAG パイプラインの実装スタイル
-
LlamaIndex:
VectorStoreIndex.from_documents()でインデックス生成し、query_engine.query()で検索+生成を一括実行。“Chunking → Retrieval → Synthesis” がフレームワーク内で完結するため、サンプルコードは 20 行以下で動きます。 -
LangChain:
DocumentLoader→TextSplitter→VectorStore→RetrievalQAChainのように各段階を 明示的に 連結します。各構成要素を差し替えやすい半面、最初のセットアップは冗長になりがちです。Medium の比較記事でも「柔軟性と学習コストのトレードオフ」が指摘されています。medium.com
3. データコネクタ & インデックス
-
LlamaHub には SQL/MongoDB/SharePoint/YouTube など 160 以上のローダがあり、Index レイヤでツリー・グラフ・テンプレート付きグラフなど高度な構造を選択できます。ibm.com
-
LangChain は 400 以上の
DocumentLoaderを持ちますが、Index は主にベクタストア(FAISS/Pinecone/Weaviate 等)中心。複数ストアを束ねるMultiRetrieverなどでスケーリングします。python.langchain.com
4. エージェント機能
-
LlamaIndex は 2025-06 の Newsletter で Agent Framework を正式ローンチし、Excel/財務報告など業務タスクに特化したプリセット Agent を提供し始めました。llamaindex.ai
-
LangChain は古くから
ReActベースの AgentExecutor を持ち、2024-Q4 以降は状態遷移グラフを定義できる LangGraph が主流です。v0.2 系では Expression Language (LCEL) でエージェント構築も宣言的に書けます。python.langchain.com
5. 評価・監視
-
LlamaIndex は 0.8 系で
llama_index.evalを刷新し、FaithfulnessEvaluator・RelevancyEvaluatorなどの標準実装を提供。CLI からバッチ評価も可能です。docs.llamaindex.ai -
LangChain は LangSmith を外部サービスとして提供し、トレース・リプレイ・データセット管理・実験比較を GUI で行えます。
6. デプロイと運用
-
LlamaIndex: 軽量な FastAPI ベースのサーバを自動生成できるほか、LlamaCloud で托管サービスも展開。
-
LangChain:
langserveコマンドでエンドポイント化、または LangGraph をワーカーにデプロイ。
7. 典型的な選択パターン
| 選びたいシナリオ | 推奨 |
|---|---|
| 最小コードで社内文書 Q&A を作りたい | LlamaIndex 単体 |
| 複雑なツール呼び出し・マルチステップ推論が必要 | LangChain (+ 好みの Retriever) |
| インデックス性能は欲しいが、ツール連携もしたい | LlamaIndex で Index / Retriever を作り、LangChain Agent から呼び出す(実運用で最も多い)github.com |
8. LangChain 以外のフレームワークとの位置付け(簡易)
| フレームワーク | 特徴 | LlamaIndex との相性 |
|---|---|---|
| Haystack | エンタープライズ検索基盤を意識したプラグイン構造 | Retriever を相互利用可能 |
| Semantic Kernel | C#/Java 版もある軽量オーケストレーション | C# プロジェクトで LlamaParse を呼び出すケースが増加中 |
| HuggingFace RAG - Plugins | Transformers エコシステムとの親和性 | インデックス部を置き換える形で併用 |
まとめと指針
-
LlamaIndex は「データ中心・検索性能重視」。オンプレ/クラウドを問わず “エンタープライズ知識アシスタント” を短納期で作るのに向く。
-
LangChain は「ワークフロー中心・汎用性重視」。ツール呼び出し、マルチモーダル、実験的プロトタイピングに強い。
-
両者は競合というより 補完関係 にあり、大規模プロジェクトでは「LlamaIndex で高速検索+LangChain で推論ロジック」という組み合わせが定石になりつつある。プロジェクト要件を整理し、検索性能 × 拡張性 × 開発スピード のバランスで適切に採用することが重要です。
ChatGPT4o 生成日:2025/06/14