多くのRAGアプリケーションは、単純化された検索プロセスを採用しています。ドキュメントはチャンクにセグメント化され、埋め込みに変換され、ベクトルデータベース内に保存されます。 クエリは、類似性の埋め込みに基づいて、Top-Kの最も類似したドキュメントの検索をトリガーします。 ただし、このアプローチには、特に広範なデータセットでは制限があります。 チャンクのあいまいさと最適下情報の検索は、精度を損なう可能性があります。
再帰検索は、ドキュメント構造を活用することにより、検索の精度を高めます。 チャンクを直接取得する代わりに、関連する要約を優先し、その後、より集中した結果を得るために関連するチャンクに掘り下げます。
この記事では、再帰検索を詳述し、llamaindexを使用してその実装をガイドします。ragとlangchain
生のチャンク埋め込みのみに依存する方法とは異なり、再帰検索はドキュメントの概要を埋め込み、対応するチャンクにリンクします。 クエリは最初に関連する要約を取得し、次にこれらの要約の関連するチャンク内で関連情報を特定します。 このコンテキストアプローチにより、情報の関連性が向上します Llamaindex
ステップ1:ドキュメントの読み込みと準備
を使用してロードされます。 各ドキュメントは、強化されたフィルタリングのためにタイトルとメタデータ(カテゴリなど)を受け取ります。 ロードされたドキュメントは、簡単にアクセスできるように辞書に保存されています。
ステップ2:LLMおよびチャンキングセットアップ
llm(例:OpenaiのGPT-4O MINI)は初期化され、Chunk作成用の文スプリッターとプロセス監視用のコールバックマネージャー。
SimpleDirectoryReader
from llama_index.core import SimpleDirectoryReader # ... (Code for loading documents remains the same) ...
類似性ベースの検索を有効にするために、各ドキュメントに対してベクトルインデックスが作成されます。 LLMで生成された要約は、オブジェクトとして保存されます
ステップ4:トップレベルのベクトルインデックス構造from llama_index.llms.openai import OpenAI from llama_index.core.callbacks import LlamaDebugHandler, CallbackManager from llama_index.core.node_parser import SentenceSplitter # ... (Code for LLM and chunking setup remains the same) ...
トップレベルのベクトルインデックスは、生成された要約から構築されており、詳細なチャンクにアクセスする前に関連する要約の初期検索を可能にします。
ステップ5:再帰検索のセットアップIndexNode
from llama_index.core import VectorStoreIndex, SummaryIndex from llama_index.core.schema import IndexNode # ... (Code for building vector indices and generating summaries remains the same) ...
ステップ6:再帰検索クエリ
サンプルクエリは、構成された再帰レトリバーを使用して実行されます
from llama_index.core import SimpleDirectoryReader # ... (Code for loading documents remains the same) ...
以上がRAGの再帰検索:LlamainDexによる実装の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。