当前位置: 首页 > news >正文

29k 星的 PageIndex:不用向量数据库,靠推理就能做 RAG

RAG 领域有个根深蒂固的假设:检索必须靠向量相似度匹配。

把文档切成块,算 embedding,塞进向量数据库,查询时算余弦相似度取 top-K——这套流程已经成了"标准答案"。但问题在于,语义相似不等于真正相关。 你问一个金融报告里的具体数字,向量检索可能把看起来"像"但完全不是同一张表的段落拽出来。

GitHub 上一个叫 PageIndex 的项目(29,300+ 星),直接挑战了这个假设:不用向量数据库,不做切块,靠 LLM 推理来检索。

本文提纲

  1. 核心思路:像人一样读文档
  2. 树索引:把目录变成 LLM 能理解的结构
  3. 检索过程:Agent 自己决定看哪里
  4. 效果:FinanceBench 98.7% 准确率
  5. 三种部署方式
  6. 适合什么场景?

核心思路:像人一样读文档

想象一个专家拿到一份 200 页的财报,要回答"公司 2025 年 Q3 的海外营收占比是多少"。

他不会把整份报告切成 500 个片段然后逐个看"像不像"这个问题。他会:

  1. 翻目录 — 找到"财务数据"或"营收分析"章节
  2. 精确定位 — 跳到对应页码
  3. 读具体内容 — 提取数字
  4. 判断充分性 — 信息不够就继续翻

PageIndex 就是把这个过程编码成 LLM Agent 的行为。核心区别:检索不是靠"什么看起来相似",而是靠推理决定"下一步该看哪里"。

树索引:把目录变成 LLM 能理解的结构

PageIndex 把长文档转换成一个 JSON 格式的层级树状索引。长这样:

{
  "doc_name": "Annual Report 2025",
  "structure": [
    {
      "node_id": "0001",
      "title": "Financial Overview",
      "start_index": 15,
      "end_index": 28,
      "summary": "公司整体财务表现,包含营收、利润...",
      "nodes": [
        {
          "node_id": "0002",
          "title": "Revenue by Region",
          "start_index": 20,
          "end_index": 23,
          "summary": "按地区拆分的营收数据..."
        }
      ]
    }
  ]
}

每个节点包含标题、页码范围、摘要和递归的子节点。这个索引是一个 "in-context index"——直接驻留在 LLM 的推理上下文中,LLM 可以导航、引用和推理。

索引构建本身也靠 LLM:检测目录 → 提取结构 → 转换为 JSON → 页码定位 → 验证 → 生成摘要,每一步都是 LLM 调用。支持 PDF 和 Markdown 两种格式。

检索过程:Agent 自己决定看哪里

检索是 agentic 的。PageIndex 给 LLM Agent 暴露三个工具:

  • get_document_structure() — 拿到树索引(不含正文,省 token)
  • get_page_content(pages="20-23") — 读取指定页码的原始文本
  • get_document() — 获取文档元数据

Agent 的检索流程:

  1. 调用 get_document_structure() 拿到树索引
  2. 看一遍结构,推理判断答案最可能在哪个章节
  3. 调用 get_page_content(pages="X-Y") 读具体内容
  4. 信息不够?继续推理,去其他章节找
  5. 收集够了,生成答案——每个结论都带页码引用

全程可追溯、可解释。 你知道它读了哪些页、为什么读那些页、答案从哪来。传统 RAG 做不到这点——向量相似度是个黑盒,你很难解释"为什么返回了这 5 个 chunk"。

效果:FinanceBench 98.7% 准确率

官方在 FinanceBench(金融报告问答基准)上的对比:

方案 准确率
传统 RAG + 向量数据库(单索引) 30%
传统 RAG + 向量数据库(每文档独立索引) 50%
PageIndex(推理驱动检索) 98.7%

30% 到 98.7%,这个差距不是调参能追回来的。根本原因是金融文档的检索难点:同一个文档里可能有 10 张表,向量检索分不清你要哪张,但 PageIndex 可以通过章节标题和页码精确定位。

而且,PageIndex 声称 没有 Time-to-First-Token 延迟——传统 RAG 需要等整个检索阶段完成才能开始生成,PageIndex 的检索和生成是交替进行的。

三种部署方式

自托管(开源,MIT 协议):

from pageindex import PageIndexClientclient = PageIndexClient(workspace="./workspace")
doc_id = client.index("financial_report.pdf")
# Agent 通过 get_document_structure() + get_page_content() 自主检索

云服务(SaaS):

