news 2026/5/7 17:59:32

基于PageIndex的文档问答

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
基于PageIndex的文档问答

我一直在构建和探索基于 RAG 的 AI 解决方案,并尝试了大多数为改进 RAG 而开发的方法。但传统的 RAG 系统存在局限性。PageIndex 提供了一种不同的方法,并创建了一种不同的文档和文本分块以及检索方式。

PageIndex是一个开源的文档索引和基于推理的检索框架,它能够在没有向量数据库或分块的情况下实现类似人类的文档理解和问答。它将文档转换为分层树索引,并使用 LLM 推理来找到相关部分,克服了传统 RAG 系统的局限性,如上下文丢失和对语义相似性搜索的依赖。

仓库链接:https://github.com/VectifyAI/PageIndex

1、什么是 PageIndex?

Pageindex 是一个基于推理的 RAG 框架,它。

  • 构建文档的分层树索引
  • 使用多步骤 LLM 推理来导航树
  • 以可跟踪和可解释的方式检索信息
  • 消除对向量嵌入和外部数据库的依赖
  • 在保持结构和上下文的同时处理长文档。
PageIndex 的核心功能:
  • 不需要向量数据库,不像传统的基于 RAG 的方法
  • 不需要人工分块
  • 类似人类的检索
  • 分层树索引
  • 对复杂文档有更好的精度

2、PageIndex 与传统 RAG 的比较

传统 RAG 的工作方式如下:

  • 将文档分割成固定大小的块

  • 为每个块生成向量嵌入

  • 将它们存储在向量数据库中

  • 基于语义搜索检索相似的块来回答查询
    上述方法的问题是:

  • 分块在某些情况下会破坏上下文

  • RAG 中使用的相似性 ≠ 相关性

  • 向量索引可能昂贵/复杂

  • 难以将答案追溯到真实结构
    Pageindex 相反遵循不同的方法:

  • 它生成一个语义树

  • 使用推理来探索该树

  • 保留真实的文档结构

  • 以人类的方式找到相关部分。

3、如何设置 PageIndex 并为其构建 API

让我们继续使用 pageindex 构建一个简单的问答引擎

3.1 环境设置

先决条件

确保你有:

  • Python 3.10+ 已安装
  • OpenAI API 密钥(ChatGPT / GPT-4 / Gemini 支持)
  • git 和 shell 访问权限
    然后使用终端克隆共享的仓库。
git clone https://github.com/VectifyAI/PageIndex.git cd PageIndex

克隆仓库后,安装依赖项

pip install --upgrade -r requirements.txt

Pageindex 仓库克隆和依赖项安装

这将安装 PageIndex 和所需的包,例如:

  • OpenAI 或 LLM SDK
  • 语言处理工具
  • 各种索引和 CLI 工具

3.2 从文档生成 PageIndex

PageIndex 期望结构化文档(PDF、Markdown 等),它将把这些文档转换为树。

创建一个文件夹 docs/,并将你的文档放在 pageindex 文件夹内的 docs/ 文件夹中。

然后在项目根目录创建一个 .env 文件,并添加 open api 密钥

OPENAI_API_KEY="your_openai_api_key_here"

然后运行下面的命令来重新索引脚本

python3 run_pageindex.py --pdf_path docs/pdfname.pdf

命令中的可选字段:

示例:

python3 run_pageindex.py --pdf_path docs/annual_report.pdf --max-pages-per-node 5

3.3 构建你的文档上传和问答 API

现在 PageIndex 已经生成了一个索引,让我们把它包装在一个简单的 API 后面,该 API 允许上传文档并基于该文档回答问题

# 安装 FaseAPI 和 Uvicorn pip install fastapi uvicorn python-multipart

使用下面的代码创建一个文件 main.py

