通过 SQL 快速体验向量搜索
seekdb 支持通过 SDK 或者 SQL 方式使用。本文介绍如何通过 SQL 快速体验向量搜索。
有关通过 SDK 使用 seekdb 的介绍,参见 通过 Python SDK 体验嵌入式 seekdb。
在本示例中,我们将进行以下操作:
- 部署服务器模式 seekdb。
- 连接到 seekdb。
- 创建数据库。
- 创建表并插入数据。
- 执行向量搜索。
- 清理环境。
部署模式
seekdb 提供了多种灵活的部署模式,从快速原型开发到支撑海量用户,全面满足您的应用需求。
-
嵌入式模式
seekdb 以轻量级库的形式嵌入您的应用,支持 pip 一键安装。适用于个人学习、快速原型开发,并可高效运行于多种端侧设备。
-
服务器模式
推荐用于测试及生产环境的部署模式,轻量易用,适合稳定高效地提供服务。
关于 seekdb 更详细和更全面的部署方式,参见 部署概述。
步骤一:部署服务器模式 seekdb
- CentOS/RHEL 系统
- Debian/Ubuntu 系统
- macOS 系统
- 容器环境
前提条件
-
您使用的环境是 RPM 平台系统,目前已验证支持的系统如下。
-
Anolis OS 8.X 版本(内核 Linux 4.19 版本及以上)
-
Anolis OS 23.X 版本(内核 Linux 6.6 版本及以上)
-
Centos Linux 7.X、9.X 版本(内核 Linux 4.19 版本及以上)
-
openEuler 22.03 和 24.03 版本(内核 Linux 5.10.0 版本及以上)
-
-
当前环境中 CPU 最低要求 1 核。
-
当前环境中的可用内存最低要求 2G。
-
您环境中已安装 MySQL 客户端。
-
您使用的用户已具有执行 sudo 命令的权限。
-
您环境中已安装 jq 命令行工具,并正确配置了 systemd 作为系统和服务管理器。
快速部署 seekdb 环境
-
安装 seekdb。
curl -fsSL https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/download-center/opensource/seekdb/seekdb_install.sh | sudo bash -
启动 seekdb。
sudo systemctl start seekdb -
查看 seekdb 的启动状态。
sudo systemctl status seekdb当状态显示为
Service is ready时,表示 seekdb 已正常启动。
前提条件
-
您使用的环境是 DEB 平台系统,目前已验证支持的系统如下。
- Debian 11、12 和 13 版本(内核 Linux 4.19 版本及以上)
- Ubuntu 20.04、22.04 和 24.04 版本(内核 Linux 4.19 版本及以上)
-
当前环境中 CPU 最低要求 1 核。
-
当前环境中的可用内存最低要求 2G。
-
您环境中已安装 MySQL 客户端。
-
您使用的用户已具有执行 sudo 命令的权限。
-
您环境中已安装 jq 命令行工具,并正确配置了 systemd 作为系统和服务管理器。
快速部署 seekdb 环境
-
添加 seekdb 镜像源。
echo "deb [trusted=yes] http:/mirrors.aliyun.com/oceanbase/community/stable/$(lsb_release -is | awk '{print tolower($0)}')/$(lsb_release -cs)/$(dpkg --print-architecture)/ ./" | tee /etc/apt/sources.list.d/oceanbase.list -
安装 seekdb。
sudo apt update
sudo apt install seekdb -
启动 seekdb。
sudo systemctl start seekdb -
查看 seekdb 的启动状态。
sudo systemctl status seekdb当状态显示为
Service is ready时,表示 seekdb 已正常启动。
前提条件
-
您的 Mac 版本为 15 以上。
-
当前环境中 CPU 最低要求 1 核。
-
当前环境中的可用内存最低为 2G。
-
您环境中已安装数据库连接工具(MySQL 客户端)。
快速部署 seekdb 环境
-
添加 seekdb 镜像源
brew tap oceanbase/seekdb -
安装 seekdb
brew install seekdb -
启动 seekdb
seekdb-start
前提条件
开始部署前,您需确认环境满足以下要求:
-
您的机器需至少有 1 个物理核心和 2GB 内存。
-
您已安装 Docker 并启动 Docker 服务。
快速部署 seekdb 容器环境
如果您的环境中已安装 Docker 并启动 Docker 服务,也可以使用 Docker 容器部署 seekdb。有关 docker 部署的详细信息,请参考 部署 seekdb 容器环境。
直接启动 seekdb 实例。
sudo docker run -d -p 2881:2881 oceanbase/seekdb
若拉取 Docker 镜像失败,您也可从 quay.io 或者 ghcr.io 仓库中拉取镜像,只需将上述拉取命令中的 oceanbase/seekdb 对应替换为 >quay.io/oceanbase/seekdb 或 ghcr.io/oceanbase/seekdb,如执行 sudo docker run -d -p 2881:2881 quay.io/oceanbase/seekdb 从 quay.io 中拉取镜像。
步骤二:连接 seekdb
使用 MySQL 客户端连接 seekdb,具体连接命令如下:
mysql -h127.0.0.1 -uroot -P2881 -p****** -A
步骤三:创建数据库
创建名为 my_test 的数据库。您也可以选择使用 seekdb 的默认数据库 test 进行体验。
-
创建数据库。
create database my_test; -
切换到自定义数据库。
use my_test;
步骤四:创建示例表并插入数据
-
创建向量列和索引
创建表时,可以使用
VECTOR(dim)数据类型声明指定列为向量列及其维度。向量索引需要创建在向量列上,且至少需要提供type和distance两个参数。示例中创建向量列
embedding,向量数据维度为3,并在embedding列上创建 HNSW 索引,指定距离算法为 L2。CREATE TABLE t1(
id INT PRIMARY KEY,
doc VARCHAR(200),
embedding VECTOR(3),
VECTOR INDEX idx1(embedding) WITH (distance=L2, type=hnsw)
); -
插入数据。
INSERT INTO t1
VALUES (1, '苹果', '[1.2,0.7,1.1]'),
(2, '香蕉', '[0.6,1.2,0.8]'),
(3, '橙子','[1.1,1.1,0.9]'),
(4, '胡萝卜', '[5.3,4.8,5.4]'),
(5, '菠菜', '[4.9,5.3,4.8]'),
(6, '西红柿','[5.2,4.9,5.1]');
步骤五:执行向量搜索
进行向量搜索需要提供向量作为搜索条件。假设我们需要找到所有 '水果',其对应的向量为 [0.9, 1.0, 0.9],则对应 SQL 为:
SELECT id, doc FROM t1
ORDER BY l2_distance(embedding, '[0.9, 1.0, 0.9]')
APPROXIMATE LIMIT 3;
预期返回结果如下:
+----+--------+
| id | doc |
+----+--------+
| 3 | 橙子 |
| 2 | 香蕉 |
| 1 | 苹果 |
+----+--------+
3 rows in set
步骤六:清理环境
如果您不再需要上述示例数据库和表,可以执行以下操作删除。
-
删除示例表。
DROP TABLE t1; -
删除自定义数据库。
DROP DATABASE my_test;
更多操作
您可以进一步体验 seekdb 的 AI Native 特性以及尝试基于 seekdb 搭建 AI 应用: