PageIndex架构分析
PageIndex 的核心目标是解决一个问题如何让 LLM 高质量理解长文档并实现精准搜索。传统 RAG 的问题文档 chunk 切得很碎结构信息丢失搜索结果上下文不完整LLM 容易产生幻觉PageIndex 的思路是先理解文档结构 → 再建立树状索引 → 再做向量搜索而不是直接 chunk。整个系统可以拆成两个阶段离线阶段Indexing文档解析 → 结构提取 → 索引构建 → 向量存储在线阶段Query用户问题 → 向量搜索 → 结构补全 → LLM回答一、文档解析流程Document Parsing文档解析的目标是把 PDF / Word / Markdown 转换成可理解的结构化数据典型输入PDFWordMarkdownHTML解析流程如下。1 文档加载首先系统加载原始文档。核心任务读取文档转换为文本保留基础结构可能用到的工具pdf parserdocx parserhtml parser输出类似{pages:[{text:...,layout:...}]}此时仍然是原始文本。2 文档结构解析接下来需要识别文档结构。系统会识别标题H1 / H2 / H3段落列表表格代码块例如原文1. Introduction This paper introduces... 2. Method会被解析成[{type:heading,level:1,text:Introduction},{type:paragraph,text:This paper introduces...},{type:heading,level:1,text:Method}]这一步的意义是恢复文档逻辑结构。3 LLM 推理生成初始目录如果文档结构不明显很多 PDF 都这样系统会调用 LLM。让 LLM根据文本推断文档目录结构例如输入大量文本输出1 Introduction 2 Background 3 Method 4 Experiment这一步得到Document Outline也就是初始目录线索。4 构建文档树Document Tree有了标题信息之后就可以生成 文档树结构。例如Document ├── Introduction │ ├── paragraph │ └── paragraph │ ├── Method │ ├── subsection │ └── subsection │ └── Experiment内部结构通常是Node { title level content children }这样每一段文本都有父节点子节点层级关系这就是 PageIndex 的核心结构。5 文档 Chunk 切分接下来系统会生成检索单元。但和传统 RAG 不同不是固定长度切分而是按结构切分例如Section Subsection Paragraph形成 chunkchunk_1 Introduction section chunk_2 Method subsection chunk_3 Experiment subsection同时保留parent section path例如path Introduction Background这对于搜索非常重要。6 Embedding 向量化然后系统会对每个 chunk 生成向量存入向量库7 构建索引最终索引包含textembeddingtree pathnode idparent id例如{text:...,vector:[...],path:Method Architecture,node_id:123}到这里离线阶段完成。二、搜索流程Query Pipeline当用户提问时系统开始在线搜索流程。1 Query 解析用户输入How does the method work?系统会清洗 query生成 embedding得到query vector2 向量搜索在向量数据库中查找 TopK 相似 chunk返回Method section Architecture subsection Algorithm description这是 第一层召回。3 结构补全如果只返回 chunkLLM 很可能缺上下文。所以 PageIndex 会补充父节点补充兄弟节点补充上下文例如原始 chunkAlgorithm Step 2系统会扩展为Method └ Algorithm ├ Step1 ├ Step2 └ Step3这样上下文完整。4 上下文重排序如果 chunk 很多需要排序。排序依据embedding 相似度文档结构距离LLM rerank最终选择Top N context5 构造 LLM Prompt系统构造 PromptContext: [document chunks] Question: user query例如Answer based on the following document.6 LLM 生成答案最后调用 LLM 输出final answer同时可能附带引用来源section path例如Source: Method Architecture三、核心算法1. 文档树生成算法核心思想把文档转换成类似 HTML DOM 的树结构结构示意Document ├── Section │ ├── Subsection │ │ ├── Paragraph │ │ └── Paragraph │ └── Subsection └── Section每个节点都保存Node ├ id ├ title ├ content ├ level ├ parent └ children构建流程通常是 三阶段。1 结构元素检测首先解析文本块类型headingparagraphlisttablecode例如1 Introduction This paper proposes...解析结果Heading(level1) Paragraph在 PDF 场景下通常还会利用字体大小字体粗细行距版面布局来识别标题。例如FontSize 18 → H1 FontSize 14 → H2这样可以初步恢复文档结构。2 层级推断如果文档本身没有明确层级很多 PDF 都是这样就需要推断。典型方法方法1规则推断例如1 1.1 1.1.1直接转换成level1 level2 level3方法2LLM 推断当结构不清晰时让 LLM 推理输入大量文本片段输出Possible outline: 1 Introduction 2 Background 3 Method但注意不会把整个文档给 LLM。而是抽样片段 标题候选这样 token 很小。3 树结构构建当拿到标题层级之后构建树结构。伪代码stack [] for element in elements: if element is heading: while stack.top.level element.level: stack.pop() stack.top.children.append(element) stack.push(element) else: stack.top.children.append(element)最终得到Document Tree优势结构清晰支持父子检索支持上下文扩展搜索时的结构扩展策略普通 RAG 的最大问题chunk 太碎例如Algorithm Step 2LLM 根本不知道Step1 Step3PageIndex 的解决办法是结构扩展Structure Expansion流程如下。1 初始向量召回首先正常向量搜索query embedding ↓ vector search ↓ topK chunks例如Chunk A Chunk B Chunk C但这些 chunk 只是局部。2 向上扩展Parent Expansion系统会找父节点例如原始结果Algorithm Step 2扩展后Method └ Algorithm └ Step 2这样 LLM 就知道这是 Method 章节里的算法3 向下扩展Child Expansion如果 chunk 是一个标题节点Algorithm系统会补充Algorithm ├ Step1 ├ Step2 └ Step3这样内容更完整。4 兄弟节点扩展Sibling Expansion有时需要增加相邻信息Step1 Step2 Step3而不是只给Step2这样能明显提高回答质量。5 Token Budget 控制扩展不是无限的。系统会控制max_tokens例如4000 tokens context策略优先保留最相关 chunk逐层扩展直到 token 满类似relevance-first expansionLLM 生成目录为什么不会超上下文很多人看到 PageIndex 的一个步骤LLM 推理生成文档目录会有疑问文档几百页LLM 怎么可能读完实际上它用了 分层策略。1 文档分段首先文档会被切成块chunk size ≈ 500 tokens例如chunk1 chunk2 chunk3 ...每个 chunk 单独分析。2 局部目录生成LLM 对每一小段生成local outline例如chunk1 → Introduction chunk2 → Method chunk3 → Experiment3 Outline 合并系统再把这些 outline 合并merge outlines类似map-reduce过程local outline ↓ merge ↓ global outline4 层级压缩如果目录太长还会压缩例如原始1 Introduction 1.1 Motivation 1.2 Background 2 Method 2.1 Architecture 2.2 Training压缩为Introduction Method Experiment这样 token 极小

