本記事では、OceanBaseデータベースの密ベクトルインデックスの概念とタイプについて説明します。以降、このインデックスを「密インデックス」と略します。
密インデックスは、OceanBaseデータベースが密ベクトルデータ(ほとんどの要素がゼロでないベクトル)向けに提供する高効率なインデックスタイプです。主にベクトル検索を高速化するために使用され、距離関数(L2、内積、コサイン距離)による最近傍検索をサポートしています。
インデックスのタイプ
OceanBaseデータベースの密インデックスには、主にHNSWシリーズとIVFシリーズがあります。
HNSWシリーズ
メモリベースのグラフ構造のインデックスで、完全にメモリにロードする必要があります。DMLとリアルタイム検索をサポートし、高い検索性能とリコール率を提供します。
注意
HNSW_BQインデックスは、V4.3.5 BP2バージョンからサポートされています。
| インデックスのタイプ | 説明 |
|---|---|
| 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インデックスは、V4.3.5 BP1バージョンからサポートされています。
| インデックスのタイプ | 説明 |
|---|---|
| IVF | データベーステーブルに基づくIVFインデックスで、常駐メモリを占めることはありません。 |
| IVF_PQ | データベーステーブルに基づくIVF_PQインデックスで、常駐メモリを占めることはありません。IVFにPQ量子化技術を適用しており、インデックスのリコール率はIVFインデックスよりもやや低く、性能はIVFインデックスよりも高いです。また、PQ量子化圧縮アルゴリズムは一般的なシナリオで、ベクトルを元のサイズの1/16~1/32に圧縮できます。 |
詳細については、文末の関連ドキュメントを参照してください。
構文の説明
密インデックスは、テーブル作成時に作成する方法と後から作成する方法の2種類があります。検索構文と削除構文は通常のベクトルインデックスと同様です。各インデックスタイプの作成構文、パラメータの説明、検索構文、および例については、以下のリンクを参照してください:
- HNSWシリーズのインデックス:HNSW、HNSW_SQ、HNSW_BQの作成、検索、削除構文の説明と例を含みます。
- IVFシリーズのインデックス:IVF、IVF_PQの作成、検索、削除構文の説明と例を含みます。
関連ドキュメント
- インデックスの選択に関する推奨事項については、インデックスのタイプの選択を参照してください。V4.3.5 BP3以降のバージョンのみ適用されます
- ベクトルインデックスのメモリ管理
- ベクトルインデックスのモニタリングとメンテナンス