PageIndex:开源的基于推理的 RAG 框架

PageIndex:开源的基于推理的 RAG 框架

当你想到检索增强生成(RAG)时,脑海中往往首先出现的是大型向量数据库、一堆嵌入以及依赖余弦相似度的搜索。在实践中,这种方法往往难以应对金融分析师、法律团队和学术研究人员日常遇到的长篇结构化文档。

为什么选择 PageIndex?

PageIndex 的诞生旨在回答一个问题:向量数据库真的对高效 RAG 绝对必要吗?答案是 根本不。 - 无向量 – PageIndex 并不将每一页或每个块转换为嵌入,而是构建一个层级树,与文档的自然章节(如目录)相映照。每个节点可以选择性地包含摘要。 - 无分块 – 传统管道会将文档拆分为人为块,常常导致上下文被切断。PageIndex 保留完整章节,保持叙事连贯。 - 类人检索 – 通过让 LLM 浏览树结构,PageIndex 模拟领域专家的阅读和推理过程。模型可以遍历层级,提出澄清问题并回溯——更像真人分析师。 - 可解释性与可追溯性 – 每份答案都能追溯到具体节点与页面,为开发者提供清晰的审计轨迹。

核心概念

  1. 树索引 – 一种 JSON 结构,每个节点包含元数据:标题、起止索引、摘要以及子节点。该树基本上成为为 LLM 定制的“目录”。
  2. LLM 推理 – LLM 并非使用最近邻查找,而是对树进行推理,执行树搜索。它会查询下一个探究的分支,然后挑选相关章节传递到后续流程。
  3. 可选配置 – 用户可以控制模型、每节点最大 token 数、深度以及是否包含节点 ID 或摘要。

快速安装与运行

# 1. Clone the repo
git clone https://github.com/VectifyAI/PageIndex.git
cd PageIndex

# 2. Install dependencies
pip install -U -r requirements.txt

# 3. Set your OpenAI API key
# Create a `.env` in the repo root
# echo "CHATGPT_API_KEY=sk-…" > .env

# 4. Generate a tree for a PDF
python run_pageindex.py --pdf_path /path/to/your/document.pdf

可选参数可让你微调流程: - --model gpt-4o – 选择模型 - --toc-check-pages 20 – 扫描目录的页面数 - --max-pages-per-node 10 – 每个节点可承载的最大页面数 - --if-add-node-summary yes – 为每个节点添加简短摘要

对于遵循标题约定(### 等)的 Markdown 文件,请使用 --md_path

用例

问题 PageIndex 帮助方式
金融 SEC 文件长达 200+ 页,且包含嵌套章节;嵌入往往忽略细节。 PageIndex 构建树结构,让 LLM 能精准定位章节,提高 FinanceBench 准确率至 98.7%。
法律 案例法与合约需要精确的段落引用。 树结构保留页面范围,答案可包含精确位置参考。
学术 研究论文具备多级子章节;按主题检索往往不可靠。 节点摘要指导 LLM 定位相关章节,提升引用准确性。
技术手册 固件文档包含表格和图示。 PageIndex 能通过无 OCR 的视觉 RAG 索引图像,直接提供页面图像上下文。

基准亮点

PageIndex 内置的 RAG 系统 Mafin 2.5 在 FinanceBench 基准上实现了 98.7% 的准确率,远超多种基于向量的 RAG 系统。干净的树索引与基于推理的搜索相结合,消除了仅靠相似度检索的诸多缺陷。

集成方式

  • 自托管 – 在本地运行 Python 仓库,在笔记本或服务器上均可运行。
  • 聊天平台 – VectifyAI 提供 ChatGPT 风格的界面,您可以即时体验。
  • MCP/API – 以极少代码公开功能,集成到自身的流水线中。

未来方向

  1. 多模态检索 – 将文本与图像节点结合,支持无 OCR 的 PDF 图像。 2. 细粒度摘要 – 使用更先进的摘要模型,为节点提供更优说明。 3. 协作功能 – 允许多位用户注释节点路径并共享检索逻辑。

最终思考

PageIndex 展示了一个结构良好的索引与 LLM 推理相结合的方案,能够取代传统的基于向量的方法,适用于多种真实场景。对于希望在长文档中构建可靠、可解释 RAG 系统的开发者而言,该框架提供了极具吸引力的低代码方案,让用户始终处于监控之中——就像真正的人类专家。

原创文章: 查看原文

分享本文