从零到一:构建基于 openGauss 向量数据库的 RAG 应用(超详细填坑指南)------(1)
摘要:本文记录了作者参与中科院开源之夏活动,探索使用openGauss向量数据库开发AI应用的过程。文章详细介绍了openGauss数据库的特点及其向量扩展功能,并分享了通过Docker部署openGauss的环境配置经验,包括容器启动、数据库连接设置、新用户创建等关键步骤。作者还展示了使用DBeaver工具连接数据库的方法,为后续实现RAG知识问答系统打下基础。该文档既是项目记录,也是学习笔记,
最近参加了中科院举办的开源之夏活动,我申请的项目大概可以描述为利用openGauss向量数据库实现一个AI应用,可能包括RAG、MCP等相关技术。不过刚刚处于起步阶段,后续具体做成什么样子还不清楚,在此做一个简单的记录,也当是自己的学习笔记了。

首先先简单介绍一下openGauss向量数据库,openGauss数据库是一款华为公司基于PostgreSQL数据库的关系型数据库。在后续版本扩展了DataVec,支持向量存储,从而可以应用于各种AI开发当中。在传统关系型数据库中,如 openGauss 通常以结构化方式存储和检索数据,擅长处理高一致性、高事务性的应用场景。然而,随着人工智能特别是大模型与语义检索的发展,传统数据库在处理非结构化数据(如文本、图像、音频)的向量表示方面面临性能与表达能力的挑战。此时,向量数据库应运而生,专门用于高效地存储、索引和检索高维向量数据,例如文本 Embedding 或图像特征。
接下来进入正文,首先在开始一系列相关的工作之前,先确定一个大致的方向。我去看了openGauss官方的文档,里面有一个Spring Boot集成openGauss DataVec实现高效RAG知识问答的demo,准备先从这个小案例开始。该案例主要还是java的三层架构来开发,不过官方文档只搭建了架子,具体的代码部分还需要自行解决。本章首先讲一下我在环境配置方面遇到的一些“坑”。
使用 Docker 部署 openGauss 数据库
这是整个环境的基础。通过 Docker,我们可以快速启动一个隔离的、配置好的 openGauss 实例。
1.拉取dockerhub镜像
docker pull opengauss/opengauss:latest
2.验证镜像状态
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
opengauss/opengauss latest 9aa832ba6684 2 hours ago 1.44GB
3.确定镜像下载好后运行容器
docker run --name opengauss --privileged=true -d -e GS_PASSWORD=YourPassoword -p 8888:5432 opengauss/opengauss:latest
启动参数
--name opengauss:为容器命名为opengauss--privileged=true: 授予容器特权模式-d: 以后台模式运行容器-p 8888:5432: 将容器的5432端口映射到宿主机的8888端口
这里密码记得包含大写、小写、数字和特殊字符,这步完成后即可运行容器。。密码用于设置 openGauss 数据库的超级用户omm。安装过程中将默认创建omm超级用户,该用户名目前无法更改。
4.容器运行测试
docker ps
若看到类似于如下输出,则证明容器已经正常运行
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7abc538f242a opengauss/opengauss:latest "entrypoint.sh gauss…" About a minute ago Up About a minute 0.0.0.0:8888->5432/tcp opengauss
5.容器内部连接数据库
docker exec -it opengauss bash
登录omm超级用户:
su omm # 切换到omm超级用户
gsql -d postgres -p 5432 # 进入内部的postgres数据库
看到如下输出说明成功进入
gsql ((openGauss-lite 7.0.0-RC1 build 10d38387) compiled at 2025-03-21 18:39:45 commit 0 last mr release)
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help.
可以使用\l查看共有哪些数据库
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+-------+----------+------------+------------+-------------------
mydb | omm | UTF8 | en_US.utf8 | en_US.utf8 |
omm | omm | UTF8 | en_US.utf8 | en_US.utf8 |
postgres | omm | UTF8 | en_US.utf8 | en_US.utf8 |
template0 | omm | UTF8 | en_US.utf8 | en_US.utf8 | =c/omm +
| | | | | omm=CTc/omm
template1 | omm | UTF8 | en_US.utf8 | en_US.utf8 | =c/omm +
| | | | | omm=CTc/omm
(5 rows)
至此已经成功配置好数据库的环境,具体操作数据库的指令可以询问AI!
利用DBeaver数据库连接软件
刚刚我们已经通过docker容器配置好了数据库的连接,接下来我们使用一个工具方便查看数据库的信息。配置好的图片中我们可以看到数据库中的具体信息了。

在这里可以很清楚的看见经过Embedding之后数据以向量的形式存储在数据库中了,也是非常的直观啊!好的接下来就进入到相关的配置中。
相关配置
在进行DBeaver连接之前我们还需要更改一下opengauss数据库的相关配置,新安装的 openGauss 出于安全考虑,默认不允许外部网络连接,我们需要修改配置来打开这个“大门”。
1.进入容器的命令行环境
docker exec -it opengauss bash
执行后,你将以root用户身份进入容器内部。
2.修改客户端认证文件pg_hba.conf
这个文件定义了谁可以连接数据库。我们需要修改它,以允许使用更安全的sha256密码认证。
sed -i 's/host all all 0.0.0.0\/0 md5/host all all 0.0.0.0\/0 sha256/' /var/lib/opengauss/data/pg_hba.conf
3.修改主配置文件postgresql.conf:
我们需要修改两个设置:让数据库监听所有网络接口,并允许初始用户远程登录(这在开发阶段非常方便)。
sed -i '/listen_addresses/d' /var/lib/opengauss/data/postgresql.conf
echo "listen_addresses = '*'" >> /var/lib/opengauss/data/postgresql.conf
4. 重启容器以应用所有更改
配置修改后不会立即生效,必须重启容器。
首先,退出容器的命令行:
exit
然后,在你的电脑终端中执行重启命令:
docker restart opengauss
以 omm 用户身份在容器内部创建新用户
由于 omm 用户不能从外部登录,我们必须进入容器内部,以“本地连接”的方式使用它的最高权限。
1.进入容器并切换到omm用户
docker exec -it opengauss /bin/bash
su - omm
2.使用gsql命令行工具连接到数据库
gsql -d postgres -p 5432
3.在gsql的提示符下,执行 SQL 命令创建新用户
我们将新用户命名为app_user(自行决定),并授予其管理员权限(在开发中较为方便)
CREATE USER app_user WITH PASSWORD 'AppUserPassword123';
ALTER USER app_user SYSADMIN;
请务必将AppUserPassword123替换为你为新用户设置的强密码。
4.创建成功后,退出gsql和容器。
至此所有前置配置已经解决接下来,我们就去DBeaver中连接数据库吧
使用新创建的用户配置 DBeaver
DBeaver的官网连接如下:
下载后打开软件点击左上角“文件”中的“新建”,选择数据库连接,点击下一步后,搜索选择PostgreSQL数据库(因为openGauss数据库是在该数据库基础上开发的,兼容相关特性),再点击下一步。
- 主机 (Host): localhost
- 端口 (Port): 8888
- 数据库 (Database): postgres
- 用户名 (Username): app_user
- 密码 (Password): AppUserPassword123 (你在第二步中为新用户设置的密码)
填写好上述信息即可成功连接该数据库,至此已完成数据库相关的环境配置和连接,下一篇文章将介绍一下,java相关环境配置以及我如何实现openGauss官方文档中“Spring Boot集成openGauss DataVec实现高效RAG知识问答”的demo。
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐



所有评论(0)