OpenGauss DataVec向量数据库部署指南:CentOS7云服务器+Docker方案
2025-12-16 17:24:58
🔧 1. 安装 Docker
1.1 安装依赖包
# 作为 root 用户执行
yum install -y yum-utils device-mapper-persistent-data lvm2

1.2 添加 Docker 仓库
# 添加官方 Docker 仓库
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 或使用阿里云镜像(国内加速)
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

1.3 安装 Docker 引擎
# 安装最新版本
yum install -y docker-ce docker-ce-cli containerd.io
# 启动 Docker 服务
systemctl start docker
systemctl enable docker
# 验证安装
docker --version
# 应该显示类似:Docker version 24.0.7, build afdd53b


1.4 配置 Docker 镜像加速(国内用户必需)
# 创建或编辑 daemon.json
mkdir -p /etc/docker
cat > /etc/docker/daemon.json <<EOF
{
"registry-mirrors": [
"https://docker.mirrors.ustc.edu.cn",
"https://hub-mirror.c.163.com",
"https://mirror.baidubce.com"
]
}
EOF
# 重启 Docker 服务
systemctl daemon-reload
systemctl restart docker

🐳 2. 部署 openGauss DataVec 容器
2.1 拉取官方镜像
# 拉取 DataVec 镜像
docker pull opengauss/opengauss:6.0.0-rc1-davec
# 验证镜像
docker images | grep opengauss
2.2 创建数据目录(持久化存储)
# 创建数据目录
mkdir -p /opt/opengauss_vec/data
mkdir -p /opt/opengauss_vec/logs
chown -R 1000:0 /opt/opengauss_vec # openGauss 容器使用 UID 1000
2.3 启动 DataVec 容器
# 启动容器(推荐配置)
docker run -d \
--name opengauss_vec \
-p 5432:5432 \
-e GS_PASSWORD=OpenGauss@123 \
-e DATACHECK=false \
-e MAX_PREPARED_TRANSACTIONS=1000 \
-v /opt/opengauss_vec/data:/var/lib/opengauss \
-v /opt/opengauss_vec/logs:/var/log/opengauss \
--restart unless-stopped \
opengauss/opengauss:6.0.0-rc1-davec
# 验证容器状态
docker ps -f name=opengauss_vec
2.4 等待初始化完成
# 查看日志,等待数据库启动完成
docker logs -f opengauss_vec
# 当看到类似以下日志时,表示启动成功:
# "database system is ready to accept connections"
🔍 3. 连接并测试 DataVec
3.1 进入容器执行 gsql
# 进入容器
docker exec -it opengauss_vec bash
# 切换到数据库用户
su - omm
# 连接数据库
gsql -d postgres -p 5432
3.2 验证 DataVec 功能
-- 检查 DataVec 扩展是否已启用
SELECT * FROM pg_extension WHERE extname = 'datavec';
-- 检查支持的向量类型
SELECT typname FROM pg_type WHERE typname LIKE 'vector%';
-- 创建测试数据库
CREATE DATABASE vec_test;
\c vec_test
-- 创建向量表
CREATE TABLE items (
id SERIAL PRIMARY KEY,
name VARCHAR(50),
embedding vector(3)
);
-- 插入测试数据
INSERT INTO items (name, embedding) VALUES
('item1', '[1,2,3]'),
('item2', '[4,5,6]'),
('item3', '[7,8,9]');
-- 执行相似度搜索(L2 距离)
SELECT
id,
name,
embedding <-> '[1,2,4]' as l2_distance,
embedding <=> '[1,2,4]' as cosine_distance
FROM items
ORDER BY l2_distance
LIMIT 2;
-- 创建向量索引
CREATE INDEX idx_items_embedding ON items USING ivfflat (embedding vector_l2_ops) WITH (lists = 3);
-- 带索引的查询
EXPLAIN ANALYZE
SELECT id, name, embedding <-> '[1,2,4]' as distance
FROM items
ORDER BY embedding <-> '[1,2,4]'
LIMIT 2;
3.3 退出容器
# 退出 gsql
\q
# 退出容器
exit
exit
🚀 4. 本地连接测试(从宿主机)
4.1 安装客户端工具
# 在宿主机安装 openGauss 客户端
yum install -y https://opengauss.obs.cn-south-1.myhuaweicloud.com/6.0.0-rc1/x86_openEuler/openGauss-6.0.0-RC1-client.tar.gz
4.2 连接 DataVec 容器
# 连接容器数据库
gsql -d postgres -U omm -h 127.0.0.1 -p 5432 -W OpenGauss@123
# 测试查询
SELECT version();
SELECT current_database();
📊 5. 高级测试脚本
5.1 创建大规模测试数据
-- 连接到 vec_test 数据库
\c vec_test
-- 创建大表
CREATE TABLE large_embeddings (
id BIGSERIAL PRIMARY KEY,
text_content TEXT,
embedding vector(768),
metadata JSONB,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- 插入 10,000 条随机向量数据
INSERT INTO large_embeddings (text_content, embedding, metadata)
SELECT
'document_' || i,
ARRAY(
SELECT random() FROM generate_series(1, 768)
)::vector(768),
jsonb_build_object(
'category', CASE WHEN i % 3 = 0 THEN 'tech'
WHEN i % 3 = 1 THEN 'business'
ELSE 'other' END,
'score', round((random() * 100)::numeric, 2)
)
FROM generate_series(1, 10000) as i;
-- 创建 HNSW 索引(高性能)
CREATE INDEX idx_large_embeddings_hnsw ON large_embeddings
USING hnsw (embedding vector_cosine_ops) WITH (m = 16, ef_construction = 64);
5.2 融合查询测试
-- 向量搜索 + 标量过滤
SELECT
id,
text_content,
1 - (embedding <=> (SELECT embedding FROM large_embeddings WHERE id = 1)) as similarity,
metadata->>'category' as category,
(metadata->>'score')::float as score
FROM large_embeddings
WHERE metadata->>'category' = 'tech'
AND (metadata->>'score')::float > 70
ORDER BY embedding <=> (SELECT embedding FROM large_embeddings WHERE id = 1)
LIMIT 10;
🛠️ 6. 常用容器管理命令
# 查看容器状态
docker ps -a
# 停止容器
docker stop opengauss_vec
# 启动容器
docker start opengauss_vec
# 重启容器
docker restart opengauss_vec
# 查看日志
docker logs -f --tail 100 opengauss_vec
# 进入容器执行命令
docker exec -it opengauss_vec bash
# 删除容器(谨慎使用)
docker stop opengauss_vec
docker rm opengauss_vec
💡 重要提示
- 端口冲突:如果宿主机已使用 5432 端口,修改映射端口:
-p 5433:5432 # 将容器 5432 映射到宿主机 5433
- 内存限制:DataVec 需要足够的内存,建议容器至少分配 4GB:
--memory=4g --memory-swap=4g
- 持久化存储:
/opt/opengauss_vec/data目录包含所有数据库数据,备份此目录即可备份数据库。 - 生产环境配置:
- 使用
--restart always确保容器自动重启 - 配置适当的内存和 CPU 限制
- 设置监控和日志轮转
- 国内网络优化:
- 使用阿里云/腾讯云等国内镜像加速
- 如果下载速度慢,可以考虑使用国内镜像仓库
- 配置代理:
export http_proxy=http://your-proxy:port
通过 Docker 方式部署,你可以在几分钟内获得一个完整可用的 DataVec 向量数据库,无需手动配置复杂的扩展文件。这是目前最简单、最可靠的部署方式!
声明:该内容由作者自行发布,观点内容仅供参考,不代表平台立场;如有侵权,请联系平台删除。


