Inverted File Flat索引の構文およびパラメータ

Inverted File Flatベクトル索引の構文および例を示します。

構文

CREATE VECTOR INDEX <vector index name>
ON <table name> ( <vector column> )
[GLOBAL] ORGANIZATION [NEIGHBOR] PARTITIONS
[WITH] [DISTANCE <metric name>]
[WITH TARGET ACCURACY <percentage value>
[PARAMETERS ( TYPE IVF, { NEIGHBOR PARTITIONS <number of partitions> | 
                          SAMPLES_PER_PARTITION <number of samples> | 
                          MIN_VECTORS_PER_PARTITION <minimum number of vectors per partition> }
            )]]
[PARALLEL <degree of parallelism>]
[LOCAL];

GLOBAL句は、グローバルIVF索引を指定します。デフォルトでは、IVFベクトル索引は重心によってグローバルにパーティション化されます。

ローカルIVF索引を作成するには、LOCAL句を指定します。

IVFのパラメータ

NEIGHBOR PARTITIONSは、索引によって作成される重心パーティションのターゲット数を決定します。

SAMPLES_PER_PARTITIONは、クラスタリング・アルゴリズム(samples_per_partition * neighbor_partitions)に渡されるベクトルの合計数を決定します。すべてのベクトルを渡すと、索引作成の合計時間が大幅に長くなる可能性があります。目的は、データ分散を取得できるベクトルのサブセットを渡すことです。

MIN_VECTORS_PER_PARTITIONは、パーティション当たりのターゲットの最小ベクトルの数を表します。目標は、ベクトルが少ない(<= 100)パーティションを切り捨てることです。

IVFベクトル索引パラメータの有効な範囲は次のとおりです。

  • ACCURACY: 0より大きく100以下
  • DISTANCE: EUCLIDEANL2_SQUARED (別名EUCLIDEAN_SQUARED)、COSINEDOTMANHATTANHAMMING
  • TYPE: IVF
  • NEIGHBOR PARTITIONS: >0および10000000以下
  • SAMPLES_PER_PARTITION: 1から(num_vectors/neighbor_partitions)
  • MIN_VECTORS_PER_PARTITION: 0から(重心パーティションのトリミングなし)、ベクトルの合計数(1つの重心パーティション)

  • グローバルIVF索引を作成するには:

    CREATE VECTOR INDEX galaxies_ivf_idx ON galaxies (embedding) 
    ORGANIZATION NEIGHBOR PARTITIONS
    DISTANCE COSINE
    WITH TARGET ACCURACY 95;
    CREATE VECTOR INDEX galaxies_ivf_idx ON galaxies (embedding) 
    ORGANIZATION NEIGHBOR PARTITIONS
    DISTANCE COSINE
    WITH TARGET ACCURACY 90 PARAMETERS (type IVF, neighbor partitions 10);
  • ローカルIVF索引を作成するには:

    CREATE VECTOR INDEX galaxies_ivf_idx ON galaxies (embedding) 
    ORGANIZATION NEIGHBOR PARTITIONS
    DISTANCE COSINE
    WITH TARGET ACCURACY 90 PARAMETERS (type IVF, neighbor partitions 10)
    LOCAL;

構文の詳細は、『Oracle Database SQL言語リファレンス』「CREATE VECTOR INDEX」を参照してください。