共计 2171 个字符,预计需要花费 6 分钟才能阅读完成。
PostgreSQL 15 作为当前最新的稳定版本,引入了诸多性能优化和新特性,比如改进的并行查询、逻辑复制的增强以及更好的 JSON 处理能力。而 pgvector 插件则为 PostgreSQL 带来了向量搜索的能力,这对于构建 AI 应用(如推荐系统、语义搜索等)至关重要。本文将详细介绍在 CentOS 系统上通过 YUM 安装 PostgreSQL 15 并集成 pgvector 插件的完整流程。

1. YUM 安装与源码编译的对比
在 CentOS 上安装 PostgreSQL 通常有两种方式:源码编译和 YUM 安装。源码编译虽然灵活,但容易遇到依赖问题,尤其是 CentOS 的库版本较老时。YUM 安装则更为简便,适合快速部署。
- 源码编译的优势:
- 可以自定义编译选项,优化性能
-
适用于需要特定 Patch 的场景
-
YUM 安装的优势:
- 自动化解决依赖问题
- 官方源提供稳定版本,减少兼容性问题
对于大多数生产环境,推荐使用 YUM 安装,尤其是 CentOS 7/ 8 这类长期支持的系统。
2. 配置 PostgreSQL 官方 YUM 源
首先,我们需要配置 PostgreSQL 的官方 YUM 源。以下命令适用于 CentOS 7/8:
# 安装 PostgreSQL 官方 YUM 仓库
sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
# 清理缓存并更新
sudo yum clean all
sudo yum makecache
3. 安装 PostgreSQL 15
安装 PostgreSQL 15 及其相关工具:
# 安装 PostgreSQL 15 服务器和客户端
sudo yum install -y postgresql15-server postgresql15-contrib
# 初始化数据库
sudo /usr/pgsql-15/bin/postgresql-15-setup initdb
# 启动服务并设置开机自启
sudo systemctl enable postgresql-15
sudo systemctl start postgresql-15
4. 解决依赖冲突
在 CentOS 上,可能会遇到 libpq 等依赖冲突的问题。以下是解决方法:
# 检查冲突的包
rpm -qa | grep libpq
# 如果存在冲突,强制替换(谨慎操作)sudo rpm -e --nodeps libpq5
# 重新安装 PostgreSQL 的 libpq
sudo yum install -y postgresql15-libs
5. 初始化数据库配置
编辑 PostgreSQL 的配置文件/var/lib/pgsql/15/data/postgresql.conf,优化以下参数:
# 内存分配
shared_buffers = 4GB # 建议为总内存的 25%
work_mem = 16MB # 每个查询的内存限制
# WAL(预写式日志)配置
wal_level = logical # 支持逻辑复制
synchronous_commit = off # 提高写入性能
6. 安装 pgvector 插件
pgvector 需要通过源码编译安装。以下是步骤:
# 安装编译依赖
sudo yum install -y git gcc postgresql15-devel
# 克隆 pgvector 仓库
git clone https://github.com/pgvector/pgvector.git
cd pgvector
# 编译并安装
make PG_CONFIG=/usr/pgsql-15/bin/pg_config
sudo make install PG_CONFIG=/usr/pgsql-15/bin/pg_config
7. 启用 pgvector 插件
在 PostgreSQL 中创建扩展:
-- 以超级用户身份登录
psql -U postgres
-- 创建 pgvector 扩展
CREATE EXTENSION vector;
-- 验证安装
SELECT * FROM pg_available_extensions WHERE name = 'vector';
8. 性能测试
使用 pgbench 进行基准测试:
# 初始化测试数据库
pgbench -U postgres -i -s 100 testdb
# 运行测试
pgbench -U postgres -c 10 -j 2 -t 1000 testdb
9. 生产环境注意事项
- 内存分配 :根据服务器内存调整
shared_buffers和work_mem。 - 向量维度:pgvector 支持最多 16000 维的向量,但高维度会显著增加索引大小。
- 常见错误:
ERROR: could not open extension control file:检查插件是否安装到正确的目录。WARNING: out of shared memory:增加shared_buffers或减少并发连接数。
10. 验证与优化
使用 EXPLAIN ANALYZE 验证查询计划:
EXPLAIN ANALYZE SELECT * FROM items ORDER BY embedding <-> '[1,2,3]' LIMIT 10;
结尾
通过以上步骤,你可以在 CentOS 上快速部署支持向量搜索的 PostgreSQL 15。对于开发环境,建议使用 docker-compose 进行隔离,避免污染主机环境。更多高级配置和优化,可以参考 PostgreSQL 官方文档(版本 15)。