from pageindex import PageIndexClientpi_client = PageIndexClient(api_key="YOUR_API_KEY")
result = pi_client.submit_document("./report.pdf")
response = pi_client.chat_completions(messages=[{"role": "user", "content": "Q3 海外营收占比多少?"}],doc_id=result["doc_id"]
)

MCP 集成:兼容 Claude Agent SDK、OpenAI Agents SDK、LangChain、CrewAI、Google ADK 等主流框架。只要支持 MCP 协议,直接插上就能用。

云服务按 credit 计费(1 credit/页,索引一次性消耗),如果用 MCP + 自有 LLM,PageIndex 不收 credit 费。

适合什么场景?

PageIndex 不是来替代所有 RAG 的。它的优势在结构化长文档的精确问答

  • 金融 — 年报、SEC 文件、审计报告,数字必须精确到具体页码
  • 法律 — 合同、判例法,条款引用必须可追溯
  • 医疗 — 临床报告、药品说明书,信息不能有偏差
  • 技术 — API 文档、产品手册,用户需要精确到某个章节的答案

如果是探索性搜索——"帮我找一些关于 X 的相关内容"——传统向量 RAG 反而更合适。

PageIndex 传递了一个重要信号:RAG 不等于向量检索。 检索的本质是信息定位,语义相似度只是其中一种策略,LLM 推理是另一种。在需要精确性的场景下,推理比相似度靠谱得多。

项目地址:https://github.com/VectifyAI/PageIndex


作者: itech001
来源: 公众号:AI人工智能时代
主页: https://www.theaiera.cn(每日分享最前沿的AI新闻和技术)

本文首发于 AI人工智能时代,转载请注明出处。

http://www.jsqmd.com/news/773049/

相关文章:

  • 2025-2026年唇部防晒护理怎么选|防晒唇膏推荐|通勤补涂|SPF唇膏|办公室通勤|海边军训 - 速递信息
  • 项目管理工具选型:2025 年 6 大项目管理工具盘点评测
  • GD32E23x 串口0和1 DMA+空闲中断
  • PCIe链路训练(LTSSM)实战避坑:从Detect到L0,你的仿真卡在哪一步了?
  • AISMM评估数据可视化终极检查清单(含自动化校验工具+可审计SVG渲染模板,仅限前200位领取)
  • 修改_IO_2_1_stdout_的某些值来泄漏libc基地址
  • D2DX:让经典《暗黑破坏神2》在现代PC上焕然一新的完整解决方案
  • LeetCode HOT100 - 不同的二叉搜索树
  • 维普AIGC检测算法连续句式识别原理:哪3款工具针对性应对? - 我要发一区
  • 万方AIGC检测术语堆叠识别原理:哪款工具能精准化解? - 我要发一区
  • 【AISMM模型效能验证报告】:对比17家Pre-A轮公司,采用该模型的团队产品上线周期缩短41%
  • 别再手动算字模了!用FPGA驱动16*16点阵,从取模软件到ROM存储的保姆级避坑指南
  • GitMCP:基于MCP协议为AI编程助手注入实时GitHub文档能力
  • 2026年选购指南:塑料生产企业选吹塑机厂家核心要点 - 速递信息
  • FastAPI 中间件
  • 实战指南:如何用特斯拉Model 3/Y的DBC文件构建智能车辆监控系统
  • AI Agent 入门课:RAG 不是检索外挂,而是 Agent 的知识闭环
  • 赵明能享受到千里科技的推背感吗?
  • 为什么 docker build 成功但 docker-compose build 失败?
  • 别再手动查了!教你用Python写个脚本,批量查询商品条码并自动保存信息到Excel
  • 3分钟掌握鸣潮120FPS解锁:WaveTools工具箱终极使用指南
  • 自建代理池实战:从零搭建高可用IP代理服务应对反爬策略
  • 2026年吹塑机厂家选购全解析:从选型困惑到解决方案 - 速递信息
  • 眨眼猫会务智能体:3位数报名签到查座会务小程序,到底能赚钱吗?
  • 从“零散台账”到“一屏掌控”:绿虫光伏全流程管理软件打通项目全链路
  • 天龙八部GM工具完整指南:3分钟掌握游戏数据管理的终极技巧
  • 告别Intent跳转!用ARouter重构你的Android模块化项目(附完整Gradle配置)
  • AISMM模型核心指标全拆解,从L1到L5逐级验证,你的企业卡在哪一级?
  • AISMM模型实战手册:3个月实现IT服务管理能力跃升,中小企CIO都在偷偷用的方法
  • 汽车MCU开发避坑:TLF35584看门狗喂不活?手把手教你SPI喂狗的正确姿势(附MPC5744代码)