
随着 RAG 知识库、智能 Agent、多模态应用快速落地,AI 系统不再只需要独立向量库。PostgreSQL 凭借成熟的关系模型、ACID 事务、丰富扩展生态,加上pgvector向量检索插件,实现结构化业务数据、半结构化文档、向量 Embedding 一体化存储检索,成为 AI 项目落地的主流数据库选型。 本教程从零基础入门,延伸到索引优化、分区表、向量检索、性能调优、高可用运维、RAG 工程落地,覆盖开发、算法、运维人群,兼顾传统业务与 AI 场景实战。
PostgreSQL 是开源企业级关系型数据库,支持标准 SQL,可扩展能力极强。
pgvector扩展直接支持向量相似度检索,一套库完成业务 + 向量存储AI 场景最大亮点:向量数据和业务元数据 JOIN 查询,支持权限过滤、租户隔离,规避独立向量库和业务库不同步的问题。
三种主流部署方式:Docker 快速体验、二进制包安装、云 RDS 托管。 Docker 示例:
docker run -d --name pg \
-e POSTGRES_USER=postgres \
-e POSTGRES_PASSWORD=123456 \
-e POSTGRES_DB=ai_db \
-p 5432:5432 \
postgres:16客户端工具推荐:DBeaver、pgAdmin、Navicat。掌握psql命令行基础操作:库、Schema、角色、权限管理。
除int、text、timestamp等常规类型,AI 开发高频类型:
JSONB:存储对话记录、模型返回结果、动态配置,支持索引,性能远高于 JSONARRAY:标签、分类、多属性数组存储tsvector / tsquery:原生全文检索vector(pgvector):高维 Embedding 向量基础语法:建表、增删改查、多表 JOIN、子查询、CTE、约束(主键、唯一、CHECK、外键)。
PostgreSQL 基于 MVCC 实现无锁读,理解快照机制、脏读、不可重复读、幻读。 四个隔离级别:读已提交(默认)、可重复读、串行化。AI 高并发问答场景,合理选择隔离级别避免数据异常。
JSONB 支持路径查询、包含匹配,适合 Schema 经常变化的数据(大模型对话日志)
CREATE TABLE chat_history (
id BIGSERIAL PRIMARY KEY,
session_id TEXT,
payload JSONB,
create_time TIMESTAMP DEFAULT NOW()
);
-- GIN索引加速JSONB检索
CREATE INDEX idx_payload_gin ON chat_history USING GIN(payload);
-- 查询示例
SELECT payload->>'answer' FROM chat_history WHERE payload @> '{"model":"gpt-4o"}';最佳实践:固定字段优先单独列,动态字段放入 JSONB,不要全部塞进 JSONB 造成查询性能退化。
EXPLAIN ANALYZE 执行计划分析,识别索引失效、全表扫描;线上使用 CONCURRENTLY 无锁建索引,避免锁表。支持范围分区、列表分区、哈希分区。AI 项目中对话日志、向量流水表一般按时间做范围分区,实现分区裁剪、冷热分离、自动归档。
CREATE TABLE chat_part (
id BIGSERIAL,
session_id TEXT,
content TEXT,
create_time TIMESTAMP
) PARTITION BY RANGE (create_time);搭配 pg_cron 定时自动新建分区、归档冷数据。
窗口函数(统计 token 消耗、调用排行)、递归 CTE(知识库目录树、权限树)、PL/pgSQL 自定义函数、触发器。
CREATE EXTENSION IF NOT EXISTS vector;支持 vector、halfvec、sparsevec,适配不同 Embedding 模型维度:768 (BGE)、1536 (OpenAI)、1024 等。
CREATE TABLE knowledge_base (
id BIGSERIAL PRIMARY KEY,
doc_title TEXT,
doc_content TEXT,
embedding vector(1536),
category TEXT,
tenant_id INT
);
-- HNSW索引,适合高并发查询场景
CREATE INDEX idx_emb_hnsw ON knowledge_base USING hnsw (embedding vector_cosine_ops);
-- 余弦相似度召回Top5
SELECT *, embedding <-> '[...]' AS distance
FROM knowledge_base
ORDER BY embedding <-> '[...]' LIMIT 5;距离算子:
<->:欧氏距离<=>:余弦距离(最常用)<#>:内积实战经验:大批量导入向量时,先导入数据,再建立索引,速度远高于边写边建索引。
tsvector全文检索 + pgvector 向量检索,实现关键词过滤、语义召回、重排,降低大模型幻觉,是 RAG 主流方案。
向量召回时同步带上tenant_id、权限标签过滤,一个表支持多租户知识库,是企业 AI 系统高频需求。
shared_buffers、effective_cache_size、work_mem、maintenance_work_mem。 向量索引构建、大排序场景调高maintenance_work_mem;高并发环境严控 work_mem,防止内存打爆。
开启pg_stat_statements插件,统计 SQL 耗时、调用次数,定位慢向量查询、大 JOIN、未裁剪分区查询。 常见坑:忘记建向量索引,造成全表向量计算,查询超时。
频繁更新、删除的表会产生死元组(dead tuple),出现表膨胀,JSONB、对话日志表尤为明显。理解自动 vacuum、手动 vacuum analyze,定期监控膨胀率。
基础备份 + WAL 归档,实现时间点恢复;主从流复制架构,读请求分流到从库,向量检索、报表查询走从库,主库承担写入。理解复制槽、流复制故障切换。
单实例容量不足时,Citus 将 PG 横向分片,支持向量表分布式存储,支撑亿级向量、多租户大型 RAG 平台。
pg_cron 定时任务、pg_trgm 模糊检索、pg_stat_statements 监控。
案例 1:企业内部知识库 RAG 系统(多租户 + 向量检索) 案例 2:大模型对话平台(JSONB 存储会话、token 统计) 案例 3:商品图文推荐系统(向量相似度匹配商品)
PostgreSQL 早已不只是传统关系数据库。借助 pgvector,它打通关系数据、半结构化文档、向量检索,一套数据库支撑 AI 全链路业务,大幅降低多组件运维成本,是 AI 应用落地性价比极高的方案。从基础 SQL、事务,到向量检索、分区调优、分布式架构,掌握这套体系,就可以独立完成企业级 RAG、智能对话平台的数据层设计与开发。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。