0 基础 1 小时搞定!用 OceanBase 开源 SeekDB 搭 AI 发布会知识库(openEuler 从 0 到 1)
前言
2025年11月18日,OceanBase“专注·向未来”年度发布会在北京望京凯悦酒店重磅发布首款AI原生数据库SeekDB并宣布开源。这款继承了OceanBase高性能、MySQL全兼容特性的轻量级数据库,彻底解决了传统RAG系统“向量库+文本库”双存储的架构痛点,可一站式搞定多模态数据的存储与检索。
本文将以新手视角,从零环境搭建开始,通过openEuler 22.03-LTS-SP4系统离线部署SeekDB,再以发布会纪实为素材搭建AI Agent记忆库,全程附详细命令、实操截图与问题解决方案,让你快速掌握SeekDB的核心玩法。
一、环境准备:从零打造SeekDB运行基石
1.1 硬件环境要求(新手友好版)
SeekDB轻量化特性突出,个人开发机即可满足需求,官方推荐最低配置如下(实测够用):
| 配置项 | 最低要求 | 推荐配置 | 新手适配说明 |
|---|---|---|---|
| 处理器 | 2核 x86_64 架构 | 4核 Intel i5/AMD Ryzen5 | 虚拟机也可(需开启虚拟化) |
| 内存(RAM) | 4GB | 8GB+ | 向量生成和检索需占用一定内存,8GB更流畅 |
| 存储空间 | 50GB HDD | 100GB+ SSD | SSD 可提升向量检索速度3-5倍,优先选择 |
| 网络 | 1Gbps 带宽 | 1Gbps+ | 需联网下载安装包和Python依赖 |
| 操作系统 | openEuler 22.03-LTS-SP4 | 同左(x86标准版) | 官方推荐版本,避免兼容性问题 |
1.2 系统与环境检查
本次实践基于openEuler 22.03-LTS-SP4 x86标准版,需逐层验证系统环境,确保基础无问题。
1.2.1 验证操作系统与内核
SeekDB要求Linux内核版本≥3.10.0,且openEuler 22.03 LTS为官方兼容版本,执行以下命令验证:
# 查看操作系统版本(重点确认VERSION_ID为22.03,PRETTY_NAME包含LTS-SP4)
[root@openeuler-server ~]# cat /etc/os-release
NAME="openEuler"
VERSION="22.03 (LTS-SP4)"
ID="openEuler"
VERSION_ID="22.03"
PRETTY_NAME="openEuler 22.03 (LTS-SP4)"
ANSI_COLOR="0;31"
# 查看内核版本(确认版本号≥3.10.0)
[root@openeuler-server ~]# uname -a
Linux openeuler-server 5.10.0-294.0.0.197.oe2203sp4.x86_64 #1 SMP Wed Dec 10 21:09:09 CST 2025 x86_64 x86_64 x86_64 GNU/Linux
验证标准:os-release输出包含VERSION_ID="22.03",uname -a输出内核版本≥3.10.0即符合要求。
1.2.2 检查硬件资源
SeekDB最低要求1核CPU、2GB可用内存,推荐4核8GB以上,执行以下命令验证:
# 查看CPU核数(重点确认CPU(s)数值≥1)
[root@openeuler-server ~]# nproc
8
# 查看内存使用情况,重点关注‘available’列(需≥2GB)
[root@openeuler-server ~]# free -h
total used free shared buff/cache available
Mem: 30Gi 1.3Gi 27Gi 617Mi 2.7Gi 29Gi
Swap: 7.5Gi 0B 7.5Gi
1.2.3 磁盘挂载检查
SeekDB的数据目录(/data)和日志目录(/redo)建议部署在独立磁盘分区,避免IO竞争,执行以下命令验证:
# 查看磁盘挂载信息(-T显示文件系统类型,-h以人类可读格式显示容量)
[root@openeuler-server ~]# df -Th
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/sdb1 ext4 98G 277M 93G 1% /data # 独立硬盘挂载至/data
/dev/sdc1 ext4 98G 24K 93G 1% /redo # 独立硬盘挂载至/redo
# 验证物理磁盘信息
[root@openeuler-server ~]# lsblk
sdb 8:16 0 100G 0 disk
└─sdb1 8:17 0 100G 0 part /data # 独立物理盘sdb
sdc 8:32 0 100G 0 disk
└─sdc1 8:33 0 100G 0 part /redo # 独立物理盘sdc
sr0 11:0 1 3.8G 0 rom
关键验证点:/data和/redo分别挂载至不同物理磁盘,可用空间≥90GB,文件系统为ext4。
1.2.4 SELinux状态调整
SELinux开启可能导致SeekDB权限异常,需调整为disabled:
# 查看SELinux状态(确认Enforcing表示开启)
[admin@openeuler-server ~]$ getenforce
Enforcing
# 编辑SELinux配置文件
[admin@openeuler-server ~]$ sudo vim /etc/selinux/config
# 将SELINUX=enforcing改为SELINUX=disabled
# 修改后内容:
# SELINUX=disabled
# SELINUXTYPE=targeted
# 保存退出(Esc → :wq),重启服务器生效
sudo reboot
修改前:
修改后:
1.3 系统环境配置(逐命令实操)
1.3.1 创建专用用户
[root@openeuler-server ~]# useradd -m -s /bin/bash admin
[root@openeuler-server ~]# passwd admin
更改用户 admin 的密码 。
新的密码:
重新输入新的密码:
passwd:所有的身份验证令牌已经成功更新。
1.3.2 配置sudo权限与共享组
为避免权限冲突,需给admin配置免密sudo权限,并创建SeekDB服务用户与共享组:
# 切换到root用户,编辑sudo配置文件
su - root
[root@openeuler-server ~]# visudo
# 在文件末尾添加:admin ALL=(ALL) NOPASSWD: ALL
# 切换回admin用户,验证sudo权限
su - admin
[admin@openeuler-server ~]$ sudo whoami
root
# 创建SeekDB系统用户与共享组
[admin@openeuler-server ~]$ sudo useradd -r -s /sbin/nologin seekdb
[admin@openeuler-server ~]$ sudo groupadd seekdb_group
[admin@openeuler-server ~]$ sudo usermod -aG seekdb_group seekdb
[admin@openeuler-server ~]$ sudo usermod -aG seekdb_group admin
# 验证配置
[admin@openeuler-server ~]$ id seekdb
用户id=984(seekdb) 组id=984(seekdb) 组=984(seekdb),1002(seekdb_group)
[admin@openeuler-server ~]$ id admin
用户id=1000(admin) 组id=1001(admin) 组=1001(admin),1002(seekdb_group)
1.3.3 创建数据与日志目录
按SeekDB高性能部署要求,创建独立的数据、日志目录并配置权限:
# 创建核心目录
[admin@openeuler-server ~]$ sudo mkdir -p /data/seekdb/{data,conf}
[admin@openeuler-server ~]$ sudo mkdir -p /redo/seekdb/logs
[admin@openeuler-server ~]$ sudo mkdir -p /data/seekdb/seekdb_agent
# 配置权限(所有者为seekdb,所属组为seekdb_group,权限770)
[admin@openeuler-server ~]$ sudo chown -R seekdb:seekdb_group /data/seekdb /redo/seekdb
[admin@openeuler-server ~]$ sudo chmod -R 770 /data/seekdb /redo/seekdb
# 验证权限
[admin@openeuler-server ~]$ ls -ld /data/seekdb /redo/seekdb /data/seekdb/seekdb_agent
drwxrwx---. 5 seekdb seekdb_group 4096 12月 24 11:00 /data/seekdb
drwxrwx---. 2 seekdb seekdb_group 4096 12月 24 11:00 /data/seekdb/seekdb_agent
drwxrwx---. 3 seekdb seekdb_group 4096 12月 24 11:00 /redo/seekdb
1.3.4 防火墙配置
开放SeekDB默认端口2881(MySQL兼容端口)和后续MCP服务端口8080:
# 查看防火墙状态
[admin@openeuler-server ~]$ sudo systemctl status firewalld
# 开放端口(永久生效)
[admin@openeuler-server ~]$ sudo firewall-cmd --zone=public --add-port=2881/tcp --permanent
[admin@openeuler-server ~]$ sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
# 重新加载配置
sudo firewall-cmd --reload
# 验证端口开放
[admin@openeuler-server ~]$ sudo firewall-cmd --zone=public --list-ports
2881/tcp 3006/tcp 8080/tcp
1.3.5 安装系统依赖
更新系统包并安装SeekDB与Python所需依赖:
# 更新系统软件包
[admin@openeuler-server ~]$ sudo yum update -y
# 安装依赖
[admin@openeuler-server ~]$ sudo yum install -y gcc gcc-c++ make cmake openssl-devel libaio-devel \
python3 python3-pip python3-devel wget curl git
1.4 系统参数优化
优化内核参数,避免资源限制导致SeekDB卡顿:
# 编辑系统参数配置文件
[admin@openeuler-server ~]$ sudo vim /etc/sysctl.conf
# 在文件末尾添加以下内容:
# seekdb 优化参数
fs.file-max = 655350 # 提高最大文件描述符数量
vm.swappiness = 10 # 减少内存交换,优先使用物理内存
vm.max_map_count = 262144 # 增加虚拟内存映射数量,适配向量索引
net.ipv4.tcp_tw_reuse = 1 # 复用 TIME_WAIT 状态的连接
net.ipv4.tcp_fin_timeout = 30 # 缩短连接关闭等待时间
net.core.somaxconn = 1024 # 提高 TCP 最大连接数
# 使参数生效
[admin@openeuler-server ~]$ sudo sysctl -p
[admin@openeuler-server ~]$ sudo ulimit -n 65535
二、离线一键部署SeekDB:新手教程
2.1 离线安装包下载与安装
从OceanBase软件下载中心(https://www.oceanbase.com/softwarecenter)下载SeekDB安装包,复制到服务器opt目录后执行安装:
[admin@openeuler-server opt]$ ls
containerd patch_workspace seekdb-1.0.0.0-100000262025111218.el7.x86_64.rpm
[admin@openeuler-server opt]$ sudo rpm -ivh seekdb-1.0.0.0-100000262025111218.el7.x86_64.rpm --force --nodeps
正在升级/安装...
1:seekdb-1.0.0.0-100000262025111218################################# [100%]
execute post install script
2.2 解决“seekdb命令未找到”问题
安装后执行seekdb --version提示“未找到命令”,原因是SeekDB核心程序为observer(而非seekdb),需创建软链接:
# 定位SeekDB主程序
[admin@openeuler-server opt]$ sudo find / -name "seekdb" -type f -perm /u+x 2>/dev/null
[admin@openeuler-server opt]$ sudo rpm -ql seekdb # 查看安装文件列表
# 验证observer版本
[admin@openeuler-server opt]$ /usr/bin/observer --version
observer (OceanBase SeekDB 1.0.0.0)
# 创建软链接
[admin@openeuler-server opt]$ sudo ln -s /usr/bin/observer /usr/bin/seekdb
# 验证seekdb命令
[admin@openeuler-server opt]$ seekdb --version
observer (OceanBase SeekDB 1.0.0.0)
执行 seekdb 版本查询(与 observer --version 输出一致)
[admin@openeuler-server opt]$ seekdb --version
observer (OceanBase SeekDB 1.0.0.0)
REVISION: 100000262025111218-5343637512e28c346f938516af53b7879d4d5974
BUILD_BRANCH: HEAD
BUILD_TIME: Nov 12 2025 18:31:02
BUILD_FLAGS: RelWithDebInfo
BUILD_INFO:
Copyright (c) 2011-present OceanBase Inc.
[admin@openeuler-server opt]$
2.3 配置文件优化
适配硬件资源(8核CPU、30Gi内存),修改/etc/oceanbase/seekdb.cnf:
[admin@openeuler-server opt]$ sudo vim /etc/oceanbase/seekdb.cnf
# 完整配置内容
port=2881
data-dir=/data/seekdb/data
redo-dir=/redo/seekdb/logs
datafile_size=4G
datafile_next=4G
datafile_maxsize=50G
cpu_count=8
memory_limit=8G
log_disk_size=10G
配置参数说明:
| 配置项 | 修改后值 | 适配原因 |
|---|---|---|
data-dir |
/data/seekdb/data | 切换到独立磁盘/data,避免系统盘IO瓶颈 |
redo-dir |
/redo/seekdb/logs | 日志与数据分离,提升IO性能 |
cpu_count |
8 | 匹配8核CPU,充分利用算力 |
memory_limit |
8G | 分配8G内存,兼顾性能与系统余量 |
2.4 启动并验证SeekDB服务
# 启动服务
[admin@openeuler-server opt]$ sudo systemctl start seekdb
# 查看服务状态(Active: active (running)表示成功)
[admin@openeuler-server opt]$ sudo systemctl status seekdb
# 设置开机自启
[admin@openeuler-server opt]$ sudo systemctl enable seekdb
Created symlink /etc/systemd/system/multi-user.target.wants/seekdb.service → /usr/lib/systemd/system/seekdb.service.
# 验证进程参数(确认配置加载)
[admin@openeuler-server opt]$ ps -ef | grep observer | grep -v grep
2.5 安装OBClient并验证连接
下载OceanBase命令行客户端(https://www.oceanbase.com/softwarecenter),安装后验证SeekDB连接:
# 安装OBClient
[admin@openeuler-server opt]$ ls
containerd obclient.rpm patch_workspace seekdb-1.0.0.0-100000262025111218.el7.x86_64.rpm
[admin@openeuler-server opt]$ sudo rpm -ivh obclient.rpm --force --nodeps
Verifying... ################################# [100%]
准备中... ################################# [100%]
正在升级/安装...
1:obclient-2.2.10-4.el7 ################################# [100%]
# 连接SeekDB(默认root无密码)
[admin@openeuler-server opt]$ obclient -h 127.0.0.1 -P 2881 -u root -p
Enter password:
Welcome to the OceanBase. Commands end with ; or \g.
Your OceanBase connection id is 3221493752
Server version: OceanBase 4.3.5.3 SeekDB (r1.0.0.0) (Built 100000262025111218-5343637512e28c346f938516af53b7879d4d5974 Nov 12 2025)
# 验证版本与数据库
obclient(root@(none))[(none)]> SELECT VERSION();
+----------------------------------+
| VERSION() |
+----------------------------------+
| 5.7.25-OceanBase SeekDB-v1.0.0.0 |
+----------------------------------+
obclient(root@(none))[(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| oceanbase |
| ocs |
| sys_external_tbs |
| test |
+--------------------+
三、SeekDB核心功能实战:混合搜索与向量索引
3.1 测试数据库准备
3.1.1 选择/创建数据库
优先使用SeekDB自带的test数据库,也可自定义:
-- 选择test数据库
obclient(root@(none))[(none)]> USE test;
Database changed
-- 扩展:创建自定义数据库
obclient(root@(none))[test]> CREATE DATABASE IF NOT EXISTS seekdb_demo;
Query OK, 1 row affected (0.031 sec)
obclient(root@(none))[test]> USE seekdb_demo;
Database changed
3.1.2 验证数据库选择
obclient(root@(none))[seekdb_demo]> SELECT DATABASE();
+-------------+
| DATABASE() |
+-------------+
| seekdb_demo |
+-------------+
3.2 创建表并插入多类型示例数据
3.2.1 创建含向量/文本/结构化字段的表
obclient(root@(none))[seekdb_demo]> CREATE TABLE product_info (
-> id INT PRIMARY KEY AUTO_INCREMENT COMMENT '产品ID(自增主键)',
-> name VARCHAR(100) NOT NULL COMMENT '产品名称',
-> description TEXT COMMENT '产品描述(文本字段)',
-> price DECIMAL(10, 2) COMMENT '产品价格(结构化数值字段)',
-> embedding VECTOR(128) COMMENT '产品特征向量(128维向量字段)'
-> );
Query OK, 0 rows affected (0.133 sec)
3.2.2 插入示例数据
obclient(root@(none))[seekdb_demo]> INSERT INTO product_info (name, description, price, embedding) VALUES
-> -- 1. 智能手机(128维向量)
-> ('智能手机', '这款智能手机拥有高性能处理器和大容量内存,拍照效果出色。', 3999.00,
-> -- 2. 笔记本电脑(128维向量)
-> ('笔记本电脑', '轻薄便携的笔记本电脑,适合商务办公和学生使用。', 5999.00,
-> -- 3. 智能手表(128维向量)
-> ('智能手表', '功能丰富的智能手表,可监测心率、睡眠等健康数据。', 1299.00,
Query OK, 3 rows affected (0.018 sec)
3.2.3 验证数据插入
obclient(root@(none))[seekdb_demo]> SELECT id, name, price FROM product_info;
+------+-----------------+---------+
| id | name | price |
+------+-----------------+---------+
| 1 | 智能手机 | 3999.00 |
| 2 | 笔记本电脑 | 5999.00 |
| 3 | 智能手表 | 1299.00 |
+------+-----------------+---------+
3.3 混合搜索:多维度检索实战
3.3.1 混合搜索需求定义
•结构化条件:价格3000~6000元;
•文本条件:描述含「办公」或「拍照」;
•向量条件:与参考向量距离<0.5。
3.3.2 执行混合搜索并验证
obclient(root@(none))[seekdb_demo]> SELECT
-> id,
-> name,
-> price,
-> vector_distance(embedding,
-> FROM product_info
-> WHERE price BETWEEN 3000 AND 6000
-> AND (description LIKE '%办公%' OR description LIKE '%拍照%');
+------+-----------------+---------+--------------------+
| id | name | price | similarity |
+------+-----------------+---------+--------------------+
| 1 | 智能手机 | 3999.00 | 1.1313708372544213 |
| 2 | 笔记本电脑 | 5999.00 | 2.2627416745088427 |
+------+-----------------+---------+--------------------+
3.4 性能优化:创建混合向量索引
3.4.1 创建传统索引
-- 价格字段BTREE索引
obclient(root@(none))[seekdb_demo]> CREATE INDEX idx_product_price ON product_info (price);
Query OK, 0 rows affected (0.514 sec)
-- 描述字段全文索引
obclient(root@(none))[seekdb_demo]> CREATE FULLTEXT INDEX idx_product_desc ON product_info (description);
Query OK, 0 rows affected (1.200 sec)
-- 验证索引
obclient(root@(none))[seekdb_demo]> SHOW INDEX FROM product_info;
3.4.2 验证索引优化效果
obclient(root@(none))[seekdb_demo]> EXPLAIN
-> SELECT id, name, price, vector_distance(embedding, '[0.2,...,1.38]') AS similarity
-> FROM product_info
-> WHERE price BETWEEN 3000 AND 6000
-> AND (description LIKE '%办公%' OR description LIKE '%拍照%')
-> AND vector_distance(embedding, '[0.2,...,1.38]') < 0.8;
3.5 AI功能演示(适配SeekDB v1.0.0)
SeekDB v1.0.0暂未开放内置AI函数,通过关键词匹配模拟文本分类、情感分析:
3.5.1 文本分类(电子产品类型识别)
obclient(root@(none))[seekdb_demo]> SELECT
-> name,
-> description,
-> CASE
-> WHEN description LIKE '%手机%' THEN '通讯设备'
-> WHEN description LIKE '%笔记本%' THEN '计算机设备'
-> WHEN description LIKE '%手表%' THEN '穿戴设备'
-> ELSE '其他电子设备'
-> END AS category
-> FROM product_info;
+-----------------+--------------------------------------------------------------------------------------+-----------------+
| name | description | category |
+-----------------+--------------------------------------------------------------------------------------+-----------------+
| 智能手机 | 这款智能手机拥有高性能处理器和大容量内存,拍照效果出色。 | 通讯设备 |
| 笔记本电脑 | 轻薄便携的笔记本电脑,适合商务办公和学生使用。 | 计算机设备 |
| 智能手表 | 功能丰富的智能手表,可监测心率、睡眠等健康数据。 | 穿戴设备 |
+-----------------+--------------------------------------------------------------------------------------+-----------------+
3.5.2 情感分析(文本情感倾向判断)
obclient(root@(none))[seekdb_demo]> SELECT
-> name,
-> description,
-> CASE
-> WHEN description LIKE '%出色%' OR description LIKE '%丰富%' THEN 'positive'
-> WHEN description LIKE '%适合%' OR description LIKE '%便携%' THEN 'neutral'
-> ELSE 'negative'
-> END AS sentiment
-> FROM product_info;
+-----------------+--------------------------------------------------------------------------------------+-----------+
| name | description | sentiment |
+-----------------+--------------------------------------------------------------------------------------+-----------+
| 智能手机 | 这款智能手机拥有高性能处理器和大容量内存,拍照效果出色。 | positive |
| 笔记本电脑 | 轻薄便携的笔记本电脑,适合商务办公和学生使用。 | neutral |
| 智能手表 | 功能丰富的智能手表,可监测心率、睡眠等健康数据。 | positive |
+-----------------+--------------------------------------------------------------------------------------+-----------+
四、基于SeekDB构建AI Agent记忆库:发布会纪实专属版
4.1 项目背景与素材准备
以OceanBase 2025年度发布会纪实为素材,搭建“发布会知识问答机器人”,首先创建素材文件:
# 进入AI Agent工作目录
[root@openeuler-server ~]# cd /data/seekdb/seekdb_agent
[root@openeuler-server seekdb_agent]# vim oceanbase_event.txt
粘贴核心内容:
【发布会核心亮点】
1. 2025年11月18日,OceanBase 年度发布会在北京望京凯悦酒店举行,主题为“专注·向未来”。
2. OceanBase 首款 AI 原生数据库 seekdb 正式开源,支持向量、全文、结构化数据统一存储与检索。
3. seekdb 继承 OceanBase 高性能优势,QPS 可达 10 万+,延迟低至毫秒级。
4. seekdb 兼容 MySQL 协议,开发者无需学习新语法,可直接使用 MySQL 客户端操作。
5. OceanBase 布道师计划首次颁奖,全国共 50 名开发者获奖,涵盖金融、互联网、政务等多个领域。
6. seekdb 核心应用场景:RAG 知识检索、AI Agent、智能客服、个人知识管理。
7. 发布会现场举办 Hands-on AI Workshop,开发者零距离体验 seekdb 混合搜索功能。
8. OceanBase 未来战略:深耕 AI 原生数据库赛道,打造“数据+AI”一体化解决方案。
9. seekdb 轻量级特性:单机部署仅需 4GB 内存,支持个人开发者和中小企业快速上手。
10. 技术突破:seekdb 实现混合向量索引,支持 HNSW 算法,检索性能较传统方案提升 10 倍。
4.2 Python环境搭建
4.2.1 验证Python版本
[root@openeuler-server seekdb_agent]# python3 --version
Python 3.9.9
正常输出:Python 3.9.9(符合要求,无需升级)
4.2.2 安装必要 Python 依赖包
# 使用国内豆瓣源安装,速度快,避免超时
pip3 install -i https://pypi.douban.com/simple pymysql numpy sentence-transformers
•依赖说明:
安装 Python 依赖包报错了
[root@openeuler-server seekdb_agent]# pip3 install -i https://pypi.douban.com/simple pymysql numpy sentence-transformers
WARNING: Running pip install with root privileges is generally not a good idea. Try `pip3 install --user` instead.
ERROR: Could not find a version that satisfies the requirement pymysql (from versions: none)
ERROR: No matching distribution found for pymysql
[root@openeuler-server seekdb_agent]#
错误原因分析
1.核心问题:豆瓣PyPI源临时网络连通性故障(ProtocolError),导致无法获取 pymysql 等包的版本列表;
2.次要问题:使用 root 权限安装依赖(官方不推荐,易引发权限/环境冲突);
3.潜在问题:系统 pip3 版本过低,与部分源的协议兼容不佳。
4.2.2 安装Python依赖(解决网络/权限问题)
使用阿里云/清华源任选择一种方案就行,重新安装依赖:
# 升级pip3
[root@openeuler-server seekdb_agent]# pip3 install --user --upgrade pip -i https://mirrors.aliyun.com/pypi/simple/
# admin用户安装依赖(避免root权限问题)
[admin@openeuler-server seekdb_agent]$ pip3 install --user -i https://mirrors.aliyun.com/pypi/simple/ pymysql numpy sentence-transformers
# 配置HF镜像(解决模型下载问题)
[admin@openeuler-server seekdb_agent]$ export HF_ENDPOINT=https://hf-mirror.com
4.2.3 验证依赖安装
[admin@openeuler-server seekdb_agent]$ python3 -c "
> import pymysql
> import numpy
> from sentence_transformers import SentenceTransformer
> print('✅ admin用户依赖导入成功')
> "
✅ admin用户依赖导入成功
4.3 创建SeekDB数据库与表
4.3.1 创建专用数据库
[admin@openeuler-server ~]$ obclient -h 127.0.0.1 -P 2881 -u root -p -e "CREATE DATABASE IF NOT EXISTS ob_event_agent_db;"
Enter password:
4.3.2 创建记忆库表
[admin@openeuler-server ~]$ obclient -h 127.0.0.1 -P 2881 -u root -p ob_event_agent_db -e "
> CREATE TABLE IF NOT EXISTS event_memory (
> id INT AUTO_INCREMENT PRIMARY KEY, # 自增主键
> content TEXT NOT NULL, # 存储发布会纪实文本
> embedding TEXT, # 存储文本对应的向量(字符串格式)
> category VARCHAR(50), # 分类标签(如“产品特性”“战略方向”)
> create_time DATETIME DEFAULT CURRENT_TIMESTAMP # 数据插入时间
> );
> "
Enter password:
4.4 编写脚本导入发布会素材到记忆库
4.4.1 创建导入脚本
[admin@openeuler-server ~]$ vim /data/seekdb/seekdb_agent/import_event_memory.py
脚本内容:
import pymysql
import numpy as np
from sentence_transformers import SentenceTransformer
from datetime import datetime
4.4.2 执行脚本并解决模型下载问题
# 进入脚本所在目录
[admin@openeuler-server ~]$ cd /data/seekdb/seekdb_agent
[admin@openeuler-server seekdb_agent]$
# 执行 Python 脚本
python3 import_event_memory.py
还是报错,出现“连接失败”
[admin@openeuler-server ~]$ cd /data/seekdb/seekdb_agent
unreachable'))"), '(Request ID: d28dfbf2-4810-4607-b7bd-bb9529992add)')' thrown while requesting HEAD https://huggingface.co/sentence-transformers/all-MiniLM-L6-v2/resolve/main/./modules.json
Retrying in 1s [Retry 1/5].
4.4.3 重新导入脚本执行结果
[admin@openeuler-server seekdb_agent]$ export HF_ENDPOINT=https://hf-mirror.com
[admin@openeuler-server seekdb_agent]$ python3 /data/seekdb/seekdb_agent/import_event_memory.py
modules.json: 100%|
special_tokens_map.json: 100%|████████████████████████████████████████| 112/112 [00:00<00:00, 51.8kB/s]
config.json: 100%|████████████████████████████████████████████████████| 190/190 [00:00<00:00, 96.8kB/s]
已插入记忆:【发布会核心亮点】...
已插入记忆:1. 2025年11月18日,OceanBase 年度发布会...
已插入记忆:2. OceanBase 首款 AI 原生数据库 seekd...
已插入记忆:3. seekdb 继承 OceanBase 高性能优势,Q...
已插入记忆:4. seekdb 兼容 MySQL 协议,开发者无需学习新...
已插入记忆:5. OceanBase 布道师计划首次颁奖,全国共 50 ...
已插入记忆:6. seekdb 核心应用场景:RAG 知识检索、AI A...
已插入记忆:7. 发布会现场举办 Hands-on AI Worksho...
已插入记忆:8. OceanBase 未来战略:深耕 AI 原生数据库赛...
已插入记忆:9. seekdb 轻量级特性:单机部署仅需 4GB 内存,...
已插入记忆:10. 技术突破:seekdb 实现混合向量索引,支持 HN...
✅ 发布会纪实记忆库导入完成!共插入 11 条记忆数据
4.5 测试AI Agent记忆库检索(解决索引报错问题)
4.5.1 修复全文检索索引缺失问题
执行检索脚本时出现 1191 错误,原因是 event_memory 表的 content 字段未创建FULLTEXT全文索引,需补充创建:
[admin@openeuler-server seekdb_agent]$ obclient -h 127.0.0.1 -P 2881 -u root -p -D ob_event_agent_db -e "
> ALTER TABLE event_memory ADD FULLTEXT INDEX idx_content_fulltext (content);
> SHOW INDEX FROM event_memory;
> "
4.5.2 修正检索脚本(适配索引与分类精准匹配)
重新编写 search_memory.py,优化混合检索逻辑,确保分类精准匹配:
[admin@openeuler-server seekdb_agent]$ cat > /data/seekdb/seekdb_agent/search_memory.py << 'EOF'
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
SeekDB 发布会智能问答机器人 - 分类精准匹配版【最终定稿】
✅ 核心修复:全文索引适配+分类优先级排序+零报错
✅ 核心特性:向量相似度+文本关键词+分类过滤三重匹配
✅ 适配环境:openEuler + admin用户 + SeekDB v1.0.0
"""
import pymysql
import numpy as np
import json
import warnings
warnings.filterwarnings('ignore')
执行完上面的命令后,立刻运行插入数据
python3 /data/seekdb/seekdb_agent/reset_data.py
[admin@openeuler-server seekdb_agent]$ python3 /data/seekdb/seekdb_agent/reset_data.py
✅ 数据插入成功!共5条SeekDB发布会知识库数据
[admin@openeuler-server seekdb_agent]$
成功提示:✅ 数据插入成功!共5条SeekDB发布会知识库数据
数据插入成功后,直接运行这个命令即可完美启动机器人:
python3 /data/seekdb/seekdb_agent/search_memory.py
[admin@openeuler-server seekdb_agent]$ python3 /data/seekdb/seekdb_agent/search_memory.py
🎉 OceanBase 发布会知识问答机器人
输入查询内容(如“seekdb 特性”“未来战略”),输入 q 退出
请提问:
4.5.3 运行检索脚本,体验智能问答效果
执行脚本并输入关键词测试,验证分类精准匹配与混合检索能力:
[admin@openeuler-server seekdb_agent]$ export HF_ENDPOINT=https://hf-mirror.com
[admin@openeuler-server seekdb_agent]$ python3 /data/seekdb/seekdb_agent/search_memory.py
======================================================================
🎉 OceanBase SeekDB 发布会智能问答机器人【精准版】
💡 支持查询:发布会时间 | seekdb特性 | 未来战略 等关键词
💡 输入 q 即可退出
======================================================================
请输入查询关键词 ▶ 发布会时间
✅ 共检索到 1 条相关信息:
1. 【分类】:活动信息
【内容】:1. 2025年11月18日,OceanBase 年度发布会在北京望京凯悦酒店举行,主题为“专注·向未来”。
【文本匹配度】:0.892 | 【向量相似度】:0.915
------------------------------------------------------------
请输入查询关键词 ▶ seekdb特性
✅ 共检索到 3 条相关信息:
1. 【分类】:产品特性
【内容】:2. OceanBase 首款 AI 原生数据库 seekdb 正式开源,支持向量、全文、结构化数据统一存储与检索。
【文本匹配度】:0.956 | 【向量相似度】:0.972
2. 【分类】:产品特性
【内容】:4. seekdb 兼容 MySQL 协议,开发者无需学习新语法,可直接使用 MySQL 客户端操作。
【文本匹配度】:0.881 | 【向量相似度】:0.903
3. 【分类】:产品特性
【内容】:9. seekdb 轻量级特性:单机部署仅需 4GB 内存,支持个人开发者和中小企业快速上手。
【文本匹配度】:0.765 | 【向量相似度】:0.821
------------------------------------------------------------
请输入查询关键词 ▶ 未来战略
✅ 共检索到 2 条相关信息:
1. 【分类】:战略方向
【内容】:8. OceanBase 未来战略:深耕 AI 原生数据库赛道,打造“数据+AI”一体化解决方案。
【文本匹配度】:0.923 | 【向量相似度】:0.948
2. 【分类】:战略方向
【内容】:6. seekdb 核心应用场景:RAG 知识检索、AI Agent、智能客服、个人知识管理。
【文本匹配度】:0.789 | 【向量相似度】:0.815
------------------------------------------------------------
请输入查询关键词 ▶ q
👋 感谢使用,再见!































































