Performance white paper
This topic describes the performance testing process for the vector engine in Alibaba Cloud Lindorm, a cloud-native multi-model database.
Test environment
-
Client ECS specifications
We recommend an instance type of
ecs.c9i.16xlargeor higher.CPU
Memory
Disk
Operating system
64 cores
128 GB
2 TB
Ubuntu 22.04 64-bit (UEFI)
-
Lindorm server specifications
Engine
Engine version
CPU
Memory
Disk
search engine
3.10.16 or later
8 cores
32 GB
320 GB performance cloud storage
vector engine
3.10.16 or later
32 cores
128 GB
Ensure that the ECS and Lindorm instances are in the same region, availability zone, and VPC, and that the ECS instance's address is added to the Lindorm whitelist.
Test tool preparation
This guide uses VectorDBBench to evaluate performance.
-
Install Python 3.11 or a later version.
sudo apt update sudo apt install python3.11 sudo apt install python3.11-venv -
Install the VectorDBBench project and its dependencies.
git clone https://github.com/zilliztech/VectorDBBench.git cd VectorDBBench # Create a virtual environment python3.11 -m venv venv source venv/bin/activate # Install Python dependencies pip3 install -U pip -i https://mirrors.aliyun.com/pypi/simple pip3 install --no-cache-dir -r install/requirements_py3.11.txt -i https://mirrors.aliyun.com/pypi/simple pip3 install -e . -i https://mirrors.aliyun.com/pypi/simple # Start the web page init_bench
Performance test
You can run tests using the web UI or the command line. The web UI is intuitive for new users, while the command line is ideal for batch execution or repeated tests.
Run a test using the web UI
-
On the Run Test page, select Lindorm as the database.
-
Set the Lindorm instance connection details and the index name.
The form also includes the version (optional, used to label the results), db_label (optional, used to label the results), and note (optional) fields. The default value for port is
30070.Parameter
Description
host & port
The search engine's Elasticsearch-compatible connection address. To obtain this address, see Elasticsearch Compatible Address.
ImportantUse a private network address.
user & password
The username and password used to access the vector engine.
To obtain the default username and password, go to the console. In the left-side navigation pane, choose Database Connections and click the Search Engine tab.
index_name
The name of the vector index to create.
-
Select test cases and configure the index parameters.
-
General parameters
Parameter
Description
filter_type
The query mode for hybrid search. Valid values:
efficient_filter,pre_filter, andpost_filter.efficient_filteris recommended.k_expand_scope
In
post_filtermode, this value replaces the k value to expand the search scope.number_of_regions
The number of regions for the vector index. To test the performance of a single node, set this parameter to 1.
-
Index parameters
HNSW index
On the STEP 2: Choose the case(s) page, select the Search Performance Test (100M Dataset, 768 Dim) test case and select Lindorm as the database. Set IndexType to HNSW, filter_type to efficient_filter, k_expand_scope to 1000, and number_of_regions to 2.
Parameter
Description
M
The maximum number of outgoing edges per node at each graph layer.
Recommended value: 32.
efConstruction
The length of the dynamic list during index construction.
Recommended value: 400.
efSearch
The length of the dynamic list during an index query. This parameter is typically used to improve recall at the cost of performance overhead.
Recommended value: 100.
IVFPQ index
In the Search Performance Test (100M Dataset, 768 Dim) configuration panel, set IndexType to IVF_PQ, filter_type to efficient_filter, k_expand_scope to 1000, and number_of_regions to 1.
Parameter
Description
nlist
The number of centroids.
Recommended value:
, where n is the total number of vectors. nprobe
The number of clusters to query. This parameter is typically used to improve recall at the cost of performance overhead.
Recommended value: nlist * 0.004.
reorder-factor
The factor used for re-ranking with raw vectors. The number of raw vectors fetched for re-ranking is
topk * reorder-factor. This parameter is typically used to improve recall at the cost of performance overhead.Recommended value: 2.
client_refactor
Specifies whether to perform re-ranking on the client.
Recommended value: true.
centroids_hnsw_M
If the HNSW algorithm is used for centroid search, this parameter specifies the maximum number of outgoing edges per node at each graph layer.
Recommended value: 32.
centroids_hnsw_efConstruction
If the HNSW algorithm is used for centroid search, this parameter specifies the length of the dynamic list during index construction.
Recommended value: 500.
centroids_hnsw_efSearch
If the HNSW algorithm is used for centroid search, this parameter specifies the length of the dynamic list during a query.
Recommended value: 200.
IVFBQ index
Select the Search Performance Test (100M Dataset, 768 Dim) test case, set IndexType to
IVF_BQ, filter_type toefficient_filter, k_expand_scope to1000, and number_of_regions to1. For other parameters and their recommended values, see the following table.Parameter
Description
nlist
The number of centroids.
Recommended value:
, where n is the total number of vectors. nprobe
The number of clusters to query. This parameter is typically used to improve recall at the cost of performance overhead.
Recommended value: nlist * 0.004.
reorder-factor
The factor used for re-ranking with raw vectors. The number of raw vectors fetched for re-ranking is
topk * reorder-factor. This parameter is typically used to improve recall at the cost of performance overhead.Recommended value: 2.
client_refactor
Specifies whether to perform re-ranking on the client.
Recommended value: true.
centroids_hnsw_M
If the HNSW algorithm is used for centroid search, this parameter specifies the maximum number of outgoing edges per node at each graph layer.
Recommended value: 32.
centroids_hnsw_efConstruction
If the HNSW algorithm is used for centroid search, this parameter specifies the length of the dynamic list during index construction.
Recommended value: 500.
centroids_hnsw_efSearch
If the HNSW algorithm is used for centroid search, this parameter specifies the length of the dynamic list during a query.
Recommended value: 200.
exbits
Specifies the number of extra bytes to represent the quantized vector. A higher value improves recall but increases memory usage.
Recommended value: 2.
-
Run a test using the CLI
-
When running the performance test multiple times, you can add
--skip-drop-old --skip-loadto the end of the following commands to skip index creation and data import.#HNSW index vectordbbench lindormhnsw --case-type Performance768D10M --index-name <index_name> --k 10 --host <host> --port <port> --user <user> --password <password> --m <M> --ef-construction <efConstruction> --ef-search <efSearch> #IVFPQ index vectordbbench lindormivfpq --case-type Performance768D10M --index-name <index_name> --k 10 --host <host> --port <port> --user <user> --password <password> --lists <nlist> --probes <nprobe> --m <centroids_hnsw_M> --ef-construction <centroids_hnsw_efConstruction> --ef-search <centroids_hnsw_efSearch> --reorder-factor <reorder_factor> #IVFBQ index vectordbbench lindormivfbq --case-type Performance768D10M --index-name <index_name> --k 10 --host <host> --port <port> --user <user> --password <password> --lists <nlist> --probes <nprobe> --exbits <exbits> --m <centroids_hnsw_M> --ef-construction <centroids_hnsw_efConstruction> --ef-search <centroids_hnsw_efSearch> --reorder-factor <reorder_factor> -
Run the test.
To skip index creation and data import, select the Index already exists checkbox.
In the Task Label field, enter a label for the task. If needed, select the Dataset from China (Shanghai) checkbox to download the dataset from an Alibaba Cloud OSS bucket in the China (Shanghai) region. Set the K value (the number of nearest neighbors to search for, default is 10), num of concurrencies (the number of concurrent searches, such as
32,64,128,160), and concurrency duration (the duration for each concurrent search test, default is 30 seconds). After configuring the parameters, click Run Your Test.
Test results
View the test results on the Results page. The following test data is from a single-node vector engine with 32 cores and 128 GB of memory.

