安装步骤

编写脚本

Terminal window
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 ~

运行脚本

Terminal window
docker-compose -f docker-compose-pgvector.yml up -d

启动PgVector

Terminal window
docker start vector_db

查看运行状态

image-20250605165523607
image-20250605165523607

连接WSL的PgVector

开放远程登录

保存的数据在当前compose文件的同级 pgdata里面,我们需要进入修改如下两个配置。

image-20250610084336393
image-20250610084336393

  1. 配置PostgreSQL服务监听地址。默认只允许本地连接
Terminal window
vim postgresql.conf
# 添加下面配置行
listen_addresses = '*'
  1. 配置登录方式。默认只允许本地登录
Terminal window
vim pg_hba.conf
# 添加下面配置行
host all all 0.0.0.0/0 scram-sha-256

查看当前服务器IP

Terminal window
hostname -I

会有多个,第一个是当前wsl的ip,一般使用这个

添加Windows入站规则

新建如下规则

image-20250610093051870
image-20250610093051870

软件连接

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

image-20250610091712413
image-20250610091712413

安装扩展

1. 创建数据库

Terminal window
docker exec -it pgvector psql -U postgres -d ai-rag-knowledge

确保数据库 ai-rag-knowledge 已存在。如果没有,可以手动创建:

Terminal window
docker exec -it pgvector psql -U postgres -c "CREATE DATABASE \"ai-rag-knowledge\";"

2. 安装 pgvector 插件(在该数据库里)

连接成功后,执行:

Terminal window
CREATE EXTENSION IF NOT EXISTS vector;

成功会输出:

Terminal window
CREATE EXTENSION

3. 创建 vector_store 表(带有 vector 类型字段)

执行下面的 SQL(建议手动先创建):

Terminal window
CREATE TABLE IF NOT EXISTS vector_store (
id TEXT PRIMARY KEY,
content TEXT,
metadata JSONB,
embedding VECTOR(1536) -- 1536 OpenAI 向量维度,你可以根据实际情况修改
);

如果你之前建表失败,需要重建 可以先删除旧表再重建(注意数据清空):

Terminal window
DROP TABLE IF EXISTS vector_store;

然后再执行上面的 CREATE TABLE 语句。

4.验证是否成功

执行:

Terminal window
\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