Docker安装PgVector
安装步骤
编写脚本
vim docker-compose-pgvector.yml
version: '3'
services:
vector_db:
image: registry.cn-hangzhou.aliyuncs.com/xfg-studio/pgvector:v0.5.0
container_name: pgvector
restart: always
environment:
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=postgres
- POSTGRES_DB=springai
- PGPASSWORD=postgres
volumes:
- ./pgdata:/var/lib/postgresql/data
- ./pgvector/sql/init.sql:/docker-entrypoint-initdb.d/init.sql
logging:
options:
max-size: 10m
max-file: "3"
ports:
- '5432:5432'
healthcheck:
test: "pg_isready -U postgres -d springai"
interval: 2s
timeout: 20s
retries: 10
networks:
- my-network
networks:
my-network:
driver: bridge ~
运行脚本
docker-compose -f docker-compose-pgvector.yml up -d
启动PgVector
docker start vector_db
查看运行状态

连接WSL的PgVector
开放远程登录
保存的数据在当前compose文件的同级 pgdata里面,我们需要进入修改如下两个配置。

- 配置PostgreSQL服务监听地址。默认只允许本地连接
vim postgresql.conf
# 添加下面配置行
listen_addresses = '*'
- 配置登录方式。默认只允许本地登录
vim pg_hba.conf
# 添加下面配置行
host all all 0.0.0.0/0 scram-sha-256
查看当前服务器IP
hostname -I
会有多个,第一个是当前wsl的ip,一般使用这个
添加Windows入站规则
新建如下规则

软件连接
建议使用IDEA的数据库连接,Navicate的连接成功,但是访问数据库报错。

安装扩展
1. 创建数据库
docker exec -it pgvector psql -U postgres -d ai-rag-knowledge
确保数据库 ai-rag-knowledge 已存在。如果没有,可以手动创建:
docker exec -it pgvector psql -U postgres -c "CREATE DATABASE \"ai-rag-knowledge\";"
2. 安装 pgvector 插件(在该数据库里)
连接成功后,执行:
CREATE EXTENSION IF NOT EXISTS vector;
成功会输出:
CREATE EXTENSION
3. 创建 vector_store 表(带有 vector 类型字段)
执行下面的 SQL(建议手动先创建):
CREATE TABLE IF NOT EXISTS vector_store (
id TEXT PRIMARY KEY,
content TEXT,
metadata JSONB,
embedding VECTOR(1536) -- 1536 是 OpenAI 向量维度,你可以根据实际情况修改
);
如果你之前建表失败,需要重建 可以先删除旧表再重建(注意数据清空):
DROP TABLE IF EXISTS vector_store;
然后再执行上面的 CREATE TABLE 语句。
4.验证是否成功
执行:
\d+ vector_store
你应当看到类似输出:
ai-rag-knowledge=# \d+ vector_store
Table "public.vector_store"
Column | Type | Collation | Nullable | Default | Storage | Compression | Stats target | Description
-----------+--------------+-----------+----------+---------+----------+-------------+--------------+-------------
id | text | | not null | | extended | | |
content | text | | | | extended | | |
metadata | jsonb | | | | extended | | |
embedding | vector(1536) | | | | extended | | |
Indexes:
"vector_store_pkey" PRIMARY KEY, btree (id)
Access method: heap
贡献者
flycodeu
版权所有
版权归属:flycodeu