6.

LlamaIndex とは?RAG / LLM データ統合フレームワークの使い方

編集

本稿は LlamaIndex (ラマインデックス) に関する記事です。

この記事の要点
  • LlamaIndex は "LLM × あなたのデータ" に特化したフレームワーク。RAG を最短経路で構築できる
  • 140+ のデータコネクタ (PDF/Notion/Slack/Confluence/Google Drive 等) が標準で用意
  • Index 抽象 (ベクトル / キーワード / 木 / グラフ) でデータの持ち方を選べる
  • 本格的なエージェントは AgentWorkflow で組む
  • 運用補助に LlamaCloud / LlamaHub がある
  • Python / TypeScript の双方で提供

LlamaIndex とは?

LlamaIndex は、「LLM と自社データを繋ぐ」ことを目的としたフレームワークです。LangChain と並んで LLM アプリ開発の代表格で、特に RAG (検索拡張生成) のためのデータ取込み・インデックス・検索・回答合成を一気通貫で扱う点に強みがあります。

もともと「GPT Index」という名前で始まり、LLM に外部データを与えるための仕組みを軽量に提供してきました。現在はエージェント・ワークフロー機能も拡充し、汎用 LLM アプリフレームワークとして発展しています。

LlamaIndex ファミリーの全体像

プロダクト役割
LlamaIndex (Python)本体。RAG・エージェント・ワークフロー構築
LlamaIndex.TSTypeScript / JavaScript 版
LlamaHubデータコネクタ・ツール・パックの公開リポジトリ
LlamaParsePDF・Word・複雑表組みの高品質パーサ (SaaS)
LlamaCloud本番向けインデックス管理・パイプラインのマネージドサービス

主な特徴

  • RAG 専用 API がシンプルVectorStoreIndex.from_documents + query_engine の 2 行で動く
  • 豊富なデータコネクタ — PDF、Word、Notion、Slack、Confluence、Google Drive、SQL、Web Crawler など 140+ が LlamaHub で公開
  • Index の種類が選べる — ベクトル / キーワード / 木 / 知識グラフ / SQL / ハイブリッド
  • Query Engine の組み立て — 検索 → 再ランク → 合成、サブクエリ分解、複数 Index ルーティング
  • Agent / AgentWorkflow — ツール使用・複数手順のエージェント
  • マルチプロバイダ対応 — OpenAI、Anthropic、Google、Cohere、Hugging Face、ローカル LLM (Ollama)
  • マルチモーダル — 画像・PDF・テーブル混在のドキュメントに対応

典型的な使い方: 最短 RAG

from llama_index.core import SimpleDirectoryReader, VectorStoreIndex

# 1) ローカルフォルダから全文書ロード
docs = SimpleDirectoryReader("./manual").load_data()

# 2) インデックス作成 (埋め込み + ベクトル DB を裏で構築)
index = VectorStoreIndex.from_documents(docs)

# 3) クエリエンジン
qe = index.as_query_engine()
print(qe.query("このマニュアルの返金ポリシーを要約して"))

主要コンポーネント

役割代表クラス
Document Loader各種データソースから文書を読み込みSimpleDirectoryReader、各種 LlamaHub Reader
Node Parser文書をチャンク (Node) に分割SentenceSplitterSemanticSplitter
Embeddingベクトル化OpenAI、HuggingFace、BGE、Cohere
Index検索可能なデータ構造VectorStoreIndexSummaryIndexKnowledgeGraphIndex
RetrieverIndex からの検索VectorIndexRetriever、ハイブリッド検索
Postprocessor / Reranker再ランクで上位を絞り込みCohere Rerank、SentenceTransformersRerank
Response Synthesizer検索結果+クエリから回答生成refine / tree_summarize / compact
Query Engine上記をまとめた問合せ口index.as_query_engine()
Agent / Workflowツール使用・複数手順FunctionAgentAgentWorkflow

LangChain との使い分け

観点 LlamaIndex LangChain
RAG を最短で作りたい○ (部品組合せ)
多種データソース取込◎ (LlamaHub のリーダ豊富)○ (Document Loader)
エージェント中心の汎用 LLM アプリ○ (AgentWorkflow)◎ (LangGraph)
プロバイダ抽象化
Tool エコシステム◎ (圧倒的)
商用サポートLlamaCloudLangSmith / LangGraph Cloud

緑行は LlamaIndex の本領が活きるシナリオ。

インデックスの種類

Index用途
VectorStoreIndexベクトル類似検索。標準の RAG はこれ
SummaryIndex「全部要約」型。短い文書や FAQ
TreeIndex階層的要約。長い書籍・大量資料
KeywordTableIndexキーワード辞書ベース
KnowledgeGraphIndex知識グラフ。関係性が重要なデータ
DocumentSummaryIndex各文書サマリでルーティング → ドリルダウン
SQL / Pandas構造化データを LLM から問合せ
ComposableGraph複数 Index を統合

インストール

# Python
pip install llama-index

# 個別パッケージで絞ることも可能
pip install llama-index-core llama-index-llms-openai llama-index-embeddings-openai
pip install llama-index-vector-stores-chroma

# TypeScript / JavaScript
npm install llamaindex

運用上のヒント

Tips
  • チャンクサイズと重複 (chunk_size / chunk_overlap) は検索精度に直結。文書種別ごとに調整
  • 本番では外部ベクトル DB (pgvector / Qdrant / Pinecone) に永続化
  • 再ランク (Reranker) を入れると精度が大きく上がる (Cohere Rerank / BGE Reranker)
  • 複雑な PDF / 表組みは LlamaParse でテキスト化精度を上げる
  • クエリ書き換え・サブクエリ分解 (SubQuestionQueryEngine) で複雑質問に対応
  • 応答合成方式 (refine / compact / tree_summarize) を試して、コストと品質のバランスを取る
  • 本番監視は LlamaCloudPhoenix (OpenInference) 等のオブザーバビリティと統合

注意点

よくある落とし穴
  • API が変動的 — メジャー版で大きく変わることがある。requirements.txt で固定
  • チャンク分割の質が悪いと検索結果も劣化。PDF はそのままだと表組み崩れ
  • 埋め込みのコスト: 大量取込で OpenAI Embedding 料金が膨らむ。ローカル埋め込み (bge / e5) と比較
  • ベクトル DB の永続化: メモリ版は再起動で消える。persist_dir 設定または外部 DB
  • 機密文書を取り込む場合、埋め込みもクラウド送信される点を確認 (オンプレ埋め込みモデル選択)
  • マルチテナントのメタデータフィルタを正しく設計しないと情報漏れリスク
  • 大規模インデックスはビルド時間と再構築コストに注意。差分更新の仕組みが必要

関連

編集
Post Share
子ページ

子ページはありません

同階層のページ
  1. PyTorch
  2. TensorFlow(テンソルフロー)
  3. scikit-learn
  4. Hugging Face Transformers
  5. LangChain
  6. LlamaIndex
  7. JAX
  8. ONNX Runtime

最近更新/作成されたページ