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