共计 2000 个字符,预计需要花费 5 分钟才能阅读完成。
PostgreSQL 15 新特性与 pgvector 价值
PostgreSQL 15 带来了多项性能改进,包括逻辑复制的增强、JSON 字段的查询优化以及并行查询的改进。而 pgvector 插件则为 PostgreSQL 增加了向量搜索的能力,这在 AI 应用中尤为重要,比如:

- 相似性搜索(如推荐系统)
- 图像 / 视频特征检索
- 自然语言处理中的语义搜索
源码编译 vs YUM 安装
在 CentOS 上安装 PostgreSQL 通常有两种方式:
- 源码编译
- 优点:可以完全自定义编译选项,优化性能
-
缺点:依赖管理复杂,编译时间长
-
YUM 安装
- 优点:快速部署,自动处理依赖
- 缺点:灵活性较低
对于 CentOS 系统,YUM 安装更适合大多数场景,因为:
- CentOS 的默认软件源版本较旧
- 依赖库(如 libpq)容易产生版本冲突
详细安装步骤
配置 YUM 源
首先添加 PostgreSQL 官方 YUM 源(以 CentOS 7 为例):
# 安装 EPEL 源
yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
# 添加 PostgreSQL 官方源
yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
解决依赖冲突
CentOS 自带的 libpq 可能会与新版本冲突,建议先移除:
# 危险操作:移除冲突的 libpq
rpm -e --nodeps postgresql-libs
安装 PostgreSQL 15
yum install -y postgresql15-server postgresql15-contrib
初始化数据库
# 初始化数据库
/usr/pgsql-15/bin/postgresql-15-setup initdb
# 启动服务
systemctl start postgresql-15
systemctl enable postgresql-15
pgvector 插件安装
从源码编译
# 安装编译依赖
yum install -y postgresql15-devel gcc make
# 下载 pgvector 源码
git clone --branch v0.4.2 https://github.com/pgvector/pgvector.git
cd pgvector
# 编译安装
make PG_CONFIG=/usr/pgsql-15/bin/pg_config
make install PG_CONFIG=/usr/pgsql-15/bin/pg_config
数据库配置
在 postgresql.conf 中添加:
shared_preload_libraries = 'vector'
重启服务后,在数据库中创建扩展:
CREATE EXTENSION vector;
性能测试
pgbench 基准测试
# 初始化测试数据库
createdb pgbench_test
pgbench -i -s 100 pgbench_test
# 运行测试
pgbench -c 10 -j 2 -T 60 pgbench_test
向量搜索测试
创建测试表并插入数据:
CREATE TABLE items (id serial PRIMARY KEY, embedding vector(128));
-- 插入 10000 条随机向量
INSERT INTO items (embedding)
SELECT array_agg(random()::real)::vector(128)
FROM generate_series(1, 128*10000) t;
测试查询性能:
EXPLAIN ANALYZE SELECT id FROM items ORDER BY embedding <-> '[0.1,0.2,...,0.128]' LIMIT 10;
生产环境注意事项
内存配置
建议配置(对于 16GB 内存服务器):
shared_buffers = 4GB # 25% of total RAM
work_mem = 16MB # per-operation memory
maintenance_work_mem = 512MB # for VACUUM, CREATE INDEX, etc.
向量维度选择
- 低维(<100):使用 IVFFlat 索引
- 高维(≥100):考虑 HNSW 索引
常见错误
ERROR: could not open extension control file:检查插件是否安装到正确目录ERROR: out of shared memory:增加 shared_buffers
总结建议
- 使用 EXPLAIN ANALYZE 分析查询计划
- 开发环境建议使用 docker-compose 隔离
- 定期监控向量索引的性能
通过这些步骤,你应该已经成功在 CentOS 上部署了支持向量搜索的 PostgreSQL 15 环境。这种配置特别适合需要结合传统关系型数据和向量搜索的 AI 应用场景。
正文完
发表至: 数据库技术
近两天内
