当 RAG 不再需要向量数据库,检索变成了一场"推理游戏"


一、一句话理解 PageIndex

PageIndex 是一个无向量(Vectorless)的 RAG 系统。它不用 Embedding,不用向量数据库,而是让 LLM 像人类专家翻书一样,通过文档的层级结构进行推理式检索。

在这里插入图片描述


二、传统 RAG 到底在做什么?

先回顾传统 RAG 的工作流程:

切块 Chunking

Embedding 模型

存入

Embedding

相似度搜索

Top-K 结果

原始文档

文本块1\n文本块2\n文本块3\n...

向量1\n向量2\n向量3\n...

向量数据库

用户提问

查询向量

相关文本块

LLM 生成答案

核心流程:切块 → 嵌入 → 存储 → 相似度检索 → 拼接上下文 → 生成答案


三、生活化类比:传统 RAG vs PageIndex

类比一:找餐厅吃饭

传统 RAG = 按"颜色"找菜

想象你走进一家餐厅,想吃"酸菜鱼"。但这家餐厅的菜单被撕成了 200 个碎片,每个碎片上写着一道菜的部分描述。你没有完整的菜单,只能把"酸菜鱼"三个字转化成一种"味觉向量",然后在 200 个碎片中找"味道最接近"的。

结果可能找到:

  • “酸汤肥牛”(酸味相似)
  • “水煮鱼”(鱼相似)
  • “酸辣粉”(酸味相似)

虽然都沾点边,但没有一个是你真正要的。

PageIndex = 看菜单目录点菜

而 PageIndex 就像一个经验丰富的服务员,他知道菜单的结构:

菜单
├── 凉菜
├── 热菜
│   ├── 川菜系列
│   │   ├── 酸菜鱼 ← 就是这里!
│   │   ├── 水煮鱼
│   │   └── 回锅肉
│   ├── 粤菜系列
│   └── 湘菜系列
├── 汤品
└── 主食

他会推理:“你要酸菜鱼 → 这是热菜 → 属于川菜系列 → 在第 3 页”,直接翻到对的地方。


类比二:在图书馆找资料

传统 RAG = 用"感觉像"来找书

你要查"美联储 2023 年的通胀监控策略"。传统 RAG 会把图书馆里所有的书都撕成几页一组的碎片,然后用"语义相似度"去找碎片。

结果可能返回:

  • 某本书第 42 页提到了"通胀率从 7% 降到 4%"
  • 某本书第 156 页提到了"价格压力缓和"
  • 某本书第 289 页提到了"CPI 增长 2.5%"

这些碎片零散且缺乏上下文,拼不出完整的策略描述。

PageIndex = 有经验的图书管理员帮你找

PageIndex 就像一个读过所有书的图书管理员。他知道每本书的目录结构:

《2023 年度报告》
├── 货币政策
│   ├── 通胀监控        ← 管理员知道去这里
│   │   └── 2023 Q4 评估  ← 第 45-52 页
│   ├── 利率决策
│   └── 量化紧缩
├── 金融稳定
└── 监管框架

他会说:“你要的在《2023 年度报告》→ 货币政策 → 通胀监控 → 第 45-52 页,这整个章节完整讲述了你要的内容。”


类比三:找快递

传统 RAG = 在整个小区草坪上用金属探测器找钥匙

你的快递丢了。传统 RAG 的做法是把所有快递站的包裹都拆开,给每个物品拍一张"模糊照片"(Embedding),然后在模糊照片堆里找"看起来最像你快递"的。

PageIndex = 看物流单号,一层层追踪

PageIndex 的做法是:查物流系统 → 哪个分拣中心 → 哪辆车 → 哪个驿站 → 哪个货架。每一步都有明确的推理逻辑。


四、架构对比

传统 RAG 架构

生成阶段

检索阶段

索引阶段

解析

固定大小切块

Embedding 模型

写入

Embedding

余弦相似度 Top-K

返回

拼接为上下文

PDF/文档

文本提取

Chunk 1\nChunk 2\nChunk 3\n...

向量 1\n向量 2\n向量 3\n...

向量数据库\nPinecone/Milvus/Chroma

用户查询

查询向量

相似文本块

Prompt

LLM 生成答案

PageIndex 架构

生成阶段

检索阶段(推理式搜索)

继续

找到

提取对应页面

索引阶段(一次性构建)

解析

LLM 检测

有目录+页码

有目录无页码

无目录

>10页 或 >20000token

正常

PDF/Markdown

页面列表

有目录吗?

提取目录结构

推断页码映射

LLM 生成层级结构

验证 & 纠错

构建树形索引

节点过大?

递归细分

生成摘要

JSON 树形结构

用户查询

LLM 阅读树结构

推理:哪个分支相关?

深入子节点

找到目标?

返回页码范围

完整章节内容

LLM 生成答案


五、核心差异一览

RAG 框架对比

传统 RAG

切块策略

固定大小 512/1024 token

滑动窗口

丢失文档结构

检索方式

向量相似度

Top-K 召回

"相似 ≠ 相关"

依赖组件

Embedding 模型

向量数据库

重排序模型 Reranker

问题

上下文丢失

不可解释

幻觉风险高

PageIndex

切块策略

自然章节层级

保留文档结构

递归细分大节点

检索方式

LLM 推理

树搜索遍历

"推理 = 理解"

依赖组件

仅需 LLM

无需向量数据库

无需 Embedding

优势

上下文完整

可解释可追溯

98.7% FinanceBench 准确率


六、技术细节对比

