PageIndex は、長文PDF/Markdown向けの Vectorless(ベクトルレス)かつ Reasoning-based(推論ベース)な RAG を実現する Python フレームワーク(VectifyAI 製、MITライセンス)。中核アイデアは以下の2ステップ:
node_id / start_index / end_index / summary を持つ階層的なJSONツリーへ変換(run_pageindex.py)。主な構成:
pageindex/page_index.py …PDF→ツリー化のメインロジックpageindex/page_index_md.py …Markdown向け(# の階層を利用)pageindex/retrieve.py …get_document / get_document_structure / get_page_content の3ツールpageindex/client.py …PageIndexClient(ローカルワークスペース管理)examples/agentic_vectorless_rag_demo.py …OpenAI Agents SDK と組み合わせたエージェント例従来の vector RAG(チャンク分割+埋め込み+ベクトルDB) との違い:
| 観点 | 一般的な Vector RAG | PageIndex |
|---|---|---|
| 索引 | 固定長チャンク + 埋め込みベクトル | ドキュメント本来の章節構造ツリー |
| 検索原理 | 類似度(similarity) | LLMによる関連性推論(relevance) |
| インフラ | ベクトルDB(Pinecone/Faiss等)必須 | 不要。JSONツリー+LLMだけ |
| チャンク分割 | 必要(境界で文脈断絶しがち) | 不要。自然なセクション単位 |
| 説明性 | 不透明な“vibe retrieval” | ページ番号・節IDで根拠が追跡可能 |
| 文脈考慮 | クエリ単発の埋め込みが中心 | 会話履歴やドメイン知識を都度反映可 |
| ベンチ | — | FinanceBench で 98.7% の SOTA を主張 |
要するに「ベクトルDBの運用コストとチャンク境界問題から解放され、専門ドキュメントで必要な多段推論や根拠提示に強い」のが嬉しい点。財務報告・規制文書・法務/技術マニュアル・教科書など、長く構造化された文書での効果が大きい。
pip install --upgrade -r requirements.txt.env に OPENAI_API_KEY=...(LiteLLM 経由で他プロバイダも可)を設定python3 run_pageindex.py --pdf_path /path/to/doc.pdf
Markdownなら --md_path /path/to/doc.md./results/<docname>_structure.json にツリー(title / node_id / start_index / end_index / summary)が出力される主なオプション:--model、--toc-check-pages、--max-pages-per-node、--max-tokens-per-node、--if-add-node-summary など(config.yaml の値を上書き)。
pip install openai-agents を追加PageIndexClient(workspace=...) でクライアントを生成し、client.index(pdf_path) でドキュメントIDを得るget_document / get_document_structure / get_page_content)を渡すpython3 examples/agentic_vectorless_rag_demo.py本リポジトリは標準PDFパース前提。複雑なPDFや大規模コーパスでは公式の Cloud Service(OCR強化+API/MCP) や Chat Platform(chat.pageindex.ai)への移行が想定されている。cookbook/ には Vision RAG(OCR不要、ページ画像直読み)や agentic retrieval などの Notebook も同梱。