跳到主要内容

seekdb VectorDBBench 测试

VectorDBBench 是一款为主流向量数据库和云服务提供基准测试结果的工具,本文档通过 VectorDBBench 测试 seekdb 的性能。VectorDBBench 的设计注重易用性,可以轻松复现结果或测试新系统。

准备工作

  • seekdb:使用服务器模式 seekdb,详细部署操作请参考 通过 yum install 部署 seekdb

  • 部署的 seekdb 所对应的日志盘、clog 盘、data 盘分三块盘,性能级别 PL1,即在启动 seekdb 时,需在 /etc/oceanbase/seekdb.cnf 下设置以下参数:

    port=2881
    base-dir=/data/1/seekdb
    data-dir=/data/2/seekdb
    redo-dir=/data/3/seekdb
    提示

    若测试的 seekdb 规格为 1C2G 时,需要设置参数 memory_limit=2G

  • 安装 Python 3.11 及以上版本。示例使用 Conda 安装。

    # 下载安装 Conda
    mkdir -p ~/miniconda3
    wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O ~/miniconda3/miniconda.sh
    bash ~/miniconda3/miniconda.sh -b -u -p ~/miniconda3
    rm ~/miniconda3/miniconda.sh

    # 重新打开终端,初始化 Conda
    source ~/miniconda3/bin/activate
    conda init --all

    # 新建和初始化 VectorDBBench 所需的 Python 环境
    conda create -n vdb python=3.11
    conda activate vdb

测试方案

  • 本次测试需使用到 2 台机器,VectorDBBench 部署在一台机器上。seekdb 部署在另一台机器上,seekdb 的规格为 4C8G 或者 1C2G,其日志盘、clog 盘、data 盘分三块盘,性能级别 PL1。

  • 使用的数据集为 Performance1536D50K,索引类型为 HNSW,通过 VectorDBBench 测试 seekdb 的 qps、latency(p99)、召回率情况。

测试方法

克隆 VectorDBBench 代码

提示

建议将 VectorDBBench 和 seekdb 部署在不同机器上,以避免 CPU 资源争夺,提高测试结果的可靠性。

克隆测试工具 VectorDBBench 代码到本地。

git clone https://github.com/zilliztech/VectorDBBench.git

安装依赖

进入 VectorDBBench 目录安装依赖。

cd VectorDBBench
pip install .

运行测试

运行 VectorDBBench。此处使用 HNSW 索引进行测试。

HNSW 索引

# $host,$port,$user 需替换为实际的 seekdb 连接信息。
vectordbbench oceanbasehnsw --host $host --port $port --user root --database test --m 16 --ef-construction 200 --case-type Performance1536D50K --index-type HNSW --ef-search 180 --k 100

更多参数信息可以通过以下命令查看:

vectordbbench oceanbasehnsw --help

几个常用选项具体说明如下:

  • --num-concurrency:用于调整并发度。 VectorDBBench 会按指定的并发去执行向量查询,并选择最大的 QPS(Queries Per Second,每秒查询数)作为最终结果。
  • --skip-drop-old/--skip-load:表示跳过删除旧数据和导数的步骤。在命令行加上这两个选项后,命令仅执行向量查询操作,而不会删除旧数据重新导数。
  • --k:指定向量查询中要返回的前 K 个近邻结果的个数。
  • --ef-search:HNSW 查询参数,表示查询时的候选集大小。
  • --index-type:指定索引类型,目前支持 HNSWHNSW_SQHNSW_BQ

说明

测试结果可参考 seekdb VectorDBBench 性能测试报告