from fastapi import FastAPI, UploadFile import subprocess import uuid import os app = FastAPI() UPLOAD_DIR = "uploaded_docs" os.makedirs(UPLOAD_DIR, exist_ok=True) @app.post("/upload") async def upload_document(file: UploadFile): # 保存上传的文件 file_id = uuid.uuid4().hex path = os.path.join(UPLOAD_DIR, f"{file_id}.pdf") with open(path, "wb") as f: f.write(await file.read()) # 在此文件上运行 PageIndex subprocess.run([ "python3", "run_pageindex.py", "--pdf_path", path, "--output_path", f"indexes/{file_id}.json" ]) return {"id": file_id, "status": "indexed"} @app.get("/answer/{doc_id}") async def answer_question(doc_id: str, question: str): # 加载索引 index_file = f"indexes/{doc_id}.json" # 这里调用 PageIndex 的内部 API 执行推理检索 # 伪代码 answer = query_pageindex(index_file, question) return {"question": question, "answer": answer}

3.4 部署你的应用

uvicorn main:app --reload --host 0.0.0.0 --port 8000

测试端点:

上传:

curl -X POST -F "file=@docs/doc.pdf" http://localhost:8000/upload

上传时,你会得到一个文档 id,类似于下面显示的:9f5bb9f2e6c94d299e84b9dd1e9bb571

提问:

curl "http://localhost:8000/answer/{file_id}?question=What is the revenue?"

你可以添加的其他功能

  • 支持 markdown 上传( — md_path)
  • 保存和服务多个索引
  • 用于上传和提问的浏览器 UI
  • 最近查询的知识缓存
  • 与前端框架(如 React)的集成

原文链接:基于PageIndex的文档问答 - 汇智网

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/24 8:11:48

萤石开放平台 音视频 | 标准流直播协议

标准流直播协议 基本概念 HLS/RTMP/HTTP-FLV这几个协议是常见的直播标准协议,萤石开放平台除了提供ezopen协议外,还提供了HLS、RTMP、HTTP-FLV标准流协议供开发者接入 RTMP介绍 RTMP (Real Time Messaging Protocol)&#xff…

作者头像 李华
网站建设 2026/4/30 10:01:15

基于微信小程序的高校班务管理系统(源码+lw+部署文档+讲解等)

课题介绍 本课题旨在设计并实现一套基于微信小程序的高校班务管理系统,解决高校班级管理中通知传达不及时、考勤统计繁琐、作业提交与批改低效、班级事务协同不便、学生信息管理杂乱等问题。系统采用SpringBoot作为后端核心框架,结合MyBatis-Plus简化班务…

作者头像 李华
网站建设 2026/5/2 11:42:07

掌握应用开发学习路线,快速成为大模型专家!大模型学习路线,AI大模型开发全流程解析及项目实战!

一、大模型开发整理流程 1.1、什么是大模型开发 我们将开发以大语言模型为功能核心、通过大语言模型的强大理解能力和生成能力、结合特殊的数据或业务逻辑来提供独特功能的应用称为大模型开发。 开发大模型相关应用,其技术核心点虽然在大语言模型上,但…

作者头像 李华
网站建设 2026/5/3 19:23:46

nodejs幸运舞蹈工作室管理系统 培训机构私教预约系统pg28ryio

文章目录 功能概述核心模块技术架构扩展特性 --nodejs技术栈--结论源码文档获取/同行可拿货,招校园代理 :文章底部获取博主联系方式! 功能概述 Node.js幸运舞蹈工作室管理系统是一款专为舞蹈培训机构设计的综合管理平台,支持私教课程预约、会…

作者头像 李华
网站建设 2026/4/21 20:55:03

山东菏泽vs黑龙江鹤岗:小城开发者的路径选择

一、地域产业生态对比:资源禀赋与职业天花板 菏泽模式——政策驱动下的AI测试机遇 政策红利催化技术升级:菏泽依托齐鲁软件园专项扶持资金,构建AI测试创新生态。本地测试员通过智能测试平台开发实现技术跃迁,如自动化报告生成工具…

作者头像 李华
网站建设 2026/4/18 8:15:56

基于Springboot+Vue的养老中心管理系统源码文档部署文档代码讲解等

课题介绍 本课题旨在设计并实现一套基于SpringBootVue的前后端分离养老中心管理系统,解决传统养老中心老人信息管理繁琐、护理服务流程不规范、健康监测不及时、家属沟通不便、后勤与人员管理低效等问题。系统采用SpringBoot作为后端核心框架,结合MyBati…

作者头像 李华