📑 PageIndex:31.4k Stars 的无向量推理 RAG,不用向量数据库也能 98.7% 准确率
项目地址:github.com/VectifyAI/PageIndex | ⭐ 31,400+ | 🛠 Python | 📅 2026-04
老实说,搞过 RAG 的人都知道,向量数据库那套东西看着美好,实际用起来全是坑。chunk size 调半天、embedding 维度选多大、召回率上不去、相似度 ≠ 相关性——这几个问题缠了你多久?
PageIndex 的思路挺狠:直接把向量数据库扔了。
一、核心逻辑:相似度 ≠ 相关性
传统 RAG 的核心逻辑是「语义相似度搜索」——你把文档拆成小段(chunk),每段算一个向量,用户问问题时算相似度,挑最像的几条返回。
这听起来合理,但你仔细想想:相似不等于相关。
一份 200 页的财报里,问「2024年Q3现金流」——向量搜索可能给你返回一段讲「现金流定义」的科普段落,因为它跟「现金流」这三个字在语义上最像。但你要的是 Q3 的具体数字,不是定义。
PageIndex 的做法不一样:它不存向量,直接对文档建一棵树。
python3 run_pageindex.py --pdf_path /path/to/your/document.pdf
这行命令会把 PDF 变成一棵「智能目录树」,每个节点都包含标题、页码范围、内容摘要。查询的时候,LLM 在这棵树上做树搜索——先找到最相关的章节,再下钻到子节点,像人查资料一样层层定位。
二、不是分块,是建树
❌ 传统做法:文档 → 固定长度分块 → embedding → 向量搜索
✅ PageIndex:文档 → 语义树索引 → 树搜索 → 精准定位
树的结构长这样:
{
"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 ..."
}
]
}
每个节点有自然标题(不是人工切块)、有摘要、有页码范围。LLM 拿到查询后,先在顶层节点里定位相关章节,再展开下级节点。整个流程透明可追溯——不像向量搜索那样是个黑盒。
三、三行跑起来
# 1. 装依赖
pip3 install --upgrade -r requirements.txt
# 2. 配 LLM key(支持任意 LiteLLM 供应商)
echo "OPENAI_API_KEY=sk-..." > .env
# 3. 建索引
python3 run_pageindex.py --pdf_path report.pdf
它就做了三件事:提取文本、LLM 分析结构、生成树索引。之后查询的时候,直接在树上走推理搜索,不走向量。
还支持 Agentic RAG 模式——结合 OpenAI Agents SDK,让 Agent 自己决定什么时候搜、搜什么、怎么组合结果:
pip3 install openai-agents
python3 examples/agentic_vectorless_rag_demo.py
四、98.7% 准确率,不是噱头
PageIndex 团队基于这套框架做了一个叫 Mafin 2.5 的金融文档分析系统,在 FinanceBench(金融问答 benchmark)上跑出了 98.7% 准确率,碾压传统向量 RAG。
金融文档是最严苛的场景——法律条款、财务数据、监管文件,一个字都不能错。PageIndex 能在这个场景跑通,说明推理式检索确实比相似度搜索靠谱。
五、适用场景
- 💰 金融分析:财报、招股书、监管文件
- ⚖️ 法律文档:合同审查、判例检索
- 📚 学术论文:长论文的精准引用定位
- 🏭 技术手册:产品文档的智能问答
老实说,PageIndex 不是来替代向量数据库的。向量搜索在开放域、大规模语料场景下仍然有优势。但在专业长文档这个场景里——金融、法律、学术——靠相似度不如靠推理,这是 PageIndex 给的最直接的信号。
当然它也有局限:建树依赖 LLM,对于数百页的超长文档,API 成本和延迟需要考虑。另外树结构天然适合单篇文档的深度检索,跨文档聚合不是它的强项。选工具看场景,没有银弹。
总结
- 向量数据库不是 RAG 的唯一答案,PageIndex 证明了「推理 > 相似度」
- 一行命令建语义树索引,不用调 chunk 不用选 embedding 模型
- 树搜索 + LLM 推理 = 可解释、可追溯的检索结果
- 金融场景 98.7% 准确率,专业文档的利器
- Agentic RAG 模式给 Agent 装上了「会推理」的检索能力
想试试不用向量数据库的 RAG?pip install + 一行命令,你的大模型就能像人一样翻书找答案了。