企业站群cms官网免费,域名不同网站程序相同,廉政建设网站,网片【保姆级教程】CentOS 7 使用 Docker 部署 PostgreSQL pgvector#xff08;含踩坑指南#xff09; 随着大模型#xff08;LLM#xff09;和 RAG#xff08;检索增强生成#xff09;应用的兴起#xff0c;向量数据库成为了基础设施中的标配。PostgreSQL 凭借强大的 pgve…【保姆级教程】CentOS 7 使用 Docker 部署 PostgreSQL pgvector含踩坑指南随着大模型LLM和 RAG检索增强生成应用的兴起向量数据库成为了基础设施中的标配。PostgreSQL 凭借强大的pgvector插件成为了目前最流行的向量数据库解决方案之一。本文将详细介绍如何在 CentOS 7 环境下使用 Docker 和 Docker Compose 快速部署带有pgvector的 PostgreSQL1. 环境准备本教程基于以下环境进行验证建议版本接近以避免兼容性问题OS:CentOS Linux release 7.9.2009 (Core)Docker:26.1.4 (Docker Engine - Community)Docker Compose:v2.27.1前置检查确保 Docker 服务已启动。systemctl startdockerdocker--versiondockercompose version2. 部署步骤2.1 创建工作目录为了方便管理和数据持久化我们在服务器上创建一个专门的目录mkdir-p/opt/docker/pgvectorcd/opt/docker/pgvector2.2 编写 docker-compose.yml我们将使用官方推荐的pgvector/pgvector镜像该镜像基于官方 Postgres 构建并预装了 vector 扩展。创建并编辑文件vidocker-compose.yml配置内容如下services:postgres:# 推荐使用 pg16 版本性能更佳# 如果客户端工具较旧请阅读文末的“坑点排查”部分可能需要降级到 pg14image:pgvector/pgvector:pg16container_name:postgres_vectorrestart:alwaysenvironment:POSTGRES_USER:postgres# 数据库用户名POSTGRES_PASSWORD:postgres# 数据库密码# 不设置 POSTGRES_DB 时默认数据库名会与用户名一致即 postgresports:-5432:5432# 主机端口:容器端口volumes:# 数据持久化映射确保容器删除后数据不丢失# ./pgdata 代表当前目录下的 pgdata 文件夹-./pgdata:/var/lib/postgresql/data# 共享内存配置PostgreSQL 建议适当调大shm_size:1g2.3 启动服务使用 Docker Compose V2 命令启动容器如果镜像不存在会先去拉去镜像# -d 表示后台运行dockercompose up-d查看容器状态dockercomposeps状态显示Up即表示启动成功。3. 初始化 pgvector 插件容器启动后PostgreSQL 服务已经运行但需要在具体的数据库中启用vector扩展才能存储向量数据。3.1 进入容器数据库这一步有客户端工具的建议用客户端工具连接会方便好看一点比如navicat、datagrip等等就不用执行下方的代码了# 注意如果不指定数据库名(-d)默认会尝试连接与用户同名的数据库dockercomposeexecpostgres psql-Upostgres-dpostgres3.2 启用扩展在需要设置的数据库 SQL 交互界面console执行CREATEEXTENSION vector;提示CREATE EXTENSION即成功。注意扩展是“数据库级别”的。如果你以后创建了新数据库testdb需要在testdb里再次执行此命令。4. 坑点排查坑点一连接报错column datlastsysoid does not exist如果你使用 旧版Navicat、旧版 pgAdmin 或 DBeaver 连接数据库时可能会遇到如下报错ERROR: column datlastsysoid does not exist LINE 1: SELECT DISTINCT datlastsysoid FROM pg_database原因分析PostgreSQL 15 及以上版本删除了系统表中的datlastsysoid字段。如果你使用的 Docker 镜像是pg16或pg15而客户端工具如 Navicat 12/15版本较老就会因为查询不存在的字段而报错。解决方案二选一方案 A推荐升级客户端将 Navicat 升级到16.2版本。或者使用最新版的 DBeaver免费且兼容性好。IDEA内置的也可以凑活着用方案 B降级数据库版本如果你必须使用旧版 Navicat需将docker-compose.yml中的镜像改为pgvector/pgvector:pg14。警告降级版本需要删除现有的数据卷否则无法启动dockercompose downrm-rf./pgdata# 删除旧版数据# 修改 yaml 后重新启动dockercompose up-d坑点二防火墙设置如果无法从外部连接数据库注意检查 CentOS 防火墙# 检查状态systemctl status firewalld# 如果开启需放行 5432 端口firewall-cmd--zonepublic --add-port5432/tcp--permanentfirewall-cmd--reload# 或者像我一样一劳永逸直接关掉# 停止 firewalld 服务systemctl stop firewalld# 禁用 firewalld 服务防止开机自启systemctl disable firewalld# 确认状态systemctl status firewalld