pgrag
neondatabase/pgrag加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
张明是一家 SaaS 公司的 DBA,公司产品积累了数万份技术文档和用户手册。产品团队希望把这些文档变成智能问答助手,但现有的 RAG 方案要求团队维护独立的向量数据库(Milvus、Pinecone)、 embedding 服务(OpenAI API)和一个独立的应用服务。架构越叠越复杂,部署难度指数级上升,而且数据必须出库——合规部门第一个站出来反对。
有没有一种方案,能让数据"原地向量化",直接在 PostgreSQL 里完成 RAG 全流程?
这就是 pgrag 试图回答的问题。
pgrag 由 Neon(云端 PostgreSQL 提供商)团队开源,定位为"PostgreSQL 扩展以支持端到端 RAG 流水线"。它利用 PostgreSQL 的 pgrx 框架(PostgreSQL 官方推荐的扩展开发工具链)将 RAG 核心能力编译为数据库扩展函数,使向量化和重排逻辑直接在 SQL 层执行,数据无需离开数据库。
项目最早于 2023 年活跃开发,2024 年标注 DEPRECATED(已废弃),团队将资源集中到 Neon 的云服务。但代码仓库保持公开,作为 PostgreSQL + AI 融合方向的一个重要参考实现。
pgrag 提供了三个文档解析函数:
text_from_pdf(bytea):从 PDF 中提取文本(基于 pdf-extract,无 OCR)text_from_docx(bytea):从 Word 文档提取(基于 docx-rs)markdown_from_html(text):将 HTML 转为 Markdown(基于 htmd)分块策略支持按字符数(chunks_by_character_count)或按 Token 数(chunks_by_token_count)切分,并支持重叠窗口(overlap),避免块边界切断语义单元。
两个独立的模型扩展提供了离线推理能力:
rag_bge_small_en_v15:基于 bge-small-en-v1.5(33M 参数,384 维向量),支持 passage 和 query 两种 embedding 生成方式rag_jina_reranker_v1_tiny_en:基于 jina-reranker-v1-tiny-en,对检索结果做语义重排模型以 ONNX 格式打包,通过 ORT(ONNX Runtime) 执行推理,支持 x86_64 Linux 和 macOS。模型数据可以通过 include_bytes!() 内嵌到扩展中,也支持首次启动时远程下载。
不想本地运行模型?pgrag 也支持调用远程 API:
text-embedding-3-small/3-large/ada-002 生成向量,gpt-4o-mini 等模型完成问答claude-3-haiku 等模型这意味着同一套 SQL 代码可以在本地模型(完全离线)和云端模型(更高精度)之间切换,无需改写业务逻辑。
向量化和重排模型在推理时占用较大内存(ONNX Runtime 多线程执行)。如果每个 PostgreSQL 连接进程都加载一份模型,内存消耗将不可接受。
pgrag 的解决方案是 Background Worker:PostgreSQL 启动时仅启动一个后台工作进程,模型懒加载到该进程中,各连接通过共享内存调用推理,避免内存复制。这一设计体现了对 PostgreSQL 内部机制(shared_preload_libraries)的深度利用。
三个扩展职责清晰分离:
rag:纯文本处理(PDF/DOCX/HTML、分块),无外部依赖rag_bge_small_en_v15:bge embedding 模型,约 100MBrag_jina_reranker_v1_tiny_en:重排模型,约 100MB用户可以根据需求选择性安装,避免不必要的存储和内存开销。
安装复杂度:极高。官方没有提供 Docker 或预编译包,需要手动:
cargo pgrx install --release使用门槛:中等。SQL API 设计直观,具备 PostgreSQL 基础即可上手。端到端 RAG 案例展示了从文档入库、向量生成、语义检索到 GPT 回答的完整 SQL 脚本,高级用户可获得清晰的参考。
不建议用于生产。项目已废弃(DEPRECATED),无维护、无安全更新。
已废弃,不建议生产使用:作者在 README 醒目位置标注,项目不再维护。生产环境使用存在安全和稳定性风险。
仅支持英文模型:bge-small-en-v1.5 和 jina-reranker-v1-tiny-en 均为英文模型,不支持中文。
Windows 不支持:pgrx 框架目前不支持 Windows 开发环境,Windows 用户无法使用。
PDF 解析能力弱:不支持复杂布局(如多栏 PDF)、不支持 OCR,扫描版 PDF 无法处理。
安装复杂度高:缺乏容器化或包管理器支持,跨越 Rust 编译链、PostgreSQL 扩展机制和 ONNX Runtime 三层技术栈,劝退大多数用户。
pgrag 代表了一个重要方向:让数据库本身成为 AI 基础设施。随着 pgvector 的成熟和 Neon、Supabase 等云数据库厂商的推动,"数据库内置 AI 能力"正在从实验走向实用。pgrag 虽然已废弃,但它验证了 pgrx 扩展 + ONNX Runtime 这条技术路径的可行性,为后续项目(如 Supabase 的 pgvector extensions)提供了重要参考。
当前项目 stars 101,属于小众但有深度的技术实现。对于在 PostgreSQL 生态中构建 AI 应用的开发者,pgrag 是一个值得研究的参考架构。