CREATE_INDEX

ベクトル索引を作成するには、DBMS_VECTOR.CREATE_INDEXプロシージャを使用します。

用途

Hierarchical Navigable Small World (HNSW)ベクトル索引やInverted File Flat (IVF)ベクトル索引などのベクトル索引を作成します。

構文

DBMS_VECTOR.CREATE_INDEX (
    idx_name                    IN VARCHAR2,
    table_name                  IN VARCHAR2,
    idx_vector_col              IN VARCHAR2,
    idx_include_cols            IN VARCHAR2 DEFAULT NULL,
    idx_partitioning_scheme     IN VARCHAR2 default 'LOCAL',
    idx_organization            IN VARCHAR2,
    idx_distance_metric         IN VARCHAR2 DEFAULT COSINE,
    idx_accuracy                IN NUMBER DEFAULT 90,
    idx_parameters              IN CLOB,
    idx_parallel_creation       IN NUMBER DEFAULT 1
); 

パラメータ

パラメータ 説明

idx_name

作成する索引の名前。

table_name

索引を作成する表。

idx_vector_col

索引を作成するVector列。

idx_include_cols

索引でカバーされる列名のカンマ区切りリスト。

idx_partitioning_scheme

IVF索引のパーティション化スキーム:

  • GLOBAL

  • LOCAL

IVF索引は、パーティション表のグローバル索引とローカル索引の両方をサポートします。デフォルトでは、これらの索引は重心によってグローバルにパーティション化されます。ローカルIVF索引を作成することを選択できます。これにより、実表のパーティションまたはサブパーティションと索引パーティションの間に1対1の関係が提供されます。

これらのパーティション化スキームの詳細は、「Inverted File Flatベクトル索引のパーティション化スキーム」を参照してください。

idx_organization

索引構成:

  • NEIGHBOR PARTITIONS

  • INMEMORY NEIGHBOR GRAPH

これらの組織タイプの詳細は、「ベクトル索引の様々なカテゴリの管理」を参照してください。

idx_distance_metric

ベクトル間の距離を計算するために使用される距離メトリックまたは数学的関数:

  • COSINE (デフォルト)
  • MANHATTAN
  • HAMMING
  • JACCARD
  • DOT
  • EUCLIDEAN
  • L2_SQUARED
  • EUCLIDEAN_SQUARED

これらの各メトリックの詳細は、「ベクトル距離関数および演算子」を参照してください。

idx_accuracy

近似検索問合せの実行時に目指す近似検索の実行のターゲット精度。

「ベクトル索引を使用した近似類似検索の理解」で説明したように、使用している索引タイプに応じて、パーセンテージ値を指定するか、内部パラメータ値を指定することで、デフォルト以外のターゲット精度値を指定できます。

  • HNSW近似検索の場合:

    HNSW近似検索の場合、ターゲット精度のパーセント値を指定して、検索の精査で考慮される候補の数に影響を与えることができます。これは、アルゴリズムによって自動的に計算されます。値が100の場合は、完全検索と同様の結果となる傾向がありますが、システムでは引き続き索引が使用され、完全検索は実行されません。オプティマイザでは、問合せの述語がある場合は索引を使用する方が高速になる可能性があるため、引き続き索引を使用することが選択されることがあります。ターゲット精度パーセンテージの値を指定するかわりに、EFSEARCHパラメータを指定して、索引の精査中に考慮される特定の最大候補数を指定できます。その数値が大きいほど、精度が高くなります。

    詳細は、「Hierarchical Navigable Small World索引の理解」を参照してください。

  • IVF近似検索の場合:

    IVF近似検索の場合、ターゲット精度のパーセント値を指定して、検索の精査に使用されるパーティションの数に影響を与えることができます。これは、アルゴリズムによって自動的に計算されます。値が100の場合は、完全検索が実行される傾向がありますが、システムでは引き続き索引が使用され、完全検索は実行されません。オプティマイザでは、問合せの述語がある場合は索引を使用する方が高速になる可能性があるため、引き続き索引を使用することが選択されることがあります。ターゲット精度のパーセンテージ値を指定するかわりに、NEIGHBOR PARTITION PROBESパラメータを指定して、検索によって精査されるパーティションの最大数を指定できます。その数値が大きいほど、精度が高くなります。

    詳細は、「Inverted File Flatベクトル索引の理解」を参照してください。

idx_parameters

ベクトル索引のタイプと関連パラメータ。

索引付けパラメータをJSON形式で指定します:

  • HNSW索引の場合:

    • type: 作成するベクトル索引のタイプ(HNSW)

    • neighbors: HNSWグラフでベクトル当たりに許可される最大接続数

    • efConstruction: 挿入時に検索の各ステップで考慮される最も近いベクトル候補の最大数

    次に例を示します。

    {
        "type"           : "HNSW", 
        "neighbors"      : 3, 
        "efConstruction" : 4
    }

    これらのパラメータの詳細は、「Hierarchical Navigable Small World索引の構文およびパラメータ」を参照してください。

  • IVF索引の場合:

    • type: 作成するベクトル索引のタイプ(IVF)

    • partitions: ベクトル空間を分割する近傍パーティションまたはクラスタ

    次に例を示します。

    {
        "type"       : "IVF",
        "partitions" : 5
    }

    これらのパラメータの詳細は、「Inverted File Flat索引の構文およびパラメータ」を参照してください。

idx_parallel_creation

索引作成に使用されるパラレル・スレッドの数。

  • HNSW索引のneighborsとefConstructionを指定します:

    dbms_vector.create_index(
        'v_hnsw_01', 
        'vpt01', 
        'EMBEDDING', 
         NULL, 
         NULL, 
        'INMEMORY NEIGHBOR GRAPH', 
        'EUCLIDEAN', 
         95, 
        '{"type" : "HNSW", "neighbors" : 3, "efConstruction" : 4}');
  • IVF索引のパーティション数を指定します:

    dbms_vector.create_index(
        'V_IVF_01', 
        'vpt01', 
        'EMBEDDING', 
         NULL,
         NULL, 
        'NEIGHBOR PARTITIONS', 
        'EUCLIDEAN', 
         95, 
        '{"type" : "IVF", "partitions" : 5}');