LangChainとの連携

LangChainとLlamaIndexを組み合わせる目的

LangChainの役割 LlamaIndexの役割 相乗効果
LLMワークフローのオーケストレーション
(エージェント、チェーン、プロンプト、メモリ等)
データ接続・前処理・インデックス・高性能検索 LangChainが会話ロジックを管理し、LlamaIndexが外部/社内データを素早く検索して根拠付きコンテキストを提供

1. 基本的な統合アプローチ

パターン 概要 典型的ユースケース
Tool化 LlamaIndexの QueryEngineOn-Demand Loader を LangChain Agent から呼び出せる Tool として登録 RAGチャットボット、社内検索アシスタント
Retriever化 LlamaIndex インデックスを LangChain 標準インタフェース Retriever にラップ
LlamaIndexRetriever / LlamaIndexGraphRetriever
Q&A with source citation、グラフ探索
Memory化 会話履歴を LlamaIndex に保存し、LangChain の Memory クラスとして利用 長対話での過去コンテキスト保持
低レベル組み込み LlamaIndex の NodeParserEmbedding 実装を LangChain チェーンの内部で直接使用 カスタム前処理/埋め込みパイプライン

2. 実装ステップ

2-1. 前提パッケージ

bash
pip install llama-index langchain langchain-community # LangChain v0.3系以降

2-2. インデックスを Tool 化して Agent から呼ぶ

python
from llama_index.core import VectorStoreIndex, SimpleDirectoryReader from llama_index.core.langchain_helpers.agents import ( IndexToolConfig, LlamaIndexTool ) from langchain_openai import ChatOpenAI from langchain.agents import initialize_agent, AgentType # 1) データを取り込みインデックス化 docs = SimpleDirectoryReader("data/").load_data() index = VectorStoreIndex.from_documents(docs) query_engine = index.as_query_engine() # 2) LlamaIndex → LangChain Tool へ変換 tool_cfg = IndexToolConfig( query_engine=query_engine, name="KnowledgeBase", description="社内ドキュメント検索用", tool_kwargs={"return_direct": True}, ) llama_tool = LlamaIndexTool.from_tool_config(tool_cfg) # 3) LangChain Agent に登録 llm = ChatOpenAI(model="gpt-4o") agent = initialize_agent( tools=[llama_tool], llm=llm, agent=AgentType.OPENAI_FUNCTIONS, verbose=True, ) agent.invoke("昨年度の売上推移を教えて")

Tool 化の API 例は公式ドキュメントのサンプルに基づく docs.llamaindex.ai

2-3. Retriever ラッパを使うシンプル RAG

python
from langchain_community.retrievers.llama_index import LlamaIndexRetriever from langchain.chains import RetrievalQA retriever = LlamaIndexRetriever(query_engine=index.as_query_engine()) qa_chain = RetrievalQA.from_chain_type( llm=llm, chain_type="stuff", retriever=retriever, ) qa_chain.invoke({"query": "主要製品Aの保証期間は?"})

LlamaIndexRetriever / LlamaIndexGraphRetriever は LangChain v0.3 で正式サポート python.langchain.com

2-4. 会話メモリとしての利用イメージ

python
from llama_index.core import SummaryIndex from llama_index.memory import LlamaIndexMemory from langchain.memory import ConversationBufferMemory memory_index = SummaryIndex.from_documents([]) llama_memory = LlamaIndexMemory(index=memory_index) # LlamaIndex側 memory = ConversationBufferMemory( memory_key="chat_history", return_messages=True, chat_memory=llama_memory, # LangChain側へ橋渡し )

LlamaIndex をメモリに利用すると「長い履歴を圧縮インデックスしつつ検索」できる。LangChain の ConversationBufferMemory では難しい “数万トークン規模の履歴” でも効率的に保持可能です。datastax.com


3. オブジェクトモデル対応表

LlamaIndex LangChain 相当 コメント
Document / Node Document メタデータ構造が異なるため、双方向変換ユーティリティを使用
QueryEngine Tool / Retriever Tool 化すると Agent 呼び出し、Retriever 化するとチェーンから呼び出し
ServiceContext Callbacks, Tracing Langfuse・W&B など共通トレーサで連携可
Index (Vector/Tree…) 各種 Vector Store, Graph LangChain 側 VectorStore に移し替える必要はない

4. ベストプラクティス & 注意点

  1. バージョン整合性

    • 2025-06 時点では LlamaIndex ≥ 0.10.18LangChain ≥ 0.3.0 の組み合わせで動作確認済み。

    • 内部 API が頻繁に変わるため、requirements.txt で固定推奨。

  2. 冗長インデックス生成の回避

    • Agent 実行ごとにインデックスを再構築しない。persist_dir でディスク保存、または service_context.cache を利用。

  3. メモリ・ツールの併用

    • 長対話では Memory → Retriever → LLM の順で呼び出すとトークン効率が高い。

    • Tool としても Retriever としても同じクエリエンジンを共有すれば、ベクトル計算を再利用できる。

  4. 非同期処理

    • LangChain で AsyncAgentExecutor を使う場合、LlamaIndex 側も async_query_engine を取得してから Tool 化する。

  5. 監視・トレース

    • LangChain 既存の LangfuseCallbackHandler などに加え、LlamaIndex の LlamaDebugHandler を同時に登録すると、検索パスと LLM 推論の両方を一元で可視化できる。docs.llamaindex.aipython.langchain.com


5. 代表的ユースケース

ユースケース ポイント
社内文書チャットボット 1万ページ超を LlamaIndex で事前インデックス → LangChain Agent が Tool 経由で検索・回答
階層型ナレッジグラフQA LlamaIndex の GraphRetriever を LangChain でラップし、源泉ノード参照付き回答
RAG+計算ツール連携 LangChain ReAct Agent が Calculator, SearchAPI 等とともに LlamaIndex Tool を使う
長期学習アシスタント LlamaIndexMemory で数ヶ月分のチャット履歴をベクトル化保存し、LangChain Agent が適宜検索

まとめ

  • LangChain は “LLMアプリの脳” としてワークフローやエージェントを制御。

  • LlamaIndex は “記憶装置” として外部・社内データを高効率に格納・検索。

  • 両者を接続することで、高性能RAG + 強力なタスク指向エージェント を最小コードで実装できる。

これらの統合パターンとベストプラクティスを押さえておけば、更新の早い2025年現在でも安定したハイブリッド環境を維持できます。

ChatGPT4o 生成日:2025/06/14