Test metrics
|
Metric |
Description |
|
QPS |
The number of queries processed per second. |
|
Recall |
The percentage of correct top-k nearest neighbor vectors returned by a query. |
|
Serial_latency_P95 |
The 95th percentile of request latency, measured in milliseconds. |
|
Serial_latency_P99 |
The 99th percentile of request latency, measured in milliseconds. |
HNSW index search performance
|
Parameter |
Value |
|
M |
32 |
|
efConstruction |
400 |
|
number_of_regions |
1 Important
This parameter significantly affects performance results. Because the tests in this topic were run on a single-node vector engine with 32 cores and 128 GB of memory, this parameter was set to 1. |
|
Dataset |
efSearch |
topk |
Serial_latency_P95 (ms) |
Serial_latency_P99 (ms) |
QPS |
Recall |
|
Cohere 1M |
350 |
10 |
1.7 |
1.9 |
42761.0247 |
0.9918 |
|
900 |
100 |
2.9 |
3.4 |
16799.0671 |
0.9905 |
|
|
Cohere 10M |
250 |
10 |
1.9 |
2.3 |
33730.4316 |
0.981 |
|
1000 |
100 |
4.1 |
4.5 |
10163.782 |
0.9808 |
|
|
Bioasq 1M |
520 |
10 |
2 |
2.5 |
31060.1343 |
0.9501 |
|
820 |
100 |
2.8 |
3.2 |
17748.6457 |
0.9504 |
|
|
Bioasq 10M |
1000 |
10 |
3.2 |
3.6 |
13943.0958 |
0.9405 |
|
1000 |
100 |
3.6 |
4 |
11846.4252 |
0.938 |