📌 项目概述
PageIndex 是什么?
PageIndex 是一个文档索引系统,专为推理式 RAG(Reasoning-based RAG)设计,用于解决长专业文档的检索问题。
核心理念: 用树搜索替代向量相似度检索,将 PDF 文档转换为层次化语义树结构。
| 项目 | 信息 |
|---|---|
| GitHub | https://github.com/the-AI-Archive/PageIndex |
| 托管 API | https://pageindex.vectify.ai/ |
| 适用文档 | 财报、法规、学术教材、技术手册等长文档 |
| 核心优势 | 保留文档结构、精确页码引用、推理式检索 |
🎯 核心特性
| 特性 | 说明 |
|---|---|
| 🌳 层次化树结构 | 将文档转换为语义树,类似"智能目录"但为 LLM 优化 |
| 📍 精确页码引用 | 每个节点包含起始/结束页码,支持精确定位 |
| 🧩 无任意分块 | 按文档自然结构分割,非固定长度切分 |
| 📚 大规模支持 | 可处理数百至数千页文档 |
| 🤔 推理式检索 | 不依赖向量相似度,通过树搜索定位内容 |
示例输出结构
{
"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 ..."
}
]
}
📊 与之前方案对比
✅ ChromaDB 方案
- ✅ 实现简单,依赖少
- ✅ 支持多格式(PDF/Word/Excel/PPT)
- ✅ 本地部署,无需外部 API
- ✅ 语义检索效果好
- ❌ 长文档检索精度下降
- ❌ 分块可能破坏文档结构
- ❌ 无法精确定位页码
- ❌ 专业领域推理能力弱
✅ PageIndex 方案
- ✅ 保留文档层次结构
- ✅ 适合长专业文档(财报/法规/教材)
- ✅ 精确页码定位
- ✅ 推理式检索,适合复杂问题
- ❌ 仅支持 PDF 格式
- ❌ 依赖 OpenAI API(需要付费)
- ❌ 项目处于早期 beta 阶段
- ❌ 复杂结构 PDF 可能不稳定
🔍 是否适用于皇上的场景?
✅ 适用场景
如果皇上的知识来源主要是:
- 财务报告/年报(如 SEC filings)
- 法规文件/政策文档(数百页的法律文本)
- 技术手册/规范(结构化的长文档)
- 学术教材(有清晰章节层次)
- 需要精确页码引用的文档
→ PageIndex 非常合适,可作为核心检索引擎
❌ 不适用场景
如果皇上的知识来源主要是:
- 短文档(<10 页)
- 非结构化文档(邮件、聊天记录、笔记)
- 多格式混合(Excel 表格、PPT 演示文稿)
- 需要本地部署(不能调用外部 API)
- 扫描版 PDF 较多(需要 OCR)
→ 建议沿用之前的 ChromaDB 方案
💡 推荐方案:混合架构
🏆 最终推荐:结合两种方案的优势
PageIndex 和 ChromaDB 不是互斥的,可以互补使用。
混合架构设计
🌳 PageIndex
树状索引 (长 PDF 专用)
树状索引 (长 PDF 专用)
🔍 ChromaDB
向量检索 (多格式通用)
向量检索 (多格式通用)
⬇ ⬇
🧠 路由决策层
文档类型判断 | 问题复杂度分析 | 检索策略选择
文档类型判断 | 问题复杂度分析 | 检索策略选择
⬇
💬 知识问答接口
OpenClaw + 飞书集成
OpenClaw + 飞书集成
路由策略
| 问题类型 | 检索策略 |
|---|---|
| "第 X 页讲了什么" | PageIndex(精确页码) |
| "这份财报的营收数据" | PageIndex(结构化推理) |
| "XX 政策的核心内容" | PageIndex(法规文档) |
| "XX 是什么意思" | ChromaDB(语义检索) |
| "Excel 里的数据" | ChromaDB(表格解析) |
| "会议纪要" | ChromaDB(短文档) |
路由决策伪代码
def route_query(question, doc_type):
if doc_type == "pdf" and is_long_document(doc):
if requires_reasoning(question):
return "pageindex" # 推理式检索
else:
return "hybrid" # 混合检索
elif doc_type in ["docx", "xlsx", "pptx"]:
return "chromadb" # 向量检索
else:
return "chromadb" # 默认向量检索
def requires_reasoning(question):
reasoning_keywords = ["为什么", "如何", "分析", "比较", "评估"]
return any(kw in question for kw in reasoning_keywords)
💰 成本估算对比
| 项目 | ChromaDB 方案 | PageIndex 方案 | 混合方案 |
|---|---|---|---|
| API 费用 | 0 元(本地) | ~$0.01-0.03/页 | 按需使用 |
| 部署复杂度 | 低 | 中 | 中高 |
| 检索精度 | 中 | 高(长文档) | 高 |
| 格式支持 | 多格式 | 仅 PDF | 多格式 |
| 推荐度 | ⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
📋 实施优先级
Phase 1 (第 1-3 天): 部署 ChromaDB 基础方案
支持多格式文档,快速上线验证需求
Phase 2 (第 4-7 天): 集成 PageIndex
针对长 PDF 文档优化,实现路由决策层
Phase 3 (第 8-10 天): 混合检索优化
统一检索接口,性能调优和监控
PageIndex 快速开始
# 1. 安装 PageIndex
git clone https://github.com/the-AI-Archive/PageIndex
cd PageIndex
pip3 install -r requirements.txt
# 2. 配置 OpenAI API
cat > .env << EOF
CHATGPT_API_KEY=your_openai_key_here
EOF
# 3. 处理文档
python3 run_pageindex.py --pdf_path /path/to/document.pdf
# 4. 集成到 OpenClaw
# 通过 sessions_spawn 创建索引子 agent
# 调用 PageIndex API 生成树结构
# 存储到本地数据库供检索使用
📌 结论
🎯 针对皇上场景的最终建议
根据皇上之前指定的知识来源(PDF、Word、Excel、PPT),建议:
- 长 PDF 文档(>50 页,如财报/法规/手册)→ 使用 PageIndex
- 短文档/Office 格式 → 使用 ChromaDB 向量检索
- 扫描版 PDF → 先用 OCR 处理,再用 PageIndex