統計ロードマップ
2026-04-30·実装·⏱ 約 3

LangChain vs LlamaIndex ─ どちらを選ぶべきか

LLM アプリの 2 大フレームワーク LangChain と LlamaIndex の違いを実装視点で比較。エージェント vs RAG、用途別の選び方を解説。

LLM アプリ開発のフレームワーク選びで最初に出てくるのが LangChainLlamaIndex。両者ともできることは多くオーバーラップしますが、設計思想と得意領域が違います。

コア思想の違い

  • LangChain: LLM をハブに、ツール・記憶・推論ステップを オーケストレーション するフレームワーク。LCEL(LangChain Expression Language)で宣言的にチェーンを組む。
  • LlamaIndex: 外部データ → インデックス → 検索 → LLM への文脈注入という RAG パイプライン を最短距離で組む。VectorStore・QueryEngine が中心。

用途別おすすめ

  • 🤖 AI エージェント・対話 Bot → LangChain(ツール呼び出し、ReAct、LangGraph)
  • 📚 社内ドキュメント Q&A・検索 → LlamaIndex(自動チャンク分割、メタデータフィルタ、ハイブリッド検索)
  • 🔄 両方やる本格アプリ → 併用(LlamaIndex で取得 → LangChain で対話制御)
LangChain ─ シンプルな RAG チェーン
from langchain_openai import ChatOpenAI, OpenAIEmbeddings
from langchain_community.vectorstores import FAISS
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.runnables import RunnablePassthrough

vs = FAISS.from_texts(docs, OpenAIEmbeddings())
retriever = vs.as_retriever(k=3)
llm = ChatOpenAI(model='gpt-4o-mini')
prompt = ChatPromptTemplate.from_template('文脈:\n{ctx}\n質問: {q}')
chain = {'ctx': retriever, 'q': RunnablePassthrough()} | prompt | llm
print(chain.invoke('統計検定2級は何時間で取れる?').content)
LlamaIndex ─ 同じことを 5 行で
from llama_index.core import VectorStoreIndex, Document

index = VectorStoreIndex.from_documents([Document(text=t) for t in docs])
query_engine = index.as_query_engine()
resp = query_engine.query('統計検定2級は何時間で取れる?')
print(resp)

学習の進め方

  • RAG の基礎は両方で必須 → [RAG 入門](/blog/rag-introduction) を先に読む
  • LangChain は LangSmith で実行トレースを可視化できる ─ デバッグが効率的
  • LlamaIndex はドキュメント構造を保ったインデックス(Tree, Knowledge Graph)が特徴
  • [AI エージェント 入門](/blog/ai-agents-introduction) も合わせて読むと、選択基準が明確に
Related Articles

関連記事