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: 複数ステップにまたがる問答処理。
-
補足:全体の流れ
これらのコンポーネントは、LlamaIndexにおける RAG(Retrieval-Augmented Generation) の実装において中核的な役割を果たします。それぞれが疎結合でありながら統合的に動作することで、柔軟かつ高精度な情報検索・応答生成を実現しています。
ChatGPT4o 生成日:2025/06/14