首页 Lindorm User Guide Vector Engine Performance white paper

Performance white paper

更新时间: 2026-05-27 08:40:17

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.16xlarge or 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

Note

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.

    Important

    Use 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, and post_filter. efficient_filter is recommended.

      k_expand_scope

      In post_filter mode, 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 to efficient_filter, k_expand_scope to 1000, and number_of_regions to 1. 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-load to 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.

image.png

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

上一篇: Appendix: Calculation of the return value (_score) in vector-based retrieval 下一篇: Graph Engine
阿里云首页 云原生多模数据库 Lindorm 相关技术圈