本記事では、OceanBaseデータベースでサポートされているベクトルインデックスの種類とその特徴について説明します。
インデックスの種類
OceanBaseデータベースは、HNSWシリーズとIVFシリーズを含む、密ベクトルインデックスをサポートしています。以下では、簡潔さのため、密ベクトルインデックスを「密インデックス」と略称します。
| インデックスの種類 | 説明 |
|---|---|
| HNSW | インデックス列の最大次元は4096です。HNSWインデックスはメモリインデックスであり、完全にメモリにロードする必要があります。 |
| HNSW_SQ | HNSW_SQインデックスは、HNSWインデックスと同様の構築速度、検索性能、リコール率を提供しますが、全体的なメモリ使用量は元の1/2~1/3にまで低下します。 |
| HNSW_BQ | HNSW_BQインデックスのリコール率はHNSWインデックスよりもわずかに低く、メモリ使用量は大幅に削減されます。BQ量子化圧縮アルゴリズム(Rabitq)により、ベクトルは元のサイズの1/32に圧縮されます。ベクトルの次元が増加するにつれて、HNSW_BQインデックスのメモリ最適化効果がより顕著になります。 |
| IVF | データベーステーブルに基づいて実装されたIVFインデックスであり、メモリに常駐する必要はありません。 |
| IVF_PQ | データベーステーブルに基づいて実装されたIVF_PQインデックスであり、メモリに常駐する必要はありません。IVFの上にPQ量子化技術を適用しており、インデックスのリコール率はIVFインデックスよりもわずかに低く、性能はIVFインデックスよりも優れています。また、一般的なシナリオでは、PQ量子化圧縮アルゴリズムにより、ベクトルは元のサイズの1/16~1/32にまで圧縮されます。 |
説明と制限事項
- 距離アルゴリズム:密ベクトルインデックスは、L2距離、内積(IP)、コサイン距離をインデックス距離アルゴリズムとしてサポートしています。
- 距離関数:ベクトルインデックス検索では、一部の距離関数を呼び出すことができます。詳細については、SQL関数の使用を参照してください。
- フィルタリング条件:フィルタリング条件付きのベクトル検索をサポートしています。フィルタリング条件はスカラータイプの条件であっても、ST_Intersectsなどの空間関係であっても構いません。ただし、複数値インデックス、全文インデックス、グローバルインデックスをプリフィルタとして使用することは、現時点ではサポートされていません。
- 混合検索:同一テーブルにベクトルインデックスと全文インデックスを同時に作成できます。
- Offline DDL:ベクトルインデックスがOffline DDLをサポートするかどうかについては、Offline DDLを参照してください。
- 列インデックス:V4.3.5 BP3バージョンでは、列インデックス付きのベクトルインデックスを作成することはサポートされていません。