## 项目概述

PageIndex 是一个开源的、无向量（Vectorless）的检索增强生成（RAG）引擎，由 VectifyAI 开发。它摒弃了传统 RAG 中依赖向量数据库和文本分块（Chunking）的做法，转而通过构建文档的层级树状索引，并利用大语言模型（LLM）的推理能力进行上下文感知的检索。PageIndex 旨在模拟人类专家阅读和提取复杂文档知识的方式，提供可追溯、可解释的检索结果。该项目在金融文档问答基准 FinanceBench 上取得了 98.7% 的准确率，显著优于传统向量 RAG 方案。

## 核心功能

- **无向量数据库**：不依赖向量相似度搜索，而是利用文档结构和 LLM 推理进行检索。
- **无文本分块**：文档按自然章节组织，而非人工切块。
- **可追溯与可解释**：检索由推理驱动，并基于明确的页面和章节引用，结果可追溯、可解释。
- **上下文感知检索**：检索结果依赖于完整上下文（如对话历史和领域知识），并易于融入新上下文。
- **类人检索**：模拟人类专家在复杂文档中导航和提取知识的方式。
- **层级树索引**：将长文档转换为类似“目录”的语义树结构，优化用于 LLM 和 AI 代理。
- **多部署选项**：支持自托管、云服务和私有化部署（企业版）。
- **PageIndex Flash**：预览功能，可在数秒内生成树结构，无需 LLM（仅用于摘要）。
- **Markdown 支持**：支持从 Markdown 文件生成树结构。

## 适用与不适用场景

**适用场景：**
- 长篇幅专业文档的检索增强生成，如财务报告、法律文件、监管文件、技术手册、医学文献、学术教科书等。
- 需要高精度、可解释检索结果的场景，如金融分析、法律研究、医疗咨询等。
- 需要上下文感知检索的对话式 AI 应用。
- 希望避免向量数据库和分块复杂性的 RAG 应用。

**不适用场景：**
- 对检索速度要求极高、且文档结构简单的场景（传统向量 RAG 可能更合适）。
- 需要处理大量短文本或非结构化数据的场景。
- 对成本敏感且无法承担 LLM 推理开销的场景。
- 需要实时处理超大规模文档库的场景（需结合 PageIndex File System 等扩展方案）。

## 技术架构与依赖

- **编程语言**：Python
- **核心依赖**：LiteLLM（多 LLM 支持）、OpenAI Agents SDK（可选，用于代理示例）、标准 PDF 解析库。
- **架构**：PageIndex 将 PDF 文档转换为层级树结构（类似目录），每个节点包含标题、节点 ID、起始/结束索引和摘要。检索时，LLM 通过树搜索进行推理，实现上下文感知的检索。
- **部署模式**：自托管（开源仓库）、云服务（增强 OCR 和树构建）、企业版（VPC/本地部署）。

## 安装与快速开始

1. **克隆仓库**：
   ```bash
   git clone https://github.com/VectifyAI/PageIndex.git
   cd PageIndex
   ```
2. **安装依赖**：
   ```bash
   pip3 install --upgrade -r requirements.txt
   ```
3. **设置 LLM API 密钥**：在根目录创建 `.env` 文件，添加你的 LLM API 密钥（如 OpenAI）：
   ```bash
   OPENAI_API_KEY=your_openai_key_here
   ```
4. **生成 PageIndex 树结构**：
   ```bash
   python3 run_pageindex.py --pdf_path /path/to/your/document.pdf
   ```
   或使用 Markdown 文件：
   ```bash
   python3 run_pageindex.py --md_path /path/to/your/document.md
   ```

## 典型使用方法

- **生成树结构**：使用 `run_pageindex.py` 脚本，可指定 PDF 或 Markdown 文件，并可通过可选参数调整模型、目录检查页数、每节点最大页数等。
- **PageIndex Flash**：使用 `--flash` 参数快速生成树结构，`--optimize` 可优化树结构。
- **Agentic Vectorless RAG 示例**：运行 `examples/agentic_vectorless_rag_demo.py`，需先安装 `openai-agents`。
- **Notebook 示例**：提供 `cookbook/pageindex_RAG_simple.ipynb` 和 `cookbook/vision_RAG_pageindex.ipynb`，可在 Colab 中运行。
- **API 和 MCP**：可通过 [PageIndex Developer](https://pageindex.ai/developer) 集成 API 或 MCP 服务。

## 配置与部署要点

- **自托管**：使用标准 PDF 解析，适合简单 PDF。复杂 PDF 建议使用云服务或企业版。
- **云服务**：提供增强 OCR、树构建和检索，可通过 MCP 或 API 集成。
- **企业版**：支持 VPC 或本地部署，需联系销售。
- **环境变量**：通过 `.env` 文件配置 LLM API 密钥。
- **可选参数**：`--model`、`--toc-check-pages`、`--max-pages-per-node`、`--max-tokens-per-node`、`--if-add-node-id`、`--if-add-node-summary`、`--if-add-doc-description` 等。
- **Markdown 模式**：使用 `#` 标题层级，需确保格式正确；从 PDF/HTML 转换的 Markdown 不推荐使用。

## 限制、风险与许可证

- **许可证**：MIT License。
- **限制**：自托管版本使用标准 PDF 解析，对复杂 PDF 效果有限；Markdown 模式依赖标题层级，转换工具可能丢失层级。
- **风险**：依赖 LLM 推理，可能产生较高成本；检索准确性受 LLM 能力影响。
- **其他**：仓库资料未提供更多限制信息。

## 官方链接

- **GitHub 仓库**：https://github.com/VectifyAI/PageIndex
- **官方网站**：https://vectify.ai/pageindex
- **文档**：https://docs.pageindex.ai
- **开发者中心**：https://pageindex.ai/developer
- **博客**：https://pageindex.ai/blog
- **Chat 平台**：https://chat.pageindex.ai
- **Discord**：https://discord.com/invite/VuXuf29EUj

## 信息来源和分析时间

- **信息来源**：GitHub 仓库 README、官方文档、博客、发布页面。
- **分析时间**：2026年7月10日（基于最新发布版本 v0.3.0.dev3 的日期）。