VectorStoreIndex, ListIndex, TreeIndex, KeywordTableIndexの違い

LlamaIndex(旧称GPT Index)における「インデックスの構築」は、文書を処理し、検索や生成の基盤として機能するデータ構造を生成するプロセスです。LlamaIndexには複数のインデックスタイプが用意されており、代表的なものに以下の4つがあります:


1. VectorStoreIndex(ベクトルストアインデックス)

特徴:

  • 意味ベースの検索に特化。

  • 文書を埋め込みベクトル(embedding)に変換して格納。

  • 検索時にはクエリもベクトル化し、コサイン類似度などを用いて類似度の高いノードを返す。

用途:

  • セマンティック検索

  • Retrieval-Augmented Generation(RAG)

使用技術例:

  • OpenAI Embeddings、HuggingFace Transformers など

  • ベクトルデータベース(例:FAISS、Pinecone、Weaviate)との連携


2. ListIndex(リストインデックス)

特徴:

  • 文書をシーケンシャルに格納する単純な構造。

  • 検索時には全文を走査して関連箇所を抽出。

  • メモリ上に小さなデータセットを持つ場合に有効。

用途:

  • 小規模なデータセットの質問応答

  • チュートリアルや開発初期の簡易検証

長所と短所:

  • 構造がシンプルで高速に構築できるが、スケーラビリティに劣る。


3. TreeIndex(ツリーインデックス)

特徴:

  • 文書ノードを階層的な**木構造(階層サマリツリー)**にまとめる。

  • 各内部ノードに要約があり、クエリのルーティングを助ける。

  • 質問に対し、トップダウンでノードを探索する。

用途:

  • ドキュメントの階層的な要約やナビゲーション

  • 長大な文書構造におけるセクション単位の検索

利点:

  • 効率的なルーティングと部分検索が可能


4. KeywordTableIndex(キーワードテーブルインデックス)

特徴:

  • 文書から抽出したキーワードをインデックス化し、テーブルに保存。

  • クエリ中のキーワードと一致する文書ノードを検索。

用途:

  • 精度の高いキーワードベースの検索

  • FAQや辞書、構造化された文書に有効

技術的詳細:

  • keyword_extractor を指定することでカスタムのキーワード抽出が可能


まとめ比較表

インデックスタイプ 検索方式 適した用途 特徴
VectorStoreIndex 意味ベース(ベクトル) セマンティック検索、RAG 埋め込み + 類似度検索
ListIndex 全文走査 小規模データ、単純なQA 単純構造、順次処理
TreeIndex 階層探索 長文の要約、ドキュメント構造化 サマリーツリーによる探索
KeywordTableIndex キーワード一致 辞書・FAQのような明確な語彙検索 抽出キーワードによるインデックス化

それぞれのインデックスは、データの性質や求める検索精度・速度によって使い分けることが推奨されます。例えば、大規模で意味的な検索が必要な場合は VectorStoreIndex、文書の構造を生かしたルート探索が必要な場合は TreeIndex が適しています。

ChatGPT4o 生成日:2025/06/14