PageIndex

2026-01-25

python

世界上最快而又最慢,最长而又最短,最平凡而又最珍贵,最容易被人忽视,而又最令人后悔的就是时间。——高尔基

PageIndex:不建向量库、不切块,用“推理式检索”把长文档读懂读透

当你认真做长文档检索(财报、法规、研究报告、技术白皮书)就会发现:传统向量 RAG 的“语义相似度”不等于真正的“相关性”。很多答案被埋在章节结构里,靠“一页一向量”的相似召回,总是差点意思。

PageIndex 的思路非常直接:灵感来自 AlphaGo,它不是去“比向量”,而是先把文档结构化成一个分层的索引树(像目录,但更适合 LLM 使用),再让模型沿着树做“推理式检索”,以人类专家查阅资料的方式去定位答案。


核心理念:用索引树 + 树搜索,模拟人类的查阅路径

传统向量检索偏“相似度”。PageIndex 做的是“相关性”,而且是可解释、可追踪的相关性。它的工作流很简单但很有效:

  1. 为文档生成一个“Table-of-Contents 风格”的层级索引树(每个节点有标题、页码范围、摘要等)
  2. 沿着树结构进行推理式检索(Tree Search),一步步缩小范围,定位真正有用的段落或页面

这种方法的优势非常直观:不再 “切块 + 相似度”,而是“按自然结构 + 推理导航”;最终给出的是带页码、带章节的引用,路径清晰、因果明确。


特性亮点

  • 无向量库(No Vector DB)
    不是按向量相似度查找,而是用文档结构与 LLM 推理做检索

  • 不切块(No Chunking)
    不把文档硬切成碎块,而是保留自然章节结构,层级清晰

  • 类人检索(Human-like Retrieval)
    模拟专家查阅路径,以树搜索的方式逐步缩小上下文范围

  • 可解释与可追踪(Explainability & Traceability)
    检索过程可复盘,引用带页码、带节名,不再是“黑箱相似度”

实战成绩也很亮眼:基于 PageIndex 的金融文档系统在 FinanceBench 上取得 98.7% ���准确率(详见 Mafin2.5-FinanceBench)。


PageIndex 索引树:长文档的一种“结构化记忆”

PageIndex 能把冗长的 PDF,转成一个用于 LLM 的“语义索引树”。你可以把它理解为一个更适合推理的“目录结构”。

示例片段(来自仓库 README):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
{
"title": "Financial Stability",
"node_id": "0006",
"start_index": 21,
"end_index": 22,
"summary": "The Federal Reserve ...",
"nodes": [
{
"title": "Monitoring Financial Vulnerabilities",
"node_id": "0007",
"start_index": 22,
"end_index": 28,
"summary": "The Federal Reserve's monitoring ..."
},
{
"title": "Domestic and International Cooperation and Coordination",
"node_id": "0008",
"start_index": 28,
"end_index": 31,
"summary": "In 2023, the Federal Reserve collaborated ..."
}
]
}

这种结构既可以在本地用开源代码生成,也可以直接通过官方 API 获得。


快速上手(本地运行)

先准备依赖与环境变量:

1
2
3
4
5
# 安装依赖
pip3 install --upgrade -r requirements.txt

# 在项目根目录创建 .env 文件,写入 OpenAI Key
CHATGPT_API_KEY=your_openai_key_here

对 PDF 运行 PageIndex:

1
python3 run_pageindex.py --pdf_path /path/to/your/document.pdf

可选参数(从 README 直接摘取):

1
2
3
4
5
6
7
--model                 OpenAI model to use (default: gpt-4o-2024-11-20)
--toc-check-pages Pages to check for table of contents (default: 20)
--max-pages-per-node Max pages per node (default: 10)
--max-tokens-per-node Max tokens per node (default: 20000)
--if-add-node-id Add node ID (yes/no, default: yes)
--if-add-node-summary Add node summary (yes/no, default: yes)
--if-add-doc-description Add doc description (yes/no, default: yes)

Markdown 支持(用标题层级 # 判断节点级别):

1
python3 run_pageindex.py --md_path /path/to/your/document.md

在线体验与集成方式

部署选项:

  • 自托管(开源仓库本地运行)
  • 云服务(Chat 平台 / MCP / API)
  • 企业私有部署(联系团队获取方案与演示)

Cookbook 与教程

多文档检索最佳实践(教程目录):


适用场景与价值

  • 财务与法律文档
    按章节结构检索,给出可追踪页码与段落,满足合规与审查需求。

  • 学术与技术报告
    长文档的目录结构天然适合“树搜索”,推理式召回更接近真实阅读过程。

  • 企业知识库
    不再被向量库的“相似但不相关”困扰,检索更可解释,可复盘。

  • Agent 工作流
    MCP 接入把 PageIndex 成为“长文档助手”,能与团队工具链互通。


实战参考:金融 QA 基准

PageIndex 支撑的系统(Mafin 2.5)在 FinanceBench 上达到 98.7% 准确率:

这背后的关键,就是“索引树 + 推理式检索”的导航能力,让模型像人一样“翻到正确那一页”。


结语

PageIndex 把长文档检索从“相似度的猜测”转成“结构化的推理”。不用向量库、不做碎片切块,而是沿着目录树去找真正的上下文。对于认真做文档 AI 的团队,它能显著提升检索的“相关性、可解释性与可追踪性”。

现在就把你的 PDF 跑一遍,先在本地生成索引树,再去 Chat 平台感受一下“推理式检索”的手感。长文档真正有价值的内容,应该被正确地找到、被透明地引用,而不是被相似度所“带偏”。