5 分钟部署 pgvector
·
🚀 5 分钟部署 pgvector:从 Supabase 官方镜像提取纯向量数据库
不想折腾编译?不想用 Docker Hub 上来源不明的镜像?这里有一条从官方 Supabase 仓库提取纯净 PostgreSQL + pgvector的捷径。
最终效果
- ✅ 只跑 1 个容器(原版 Supabase 启动 14 个)
- ✅ 官方维护的 Postgres 15 + 预置 pgvector
- ✅ 5432 端口直接暴露,无需 Kong 网关
- ✅ 数据持久化到本地,重启不丢
一键部署
1. 克隆仓库
git clone --depth 1 https://github.com/supabase/supabase
cd supabase/docker
2. 拉取镜像(约 1GB,耐心等待)
docker compose pull
3. 写入精简配置(只保留数据库)
这里建议先备份
# 2. 备份原文件(以防万一)
cp docker-compose.yml docker-compose.yml.full
停掉所有容器
docker compose down
cat > docker-compose.yml << 'EOF'
name: pgvector
services:
db:
container_name: pgvector-db
image: supabase/postgres:15.8.1.085
restart: unless-stopped
ports:
- "${POSTGRES_PORT:-5432}:5432"
environment:
POSTGRES_PASSWORD: "${POSTGRES_PASSWORD:-your_password}"
POSTGRES_DB: "${POSTGRES_DB:-postgres}"
PGPORT: 5432
PGPASSWORD: "${POSTGRES_PASSWORD:-your_password}"
volumes:
- ./volumes/db/data:/var/lib/postgresql/data:Z
- db-config:/etc/postgresql-custom
healthcheck:
test: ["CMD", "pg_isready", "-U", "postgres", "-h", "localhost"]
interval: 5s
timeout: 5s
retries: 10
command:
- "postgres"
- "-c"
- "config_file=/etc/postgresql/postgresql.conf"
- "-c"
- "log_min_messages=fatal"
volumes:
db-config:
EOF
4. 启动服务
docker compose up -d
5. 启用 pgvector 扩展
docker exec -it pgvector-db psql -U postgres -c "CREATE EXTENSION IF NOT EXISTS vector;"
6. 验证安装
docker exec -it pgvector-db psql -U postgres -c "SELECT * FROM pg_extension WHERE extname = 'vector';"
看到输出即成功:
oid | extname | extowner | extnamespace | extrelocatable | extversion | extconfig | extcondition
--------+---------+----------+--------------+----------------+------------+-----------+--------------
16388 | vector | 10 | 2200 | t | 0.7.0 | |
7. 如果没有, 则安装 pgvector
在 psql 中执行:
docker exec -it pgvector-db psql -U postgres
CREATE EXTENSION vector;
然后验证:
SELECT * FROM pg_extension WHERE extname = 'vector';
如果看到类似这样的结果,就说明安装成功了:
oid | extname | extowner | extnamespace | extrelocatable | extversion | extconfig | extcondition
--------+---------+----------+--------------+----------------+------------+-----------+--------------
16388 | vector | 10 | 2200 | t | 0.7.0 | |
(1 row)
如果报错 “extension ‘vector’ is not available”
说明这个 Supabase 镜像版本可能没有预装 pgvector。
快速测试
docker exec -it pgvector-db psql -U postgres << 'EOF'
CREATE TABLE IF NOT EXISTS items (
id bigserial PRIMARY KEY,
embedding vector(3)
);
INSERT INTO items (embedding) VALUES ('[1,2,3]'), ('[4,5,6]'), ('[7,8,9]');
SELECT id, embedding, embedding <-> '[3,1,2]' AS distance
FROM items
ORDER BY distance
LIMIT 2;
EOF
连接信息
| 参数 | 值 |
|---|---|
| Host | localhost 或服务器 IP |
| Port | 5432 |
| Database | postgres |
| Username | postgres |
| Password | your_password(或 .env 中自定义) |
连接字符串:
postgresql://postgres:your_password@localhost:5432/postgres
为什么选这条路?
| 方案 | 容器数 | 来源 | 备注 |
|---|---|---|---|
| Supabase 全套 | 14 个 | 官方 | Kong 权限问题、资源占用高 |
ankane/pgvector | 1 个 | 社区 | 需信任第三方镜像 |
| 本方案 | 1 个 | 官方 | 从 Supabase 官方镜像提取,无额外信任成本 |
清理(如需重装)
# 停止并删除容器
docker compose down
# 删除数据(⚠️ 谨慎操作)
rm -rf ./volumes/db/data
# 重新来过
docker compose up -d
更多推荐



所有评论(0)