
这是 AI 赋能 PostgreSQL 专题的第一篇。在讨论 pgvector 怎么用之前,先回答一个更根本的问题:AI 应用到底需要数据库具备什么能力?PostgreSQL 凭什么成为候选,它的边界又在哪里? 这一篇不吹"PG 万能",而是把 PG 在 AI 场景下的真实位置、它能兑现的承诺、以及它兑现不了的部分,一次讲清楚。
一、AI 应用对数据库提出的,不是"向量检索"一个需求
行业里有一种流行的简化:AI 应用需要向量数据库,PostgreSQL 加个 pgvector 就是向量数据库,所以 PG 适合 AI。这个推理链条的每一步都过于粗糙。
真实的 AI 应用(RAG、推荐、Agent 记忆、语义搜索)对数据层提出的是一组相互耦合的需求:
第一,向量相似性检索。 这是最显性的需求,但只是起点。
第二,结构化过滤与业务数据的联合查询。 一个 RAG 查询不只是"找最相似的文档",而是"找这个租户、这个权限范围内、最近 90 天内、与查询语义最相似的文档"。向量检索必须和 WHERE 条件、JOIN 一起工作。
第三,多模态数据的统一存储。 文本嵌入、图像特征、地理坐标、JSON 元数据、时序日志,往往出现在同一个 AI 应用里。如果每类数据都引入一套专用存储,数据一致性和运维复杂度会迅速失控。
第四,事务一致性。 业务数据写入和向量嵌入的更新需要保持同步;特征更新和元数据变更需要在同一个事务边界内完成。最终一致性在原型阶段可以接受,在生产环境的复杂业务中会成为持续的对账负担。
第五,混合检索。 纯向量搜索对精确匹配(产品编号、错误码、专有名词)天然弱势,生产级 RAG 通常需要向量、全文、关键词三路并行,再做融合排序。
这五条需求叠加起来,指向的结论是:AI 应用需要的是一个能同时承载"向量检索"和"业务数据管理"的数据基座,而不是一个只会算距离的向量引擎。 InfoWorld 的一篇评论把这一点说得更直接:对大多数企业应用来说,向量支持应该是 woven into existing data estate 的一个功能,而不是引入第二个真相来源的理由。
二、PostgreSQL 的回答:用"扩展"覆盖需求,而不是用"新数据库"替换
PostgreSQL 的策略,不是把所有这些能力都塞进内核,而是通过扩展机制按需启用。这个设计的实际含义是:你不需要为了一个 AI 功能,就把整个数据架构推倒重来。
pgvector:向量检索作为一等公民
pgvector 给 PG 增加了 vector 类型、距离运算符(<=> 余弦、<-> 欧氏、<#> 内积)以及 IVFFlat 和 HNSW 两种 ANN 索引。它让向量检索发生在与业务表相同的 SQL 引擎、相同的事务边界、相同的权限体系之内。
这意味着,你可以写出一条查询,同时完成语义相似度排序和业务条件过滤:
sql
SELECT id, content
FROM documents
WHERE tenant_id = $1
AND created_at > now() - interval '90 days'
ORDER BY embedding <=> $2
LIMIT 10;
这条查询在专用向量数据库里通常需要后过滤(post-filtering) ------先取回 top-K 向量,再用业务条件过滤,结果可能不足 K 条,召回率静默下降。PG 的优化器可以把结构化条件和向量索引放在同一个计划里,从设计上避免了这一层割裂。
JSONB:元数据、对话历史、Agent 记忆的天然载体
AI 应用中有大量半结构化数据:文档的元数据、Agent 的对话轨迹、工具调用的参数和结果。这些数据不适合拆成严格的关系表,但又需要被索引和查询。JSONB 提供了 GIN 索引、@> 包含查询和路径提取,让半结构化数据在关系引擎内获得可查询性,而不需要引入文档数据库。
PostGIS:空间维度不是 AI 的"额外需求",而是常见维度
当 AI 应用涉及位置("附近的餐厅""这个区域的巡检记录"),PostGIS 的 ST_DWithin、空间索引和距离计算可以直接与向量检索出现在同一条 SQL 里。这种空间 + 语义的联合查询,在专用向量库和独立 GIS 系统的组合中需要跨系统拼接,而在 PG 中只是一条查询。
FDW:承认边界,但不放弃整合
Foreign Data Wrapper 是 PG 在 AI 场景中最被低估的能力。它不假装 PG 能原生覆盖一切,而是提供查询联邦 :PG 可以通过 FDW 查询 Elasticsearch、Milvus、外部 PostgreSQL 甚至文件。这意味着,当某个场景确实需要专用引擎时,PG 仍然可以充当统一的 SQL 入口,而不是被替换掉。
三、真正让 PG 区别于"向量数据库 + 业务数据库"组合的,是事务一致性
向量数据库在 AI 原型中的表现通常很好,但进入生产后会遇到一个结构性问题:向量数据和业务数据分布在两个系统中,任何跨系统的更新都需要应用层自己保证一致性。
一个具体场景:用户更新了文档内容,新的嵌入需要重新生成并写入向量库,同时旧向量需要失效。如果业务库更新成功、向量库写入失败,RAG 就会检索到过时内容;如果先写向量库、再更新业务库,则可能检索到"未来"的内容。应用层需要引入 outbox、重试、对账,最终演变成一套事实上的分布式事务框架。
在 PG 中,向量就是表的一列。更新文档内容和更新嵌入在同一个 UPDATE 语句、同一个事务 中完成,提交或回滚天然一致。这不是一个"性能优化",而是一个架构层面的简化:它消除了一整类一致性缺陷,以及随之而来的补偿逻辑和运维负担。
InfoWorld 的那篇评论把这一点概括为:生产 AI 最困难的部分不是最近邻搜索,而是 context------把正确的数据、正确的权限、正确的时效性放在一起。PG 的价值恰恰在于,它让 context 的组装不需要跨系统。
四、PG 的短板:必须诚实面对
如果这一篇只讲优势,它就失去了技术博客的价值。PG 在 AI 场景下的边界是真实存在的,而且随着规模增长会变得尖锐。
短板一:pgvector 的 HNSW 是"内存换速度",规模边界明确
pgvector 的 HNSW 索引在百万级向量时就开始暴露内存压力。一个 1536 维的 float32 向量本身约 6KB,但 HNSW 的图元数据会让单向量内存开销上升到 20--25KB ;一百万向量就可能需要数十 GB 内存,一千万向量时内存成为核心设计约束。当活跃图页无法常驻缓存时,延迟会急剧退化,标准后过滤还会进一步损害召回。
实践中的共识大致是:pgvector 可以覆盖大多数 AI 应用的向量需求,包括 RAG、知识库搜索和混合检索;但当规模进入数千万到亿级、且对 P99 延迟有严格要求时,专用向量数据库开始体现价值 。ClickHouse 的工程指南给出的触发信号更具体:重并发下 sub-20ms p99、十亿级向量、频繁 re-embedding 导致的 MVCC 膨胀,是评估混合架构的合理起点。
短板二:向量能力是"外挂",不是内核原生
pgvector 是一个扩展,不是 PostgreSQL 内核的一部分。这在工程上意味着:向量索引的构建、更新、VACUUM 行为、复制语义,都需要单独理解和调优。一些分析直接指出,在十亿级向量混合查询和高并发场景下,插件式向量能力的瓶颈非常明显。这不是 pgvector 的实现质量问题,而是"扩展"这一架构选择的固有边界。
短板三:高并发写入与水平扩展的张力
PostgreSQL 的默认架构是单主、垂直扩展。AI 应用如果具有持续高并发写入、频繁嵌入更新、多租户隔离 的特征,单主 PG 的写入吞吐和连接模型会成为瓶颈。读副本、手动分片、Citus 可以缓解,但它们引入的复杂性和运维负担需要被计入成本。pgvector 的 HNSW 索引构建本身也是CPU 和内存密集型操作,高频 re-embedding 会与正常写入竞争资源。
五、所以,PG 适合 AI 的准确表述是什么?
PostgreSQL 适合的是"向量检索是功能之一、而不是全部"的 AI 应用。 它的核心价值不在于"比专用向量库更快",而在于:
- 用一个数据基座承载向量、业务数据、JSON、地理、全文检索,消除跨系统一致性负担;
- 在同一个事务边界内完成特征更新和业务变更,把 AI 数据的正确性问题前置到数据库层;
- 通过 FDW 保留整合专用引擎的能力,当规模超出边界时,不必推翻整个架构。
它不适合的是 把向量检索当作唯一负载 、对十亿级规模下的 P99 延迟有极端要求 、或者写入模式以高频嵌入更新为主的场景。在这些场景中,专用向量数据库或者"PG + 专用向量库"的混合架构是更理性的选择。
六、总结
| 问题 | 结论 |
|---|---|
| AI 应用需要什么? | 向量检索、结构化过滤、多模态统一存储、事务一致性、混合检索,五者耦合 |
| PG 凭什么适合? | 扩展机制覆盖多模态;pgvector 让向量成为表的一列;事务一致性消除跨系统对账 |
| PG 的核心优势 | 不是单个能力最强,而是"业务数据 + 向量 + 元数据"在同一个事务边界内 |
| PG 的真实短板 | HNSW 内存开销限制规模;向量能力是外挂而非内核原生;高并发写入和水平扩展有张力 |
| 准确表述 | PG 适合"向量是功能之一"的 AI 应用;不适合"向量是唯一负载、十亿级、极端 P99"的场景 |
两句话回答核心问题:
AI 应用需要数据库具备哪些能力? 向量相似性检索只是入口;真正的需求是向量检索与业务条件、多模态数据、事务一致性、混合检索的深度耦合。一个只会算距离的数据库,解决不了"在正确的权限和时效范围内,找到语义最相关的上下文"这个问题。
PG 的短板是什么? pgvector 的 HNSW 是内存换速度的索引,百万级开始出现内存压力,数千万到亿级、高并发低延迟的场景需要专用向量库或混合架构 ;向量能力是扩展而非内核原生,在极端规模下瓶颈清晰;单主架构对持续高并发写入和频繁 re-embedding 有天然的扩展张力。PG 适合的是把向量当作数据基座中的一个功能来用的 AI 应用,而不是把向量检索当作唯一负载的场景。
下一篇,我们进入 PostgreSQL 生态中支持 AI 的相关扩展概览:pgvector、PostGIS、TimescaleDB、postgresml、pg_vectorize------它们各自解决什么问题,什么时候该用哪一个。
思考题:
你的 AI 应用(或规划中的 AI 应用)里,向量检索是"唯一负载"还是"功能之一"?业务数据、权限过滤、元数据和向量是放在同一个库里,还是已经拆成了多个系统?如果拆了,你目前为跨系统一致性付出了多少对账和补偿的代码?欢迎在评论区聊聊你的架构选择。