ローカル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索引の可能性を最大限に引き出すには、ユーザー問合せにパーティション・プルーニングの条件が必要です。