INDEX_VECTOR_MEMORY_ADVISOR 関数は、テーブル作成前のベクトルインデックスのメモリ使用量を見積もるために使用されます。
注意
この関数はV4.4.1バージョンから導入されました。
構文
FUNCTION index_vector_memory_advisor (
IN idx_type VARCHAR(65535),
IN num_vectors BIGINT UNSIGNED,
IN dim_count INT UNSIGNED,
IN dim_type VARCHAR(65535) DEFAULT 'FLOAT32',
IN idx_parameters LONGTEXT DEFAULT NULL,
IN max_tablet_vectors BIGINT UNSIGNED DEFAULT 0)
パラメータ説明
パラメータ |
説明 |
|---|---|
| idx_type | インデックスタイプ。HNSW/HNSW_SQ/HNSW_BQ/IVF_FLAT/IVF_PQをサポートし、大文字小文字は区別されません。 |
| num_vectors | ベクトルデータ量。 |
| dim_count | ベクトル次元。 |
| dim_type | ベクトル要素のデータ型。デフォルトであり、FLOAT32のみサポートしており、大文字小文字は区別されません。 |
| idx_parameters | インデックスパラメータ。テーブル作成時に使用されたベクトルインデックスのパラメータ文字列です。例:distance=l2, type=hnsw, lib=vsag。詳細なパラメータについては、ベクトルインデックスのメモリ管理を参照してください。 |
| max_tablet_vectors | パーティションテーブルの最大パーティションのベクトルデータ量。デフォルトは0で、最大パーティションのベクトルデータ量がベクトルの総データ量と等しいことを意味します。パーティションテーブルを使用することで、総データ量が同じ場合でも最低メモリ要件を削減できます。 |
戻り値は、メモリ見積もり結果を記述した文字列形式の文です。
注意
OceanBaseでは、HNSW_BQインデックスを作成する際、システムはメモリ状況に応じて、パーティションテーブルに対するインデックス作成を並列または直列方式で自動選択します。INDEX_VECTOR_MEMORY_ADVISOR 関数が返す推奨値は、インデックスを直列で作成する場合の最大メモリ要件値です。メモリがこの値だけを満たす場合、インデックスを並列で作成できないため、インデックス作成時間が延長する可能性があります。
ベクトルインデックスの再構築が正常に実行されるようにするため、推奨されるメモリ予約値は、インデックス構築完了後のベクトルインデックスが実際に占有するメモリ値よりも大きくする必要があります。推奨されるメモリ値は、最大パーティションのベクトル数に関連付けられています:
- HNSWおよびHNSW_SQインデックスの場合、推奨されるメモリ値を返します。
- HNSW_BQインデックスの場合、推奨されるメモリ値とインデックス作成完了後の実際のメモリ使用量を返します。
- IVF、IVF_PQインデックスの場合、推奨されるメモリ値とインデックス作成完了後の実際のメモリ使用量を返します。
例
HNSWインデックスの推奨メモリ値を照会します:
SELECT dbms_vector.index_vector_memory_advisor('HNSW',1000000,768,'FLOAT32','M=10,DISTANCE=L2');
+------------------------------------------------------------------------------------------+
| dbms_vector.index_vector_memory_advisor('HNSW',1000000,768,'FLOAT32','M=10,DISTANCE=L2') |
+------------------------------------------------------------------------------------------+
| Suggested minimum vector memory is 7.2 GB |
+------------------------------------------------------------------------------------------+
1 row in set
HNSW_BQインデックスのクエリに推奨されるメモリ値と、インデックス作成後の実際のメモリ使用量:
SELECT dbms_vector.index_vector_memory_advisor('HNSW_BQ',1000000,768,'FLOAT32','M=10,DISTANCE=L2');
+---------------------------------------------------------------------------------------------------------+
| dbms_vector.index_vector_memory_advisor('HNSW_BQ',1000000,768,'FLOAT32','M=10,DISTANCE=L2') |
+---------------------------------------------------------------------------------------------------------+
| Suggested minimum vector memory is 4.1 GB, memory consumption when providing search service is 347.5 MB |
+---------------------------------------------------------------------------------------------------------+
1 row in set
IVFインデックスのクエリに推奨されるメモリ値と、インデックス作成後の実際のメモリ使用量:
SELECT dbms_vector.index_vector_memory_advisor('IVF_FLAT',1000000,768,'FLOAT32','SAMPLE_PER_NLIST=1024,DISTANCE=L2');
+---------------------------------------------------------------------------------------------------------------+
| dbms_vector.index_vector_memory_advisor('IVF_FLAT',1000000,768,'FLOAT32','SAMPLE_PER_NLIST=1024,DISTANCE=L2') |
+---------------------------------------------------------------------------------------------------------------+
| Suggested minimum vector memory is 452.7 MB, memory consumption when providing search service is 384.0 KB |
+---------------------------------------------------------------------------------------------------------------+
1 row in set