最近参加了中科院举办的开源之夏活动,我申请的项目大概可以描述为利用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的官网连接如下:

https://dbeaver.io/download/

下载后打开软件点击左上角“文件”中的“新建”,选择数据库连接,点击下一步后,搜索选择PostgreSQL数据库(因为openGauss数据库是在该数据库基础上开发的,兼容相关特性),再点击下一步。

  • 主机 (Host): localhost
  • 端口 (Port): 8888
  • 数据库 (Database): postgres
  • 用户名 (Username): app_user
  • 密码 (Password): AppUserPassword123 (你在第二步中为新用户设置的密码)

填写好上述信息即可成功连接该数据库,至此已完成数据库相关的环境配置和连接,下一篇文章将介绍一下,java相关环境配置以及我如何实现openGauss官方文档中“Spring Boot集成openGauss DataVec实现高效RAG知识问答”的demo。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