共计 1950 个字符,预计需要花费 5 分钟才能阅读完成。
环境准备
在开始安装之前,确保你的 CentOS 系统满足以下要求:

- CentOS 7 或 8(本文以 CentOS 7 为例)
- 至少 2GB 内存(向量计算较耗资源)
- 10GB 可用磁盘空间
- 已配置 sudo 权限的用户
首先更新系统并安装基础依赖:
sudo yum update -y
sudo yum install -y epel-release
sudo yum groupinstall -y "Development Tools"
YUM 源配置
PostgreSQL 官方提供了针对不同 Linux 发行版的 YUM 仓库,我们需要先添加 PG 15 的仓库:
- 安装仓库 RPM 包
sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
- 验证仓库是否添加成功
sudo yum list postgresql15*
应该能看到可用的 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
安装向量插件
pgvector 是 PostgreSQL 的向量搜索插件,需要从源码编译安装:
- 安装依赖
sudo yum install -y postgresql15-devel
- 下载并编译 pgvector
cd /tmp
git clone https://github.com/pgvector/pgvector.git
cd pgvector
make PG_CONFIG=/usr/pgsql-15/bin/pg_config
sudo make PG_CONFIG=/usr/pgsql-15/bin/pg_config install
- 加载插件到数据库
首先切换到 postgres 用户:
sudo -i -u postgres
psql
然后在 psql 中执行:
CREATE EXTENSION vector;
配置优化
编辑 PostgreSQL 配置文件进行性能调优:
- 主配置文件
sudo vim /var/lib/pgsql/15/data/postgresql.conf
建议修改以下参数:
shared_buffers = 1GB # 25% of total RAM
work_mem = 16MB # 每个查询操作的内存
maintenance_work_mem = 256MB # 维护操作的内存
random_page_cost = 1.1 # SSD 存储建议值
effective_cache_size = 3GB # 50-75% of total RAM
- 重启服务使配置生效
sudo systemctl restart postgresql-15
验证测试
让我们创建一个测试表并执行向量搜索:
-- 创建测试表
CREATE TABLE items (
id serial PRIMARY KEY,
name varchar(100),
embedding vector(1536) -- 假设我们使用 1536 维向量
);
-- 插入测试数据
INSERT INTO items (name, embedding) VALUES
('item1', '[1,2,3]'),
('item2', '[4,5,6]'),
('item3', '[7,8,9]');
-- 执行相似度搜索
SELECT id, name, embedding <-> '[3,1,2]' AS distance
FROM items
ORDER BY embedding <-> '[3,1,2]'
LIMIT 3;
生产环境注意事项
- 权限管理
- 为应用创建专用用户
-
使用 GRANT 精细控制访问权限
-
备份策略
- 配置 pg_dump 定时任务
-
考虑使用 WAL 归档
-
性能监控
- 安装 pg_stat_statements 扩展
- 配置 Prometheus + Grafana 监控
常见问题排查
- 插件加载失败
- 确保编译时使用了正确的 PG_CONFIG 路径
-
检查 PostgreSQL 日志中的具体错误
-
向量维度不匹配
-
创建表时定义的向量维度必须与实际插入数据一致
-
性能问题
- 确保配置了足够的 shared_buffers
-
考虑为向量列创建索引
-
连接数不足
- 增加 max_connections 参数
-
使用连接池如 pgBouncer
-
依赖冲突
- 如果已有其他版本 PostgreSQL,确保 PATH 环境变量正确
通过以上步骤,你应该已经成功在 CentOS 系统上搭建了支持向量搜索的 PostgreSQL 15 数据库环境。可以根据实际应用需求调整向量维度和搜索算法参数。
正文完
发表至: 数据库
近两天内
