seekdb MLDR 测试
本文介绍如何使用 MLDR 对 seekdb 进行性能测试。
什么是 MLDR
MLDR 全称为 Multi-Lingual Document Retrieval,是一个数据集测试框架,用于评估和测试多语言文档检索系统的性能。支持多种查询类型(BM25、Dense Vector、混合检索等)。
支持的查询类型
| 查询类型 | 说明 | 支持后端 |
|---|---|---|
bm25 | BM25 全文检索 | OceanBase 数据库、seekdb |
dense | Dense 向量检索 | OceanBase 数据库、seekdb |
hybrid_dense_bm25 | Dense+BM25 混合检索 | OceanBase 数据库、seekdb |
评估指标
- Recall@10:前 10 个结果的召回率。
- NDCG@10:归一化折损累积增益。
- 平均查询时间:单次查询的平均响应时间。
环境准备
测试前请按照如下要求进行测试环境准备:
-
Python 需要 3.11 及以上版本。
-
JDK:需使用 11 及以上版本(用于 pyserini)。
-
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
测试方案
-
本次测试需使用到 2 台机器,MLDR 部署在一台机器上。seekdb 部署在另一台机器上,seekdb 的规格为 4C8G,其日志盘、clog 盘、data 盘分三块盘,性能级别 PL1。
-
测试数据量:200,000 条。
-
使用 MLDR 数据集,对 seekdb 的召回进行评估。
使用 MLDR 工具手动执行 MLDR 测试
步骤一:获取 seekdb 连接串
mysql -hxx.xx.xx.xx -P2881 -uroot -p**** -A
步骤二:安装 Java 环境
sudo dnf install java-11-openjdk-devel -y
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk
export JVM_PATH=$JAVA_HOME/lib/server/libjvm.so
步骤三:创建 Python 虚拟环境
-
下载安装 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 -
新建和初始化 MLDR 所需的 Python 环境
conda create -n test python=3.11
conda activate test
步骤四:下载 MLDR
git clone https://github.com/oceanbase/ob-mldr-test
cd ob-mldr-test
步骤五:安装 Python 依赖
-
升级 pip
pip install --upgrade pip -
安装依赖
pip install -r requirements.txt