すべてのプロダクト
Search
ドキュメントセンター

OpenSearch:ベクトルインデックスのストレステスト

最終更新日:Jul 25, 2025

準備

image.png

image.png

パッケージを解凍し、gist_base.fvecs ファイルを使用します。

  • Python 3 と関連ライブラリをインストールします。

h5py
json
numpy
sklearn
alibabacloud_ha3engine_vector

データの生成

  • prepare_data.py を実行します。このスクリプトは、.hdf5、.fvecs、.bvecs、および .ivecs 形式のベクトルデータをサポートしています。この例では、.hdf5 を使用します。

python3 prepare_data.py -i ./gist-960-euclidean.hdf5 
  • スクリプトディレクトリの data/ サブディレクトリを表示します。

    • gist-960-euclidean.hdf5.data が生成されます。

    • データ行数を確認します。

wc -l data/gist-960-euclidean.hdf5.data

1000000 gist-960-euclidean.hdf5.data

OpenSearch Vector Search Edition インスタンスを購入する

詳細については、「OpenSearch Vector Search Edition インスタンスを購入する」をご参照ください。

テーブルを作成する

参照:

クエリを生成する

  • prepare_query.py スクリプトを実行して、生データからランダムにクエリを生成します。

python3 prepare_query.py -i gist-960-euclidean.hdf5 -c 10000 -t gist
  • data/ サブディレクトリに生成された query.data ファイルを取得します。

wrk を使用したストレステスト

  • wrk は、オープンソースの HTTP リクエストストレステストツールです。

  • https://github.com/wg/wrk から wrk をダウンロードします。

git clone https://github.com/wg/wrk.git
  • ストレステスト用に search.lua を実行します。

    • スクリプトを wrk/scripts/ ディレクトリにコピーします。

cp search.lua wrk/scripts/
  • 署名を計算し、request メソッドの header["Authorization"] を変更します。

-- 実行中、wrk はランダムにクエリを選択して特定のリクエストを構築します
request = function ()
  local query = query_table[count]
  count = (count + 1)%query_count
  local headers = {}
  headers["Authorization"] = "Basic xxxx" -- 署名情報
  headers["Content-Type"] = "application/json"
  return wrk.format("POST", nil, headers, query)
end
  • ストレステストを実行します。

    • -c: 同時接続数。

    • -t: リクエストを送信するためのスレッド数。

    • -d: ストレステストの指定期間。

    • -s: 指定されたスクリプト。

    • --latency: 詳細なストレステスト結果を表示します。

./wrk -c24 -d100s -t8 -s scripts/search.lua http://ha-cn-xxxxxx.ha.aliyuncs.com/vector-service/query --latency

メトリックを表示する

スクリプトのダウンロードリンク

パフォーマンステストデータ

以下は、第 8 世代マシンを使用した Vector Search Edition の ANN_GIST1M 960 次元データセットでの結果です。

製品

OpenSearch (gist に含まれる 1000 個のクエリを使用したストレステスト。groundtruth に従って ef を調整)

テストデータセット ANN_GIST1M 960 次元 (http://corpus-texmex.irisa.fr/)

製品バージョン

OpenSearch-Vector Search Edition

2024.11

vector_service_1.4.0_test_202411081507

OpenSearch-Vector Search Edition

2024.11

vector_service_1.3.0_202410081048

マシンスペック

16 コア 64G ecs.g8i.4xlarge 第 8 世代マシン

テストツール

wrk (https://github.com/wg/wrk)

ストレステストパラメーター:

スレッド: 10 接続: 30

wrk (https://github.com/wg/wrk)

ストレステストパラメーター:

スレッド: 10 接続: 40

パラメーター

m: 100

ef_construction: 500

ベクトルアルゴリズム

HNSW

QGRAPH (HNSW+量子化)

top10 recall@95

クエリパラメーター:

ef=60

クエリパラメーター:

ef=40: recall@94

ef=80: recall@95

QPS: 4486.06

レイテンシ (平均): 6.7 ミリ秒

CPU 負荷: 95.8%

recall 94

ef=40

QPS: 4957.48

レイテンシ (平均): 7.6 ミリ秒

CPU 負荷: 93%

recall 95

ef=80

QPS: 3700.74

レイテンシ (平均): 8.19 ミリ秒

CPU 負荷: 92%

top10 recall@99

クエリパラメーター:

ef=170

最大リコールは 95.8 で、99 には到達できません

QPS: 2868.77

レイテンシ (平均): 10.44 ミリ秒

CPU 負荷: 94%

top10 recall@99.5

クエリパラメーター:

ef=300

スレッド: 10 接続: 20

QPS: 2050.66

レイテンシ (平均): 9.73 ミリ秒

CPU 負荷: 95%