Node, Index, Retriever, QueryEngineの役割

LlamaIndexの「コア概念とコンポーネント」における Node(ノード)Index(インデックス)Retriever(リトリーバ)QueryEngine(クエリエンジン) は、それぞれ以下のような役割を担っています。


1. Node(ノード): ドキュメントの最小構成単位

  • 役割:

    • ノードは、元のドキュメントを意味的に処理しやすいように分割した チャンク(単位) を表す。

    • 1つのノードには、テキスト、メタデータ(ファイル名・章番号など)、およびオプションで埋め込みベクトル(ベクトル化された特徴量)が含まれる。

  • 特徴:

    • ノードは Document から生成され、インデックス化・検索・生成の基本単位となる。

    • ドキュメント構造(親子関係やセクション情報)を保持可能。


2. Index(インデックス): 構造化されたノード集合体

  • 役割:

    • ノードの集合をあるルールに従って構造化したもの。

    • 効率的な検索や推論のために、データを整理・最適化する。

  • 主な種類:

    • VectorStoreIndex: 埋め込みベクトルを使用し、意味的に近いノードを検索。

    • ListIndex: ノードを線形に格納し、順次処理に向く。

    • TreeIndex: 階層構造を持ち、要約生成などに利用される。

  • 用途:

    • インデックスは、Retriever や QueryEngine により利用される。


3. Retriever(リトリーバ): ノードの検索機構

  • 役割:

    • クエリ(質問)に対して、インデックス内から関連性の高いノードを検索・抽出する。

    • 検索方法としてはベクトル類似度、キーワード一致、メタデータフィルタなどを活用可能。

  • :

    • VectorIndexRetriever: ベクトル空間における類似ノードを返す。

    • KeywordTableRetriever: 単語ベースのインデックスによるキーワード検索。

  • 高度な設定:

    • 複数のRetrieverを組み合わせたり、フィルタ条件を追加したりすることで柔軟な検索が可能。


4. QueryEngine(クエリエンジン): LLM応答生成の統括機構

  • 役割:

    • Retrieverで取得したノードに基づき、LLMを用いて最終的な回答を生成する。

    • プロンプトの構築・回答の組み立て・チェーンの制御などを行う。

  • 主な機能:

    • 入力クエリの受け取り → ノードの検索 → LLMへのプロンプト生成 → 回答の整形と返却。

  • 種類:

    • RetrieverQueryEngine: 一般的なRAGパターン。

    • SubQuestionQueryEngine: クエリを細分化して処理。

    • MultiStepQueryEngine: 複数ステップにまたがる問答処理。


補足:全体の流れ

csharp
[Document] ↓ チャンク化 [Node] ↓ インデックス化 [Index] ↓ 検索要求 [Retriever] ↓ LLM入力構築 [QueryEngine] ↓ 応答生成 [Answer]

これらのコンポーネントは、LlamaIndexにおける RAG(Retrieval-Augmented Generation) の実装において中核的な役割を果たします。それぞれが疎結合でありながら統合的に動作することで、柔軟かつ高精度な情報検索・応答生成を実現しています。

ChatGPT4o 生成日:2025/06/14