维度 传统 RAG (LangChain/LlamaIndex) PageIndex
索引存储 向量数据库(Pinecone, Milvus, Chroma…) JSON 文件(树形结构)
切块方式 固定大小 / 滑动窗口 / 递归分割 自然文档层级(章 → 节 → 小节)
检索原理 余弦相似度 / 点积 LLM 推理 + 树搜索
Embedding 费用 每个文档都需要 $0,无需 Embedding
可解释性 低(相似度分数是黑盒) 高(推理路径可追溯)
上下文保留 低(切块破坏上下文) 高(保留完整章节)
适合场景 通用文档、博客、FAQ 长篇专业文档(财报、法规、教材)
基准测试 通常 70-85% FinanceBench 98.7%

七、一个完整的例子

假设我们有一份 89 页的《美联储 2023 年度报告》。

传统 RAG 的做法

切块

Embedding

存入

Embedding

Top-5 相似

返回

拼接

89 页 PDF

~180 个文本块\n(每块约 500 token)

180 个 1536 维向量

Pinecone

查询:美联储如何\n监控通胀?

查询向量

块 #42: '通胀率下降'\n块 #87: 'CPI 数据'\n块 #124: '价格指数'\n块 #156: '物价趋势'\n块 #3: '经济概览'

LLM 答案\n(可能遗漏关键策略细节)

问题

  • 5 个块来自文档的不同位置,缺乏连贯性
  • 可能漏掉了"通胀监控"这个完整章节
  • 无法知道为什么选了这 5 个块(不可解释

PageIndex 的做法

LLM 构建树索引

LLM 推理

通胀 → 货币政策

通胀监控 → 1.1

提取 pp.22-28\n完整 7 页内容

89 页 PDF

树形结构

📖 2023 年度报告

Part 1: 货币政策

Part 2: 金融稳定

Part 3: 监管

Part 4: 社区发展

1.1 通胀监控\n📄 pp.22-28

1.2 利率决策\n📄 pp.29-35

1.3 量化紧缩\n📄 pp.36-41

2.1 金融脆弱性监控\n📄 pp.42-52

2.2 国际合作\n📄 pp.53-58

查询:美联储如何\n监控通胀?

分析树结构

LLM 答案\n(完整、连贯、有页码引用)

优势

  • 返回完整的 7 页章节内容,不是零散碎片
  • 推理路径清晰:报告 → 货币政策 → 通胀监控
  • 精确的页码引用(pp.22-28),可验证

八、PageIndex 的索引生成流程

有目录 + 有页码

有目录 + 无页码

无目录

不达标

达标

输入 PDF

解析 PDF\n提取每页文本和 token 数

检测前 20 页\n有目录吗?

提取目录结构\n含页码映射

提取目录结构\nLLM 推断页码

LLM 直接分析文本\n生成层级结构

验证准确性\n(并发 LLM 调用)

准确率\n达标?

LLM 纠错\n最多重试 3 次

构建树形索引

存在超大节点?\n>10页 或 >20000token

递归细分\n为子节点

生成节点摘要

分配节点 ID\n0000, 0001, ...

输出 JSON\n树形结构文件


九、什么时候该用哪个?

PageIndex 最强区域 PageIndex + 传统 RAG 混合 传统 RAG 足够 传统 RAG 或 PageIndex 均可 合同审查 产品说明书 客服对话检索 社交媒体分析 FAQ 问答 博客文章搜索 技术文档查询 学术教材问答 法律法规检索 财报分析 文档结构化程度 低 查询复杂度 低 选择 RAG 方案的决策矩阵

简单决策指南

你的场景 推荐方案 原因
长篇财报 / 法规 / 教材 PageIndex 文档结构清晰,需要精确定位
短篇博客 / FAQ / 知识库 传统 RAG 文档结构松散,语义检索足够
多文档海量数据 传统 RAG + PageIndex 混合 先向量粗筛,再 PageIndex 精确定位
需要可解释性的场景 PageIndex 推理路径可追溯,页码可验证
实时数据流 传统 RAG PageIndex 索引构建需要时间

十、代码使用示例

构建索引(仅需 3 行代码)

from pageindex import page_index

# 从 PDF 构建树形索引
result = page_index("annual_report.pdf", model="gpt-4o")

# result 结构:
# {
#   "doc_name": "annual_report.pdf",
#   "structure": [
#     {
#       "title": "Financial Stability",
#       "start_index": 21,
#       "end_index": 31,
#       "node_id": "0006",
#       "summary": "Federal Reserve's financial stability...",
#       "nodes": [...]  ← 子节点
#     }
#   ]
# }

检索阶段(推理式树搜索)

import json

# 加载索引
with open("annual_report_structure.json") as f:
    tree = json.load(f)

# LLM 推理检索(伪代码)
query = "美联储如何监控通胀?"
# 1. LLM 阅读树的顶层结构,决定进入"货币政策"分支
# 2. LLM 阅读子节点,定位到"通胀监控" (pp.22-28)
# 3. 提取第 22-28 页的完整内容作为上下文
# 4. LLM 基于完整章节生成准确答案

十一、总结

PageIndex 方式

传统方式

进化

传统 RAG\n🔍 相似度搜索

PageIndex\n🧠 推理式搜索

切块

嵌入

相似度匹配

理解文档结构

构建知识树

推理式导航

一句话总结

传统 RAG 是盲人摸象——摸到什么算什么,靠"感觉相似";
PageIndex 是庖丁解牛——先看清结构,再精准下刀。

PageIndex 代表了 RAG 技术从"统计检索"向"推理检索"的范式转变。对于结构化的长篇专业文档,它提供了更高精度、更好可解释性、更低成本的全新选择。

Logo

脑启社区是一个专注类脑智能领域的开发者社区。欢迎加入社区,共建类脑智能生态。社区为开发者提供了丰富的开源类脑工具软件、类脑算法模型及数据集、类脑知识库、类脑技术培训课程以及类脑应用案例等资源。

更多推荐