相关新闻

2025灭虫公司Top榜|亲测3家真实案例分享

2025灭虫公司Top榜|亲测3家真实案例分享

引言随着城市化进程加快,卫生环境问题日益突出,四害及有害生物防治成为各类单位与家庭关注的重点。专业的灭虫公司通过科学手段与标准化服务,助力公共安全与居住品质提升。2025年,根据多家权威媒体平台(如《中国卫生杂…

2026/7/6 16:17:40 阅读更多 →
(LangChain实战18):LangChain文本分割器的介绍与使用

(LangChain实战18):LangChain文本分割器的介绍与使用

LangChain文本分割器详解 一、基础准备 from langchain_community.document_loaders import TextLoader from langchain_text_splitters import CharacterTextSplitter, RecursiveCharacterTextSplitter# 加载文档 file_path "./file/常见问题.txt" text_load Text…

2026/7/4 19:57:04 阅读更多 →
基于Java springboot个人健康管理系统疾病评估挂号预约(源码+文档+运行视频+讲解视频)

基于Java springboot个人健康管理系统疾病评估挂号预约(源码+文档+运行视频+讲解视频)

文章目录 系列文章目录目的前言一、详细视频演示二、项目部分实现截图三、技术栈 后端框架springboot前端框架vue持久层框架MyBaitsPlus系统测试 四、代码参考 源码获取 目的 基于Java Spring Boot框架开发的个人健康管理系统,集疾病评估、挂号预约等功能于一体&a…

2026/7/5 6:13:09 阅读更多 →

最新新闻

液压升降台设计液压升降平台设计

液压升降台设计液压升降平台设计

本次毕业设计对象是液压升降平台,这套装置主要用于举升重物。它的举升高度为1米,举升重量为1吨,其动作主要是由两个双作用液压缸推动“X”型架,带动上板来实现的。该液压升降平台主要由两个部分组成:机械部分和液压部分…

2026/7/6 20:51:52 阅读更多 →
IDM激活脚本终极指南:永久免费使用IDM的简单方法

IDM激活脚本终极指南:永久免费使用IDM的简单方法

IDM激活脚本终极指南:永久免费使用IDM的简单方法 【免费下载链接】IDM-Activation-Script IDM Activation & Trail Reset Script 项目地址: https://gitcode.com/gh_mirrors/id/IDM-Activation-Script 还在为Internet Download Manager(IDM&a…

2026/7/6 20:45:50 阅读更多 →
MZmine 3:免费开源质谱数据分析平台,让复杂科研数据变得简单易懂

MZmine 3:免费开源质谱数据分析平台,让复杂科研数据变得简单易懂

MZmine 3:免费开源质谱数据分析平台,让复杂科研数据变得简单易懂 【免费下载链接】mzmine3 mzmine source code repository 项目地址: https://gitcode.com/gh_mirrors/mz/mzmine3 你是否曾面对海量的质谱数据感到无从下手?昂贵的商业…

2026/7/6 20:45:50 阅读更多 →
Git+GitHub新手实操手册:5步闭环搞定日常开发

Git+GitHub新手实操手册:5步闭环搞定日常开发

1. 这不是“又一个Git教程”——它是一份能让你三天后还在用的实操手册 你点开这个标题,大概率正卡在某个具体场景里:刚被同事甩来一个仓库链接,却连怎么把代码下载到自己电脑上都搞不清;或者写了半天功能,想提交却发现…

2026/7/6 20:43:49 阅读更多 →
CodeRed CMS未来路线图:即将推出的功能与改进指南 [特殊字符]

CodeRed CMS未来路线图:即将推出的功能与改进指南 [特殊字符]

CodeRed CMS未来路线图:即将推出的功能与改进指南 🚀 【免费下载链接】coderedcms Wagtail CodeRed Extensions enabling rapid development of marketing-focused websites. 项目地址: https://gitcode.com/gh_mirrors/co/coderedcms CodeRed C…

2026/7/6 20:41:48 阅读更多 →
OpenCV 4.9 与 Ultralytics YOLO 集成:Python 实现 5 行代码实时视频目标检测

OpenCV 4.9 与 Ultralytics YOLO 集成:Python 实现 5 行代码实时视频目标检测

OpenCV 4.9 与 Ultralytics YOLO 集成实战:5行代码构建实时视频分析系统1. 环境准备与工具链配置在开始构建实时视频分析系统之前,我们需要确保开发环境配置正确。以下是推荐的开发环境配置:Python环境要求:Python 3.8或更高版本&…

2026/7/6 20:41:48 阅读更多 →

日新闻

H2 与 MySQL 单元测试兼容性:5 个关键 SQL 语句差异与规避方案

H2 与 MySQL 单元测试兼容性:5 个关键 SQL 语句差异与规避方案

H2与MySQL单元测试兼容性:5个关键SQL语句差异与规避方案1. 单元测试中的数据库兼容性挑战在Java开发领域,单元测试是保证代码质量的重要环节。当应用涉及数据库操作时,测试环境的搭建往往成为开发者的痛点。H2数据库因其轻量级、内存模式和快…

2026/7/6 0:01:17 阅读更多 →
Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘

Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘

Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘 【免费下载链接】rbtray A fork of RBTray from http://sourceforge.net/p/rbtray/code/. 项目地址: https://gitcode.com/gh_mirrors/rb/rbtray 你是否厌倦了Windows任务栏上密密麻麻的图标&…

2026/7/6 0:01:17 阅读更多 →
Visual C++ 运行时库一键安装终极指南:告别DLL缺失烦恼

Visual C++ 运行时库一键安装终极指南:告别DLL缺失烦恼

Visual C 运行时库一键安装终极指南:告别DLL缺失烦恼 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 你是否曾经遇到过这样的情况:下载了…

2026/7/6 0:05:19 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/6 8:11:50 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/6 8:11:52 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/6 6:52:56 阅读更多 →

月新闻