ローカルInverted File Flatベクトル索引の理解
ローカルIVF索引を使用して、検索問合せを高速化できます。ローカルIVF索引では、実表のパーティションまたはサブパーティションと索引のパーティションの間に1対1の関係があります。
ベクトル・プールが有効な場合、IVF索引を持つ実表に対するローカルIVF索引の作成およびDML操作が高速化される可能性があります。ベクトル・プールは、SGAに格納されている新しいメモリー領域です。ベクトル・プールの詳細は、トピック「ベクトル・プールのサイズ設定」を参照してください。
これを次の図に示します。実表には3つのパーティションがあります。作成されたローカルIVF索引は、次の2つの内部表で構成されます:
-
1つ目は
VECTOR$<base table name>_IVF_IDX$<object info>$IVF_FLAT_CENTROIDSと呼ばれ、実表のパーティションIDによってリスト・パーティション化されるため、実表と等価パーティション化されます。各パーティションには、対応する識別された重心ベクトルおよび関連するIDのリストが含まれています。 -
2つ目は
VECTOR$<base table name>_IVF_IDX$<object info>$IVF_FLAT_CENTROID_PARTITIONSと呼ばれ、実表のパーティションIDによってリスト・パーティション化され、重心IDによってリスト・サブパーティション化されます。この表も実表と等価パーティション化されており、各サブパーティションには、そのサブパーティションの対応する重心IDと密接に関連している(クラスタ)実表ベクトルが含まれています。
たとえば、ベクトル化された写真に似ているカリフォルニア州の上位10軒の家を検索するとします。問合せでは、実表およびCentroids表(カリフォルニア)の両方が州別にパーティション化されているため、それらをパーティション・プルーニングできることがメリットとなります。最も近い重心がそのパーティションで識別されると、問合せでは、他の重心サブパーティションをスキャンせずに、Centroidパーティション表の対応する重心クラスタ・サブパーティションをスキャンするのみで済みます。
もう1つの可能性は、実表をコンポジット・パーティション化することです。そのケースに対応するグラフィック表現を次に示します。Centroids表は、実表のサブパーティションに従ってリスト・パーティション化されます。Centroids表の各パーティションには、対応する実表サブパーティションにあるすべての重心ベクトルが含まれています。Centroidパーティション表は、実表のサブパーティションIDによってリスト・パーティション化され、さらに重心IDによってサブパーティション化されます。
ノート:
-
ローカルIVF索引は、パーティション化された実表に対してのみ作成できます。
-
ローカルIVF索引は、通常のローカル索引で使用されるすべてのシステム・カタログ表およびビューを継承します。
vecsys.vector$index表のフラグ(idx_spare2)は、索引がローカル・ベクトル索引またはグローバル・ベクトル索引のいずれであるかを示します。 -
ローカルIVF索引に対する
ALTER INDEXはサポートされていません。 ALTER TABLE SPLIT/MERGE/MOVE/EXCHANGE/COALECSEなどのパーティション・メンテナンス操作(PMOP)が実表で実行されると、操作後に対応するすべてのIVF索引パーティションがUNUSABLEとしてマークされます。-
パーティション・メンテナンス操作は、ローカルHNSW索引ではサポートされていません。
ローカルIVF索引を使用すると、次のような利点があります:
-
簡略化されたパーティション・メンテナンス操作:
たとえば、表パーティションの削除には、対応する索引パーティションの削除のみが含まれます。
-
柔軟な索引付けスキーム:
たとえば、特定の索引パーティションに
UNUSABLEのマークを付けて、部分索引付けによる特定の表パーティションの索引付けを回避します。
ノート:
ユーザー問合せで、パーティション・プルーニングを利用してローカルIVF索引の可能性を最大限に引き出すには、ユーザー問合せにパーティション・プルーニングの条件が必要です。
親トピック: 近傍パーティション・ベクトル索引

