转写说明
本文基于已校验的公开原文进行结构化转写与事实梳理,非原文转载。 转写保留可核验的技术事实,并将工程建议与来源观点明确分开。
- 原作者: snow来了
- 原始来源: https://juejin.cn/post/7691284233897951295
- 原文发布时间: Wed, 30 Sep 2026 14:39:55 GMT
核心结论
PostgreSQL 是免费、开源的对象关系型数据库,与 MySQL 同属关系型数据库范畴。其在 AI Agent 项目中的核心价值在于内置 pgvector 扩展,可直接存储向量并完成相似度检索,无需引入独立的向量数据库。相较于 MySQL 配合 Milvus 的双组件方案,PostgreSQL 单库即可完成文档存储与向量检索两个环节。
能力机制
PostgreSQL 向量检索的工作流程如下:首先将长文本按规则切分为文本块,再由嵌入模型将文本块转换为向量,通过 SQL 语句将文本块与向量一并存入数据库。当用户发起查询时,嵌入模型将问题转换为向量,由 pgvector 计算向量距离并返回最相似的文本块。最终将检索到的文本块拼接入提示词,提交给大语言模型生成回答。
pgvector 支持多种距离算法,不仅仅局限于余弦相似度。需特别注意,问题向量与文档向量必须使用同一嵌入模型生成,否则维度与语义空间不一致,无法进行有效比较。
快速开始
安装需准备三个组件:psql 服务端、pgAdmin4 图形化客户端、Node.js 环境下的 pg 包。pgAdmin4 连接数据库后可使用 SQL 语句进行数据操作。
初始化 Node.js 项目并安装依赖:
| |
配置环境变量,使用环境变量名称 PGHOST、PGPORT、PGUSER、PGPASSWORD、PGDATABASE。连接数据库后可通过 pool.query 执行查询。创建表示例:
| |
NestJS 项目中使用 TypeORM 配置连接,参数包括 type、host、port、username、password、database。autoLoadEntities 用于自动加载实体,synchronize 在开发环境自动同步表结构。Entity 定义使用 TypeORM 装饰器,Service 层封装 CRUD 操作,Controller 层通过装饰器映射路由。
适用边界
PostgreSQL 的优势在于架构简洁:单库同时管理结构化数据与向量数据,减少了组件间数据流转的复杂性。新建项目若无历史包袱,可直接选用 PostgreSQL 加 pgvector 方案。
MySQL 配合 Milvus 的方案在历史项目中仍有适用场景:Milvus 专精向量相似度对比,MySQL 负责结构化数据存储,两者各有专注。pgvector 在向量数量过多时检索能力可能下降,与 Milvus 在大规模向量场景下的性能表现存在差异。两者均可通过合理设计规避各自短板,需根据具体项目规模与已有架构做出选择。
核验清单
- PostgreSQL 服务端、pgAdmin4、pg 包均已正确安装
- Node.js 环境可成功连接数据库并执行查询
- 向量检索使用统一嵌入模型生成问题向量与文档向量
- NestJS 项目通过 TypeORM 正确配置 PostgreSQL 连接
- Entity、Service、Controller、Module 各层职责明确
- 生产环境需评估 pgvector 插件的向量规模承载能力
来源与核验
- 原始文章
- 页面事实以原始来源及其引用的官方资料为准;版本、星标和模型能力会随时间变化。
- AI Stack 不公开抓取到的全文快照,只发布独立转写与来源入口。