ALTER INDEX

既存のハイブリッド・ベクトル索引を変更するには、ALTER INDEX SQL文を使用します。

用途

ハイブリッド・ベクトル索引に変更を加えます。

構文

ALTER INDEX [schema.]index_name REBUILD 
  PARAMETERS(
      ['UPDATE VECTOR INDEX [VECTOR_IDXTYPE HNSW/IVF]']
      ['REPLACE vectorizer vectorizer_pref_name']
      )
  [PARALLEL n];

ノート:

  • PARAMETERS句を指定しない場合、ハイブリッド・ベクトル索引のすべての部分(Oracle Text索引とベクトル索引の両方)が既存のプリファレンス設定で再作成されます。

  • ALTER INDEX RENAME構文を使用したハイブリッド・ベクトル索引の名前変更はサポートされていません。

  • ALTER INDEXのパラメータUDPATE VECTOR INDEXは、ローカルHVIおよびHNSWベクトル索引ではサポートされていません。

[schema.]index_name

変更するハイブリッド・ベクトル索引の名前を指定します。

PARAMETERS(UPDATE VECTOR INDEX)

ハイブリッド・ベクトル索引のテキスト部分とベクトル部分の両方を再構築します。テキスト部分の再構築では、索引の作成時に指定されたプリファレンス、または指定されていない場合はデフォルトのプリファレンスが使用されます。ベクトル部分(チャンク化、埋込みおよびベクトル索引の作成)の再構築では、ALTER INDEX REBUILD構文で指定された新しいベクトル化プリファレンスが使用されます。索引の作成時に設定されたプリファレンスの詳細は、CREATE HYBRID VECTOR INDEXを参照してください。

PARAMETERS(REPLACE vectorizer vectorizer_pref_name)
指定されたベクトル化プリファレンス設定で、ハイブリッド・ベクトル索引のベクトル索引部分のみを再作成します。

ノート:

HVI以外の索引では、存在しないものを置き換えることはできないため、置換操作によってエラーがスローされます。
PARALLEL

CREATE HYBRID VECTOR INDEX文で説明されているように、パラレル索引付けを指定します。

PARALLEL句の詳細は、「CREATE HYBRID VECTOR INDEX」を参照してください。

既存のハイブリッド・ベクトル索引を変更する方法の例を次に示します:
  • ハイブリッド・ベクトル索引のすべての部分を再構築するには:

    ハイブリッド・ベクトル索引のすべての部分(Oracle Text索引とベクトル索引の両方)を元のプリファレンス設定で再構築するには、次の構文を使用します:

    構文:

    ALTER INDEX index_name REBUILD [PARALLEL n];

    ハイブリッド・ベクトル索引の両方の部分を再構築する場合、PARAMETERS句を指定する必要はありません。

    例:

    ALTER INDEX my_hybrid_idx REBUILD;
    
    SELECT (select id from doc_table where rowid = jt.doc_rowid) as doc,
           jt.chunk
    FROM JSON_TABLE(
             DBMS_HYBRID_VECTOR.SEARCH(
               json(
                 '{ "hybrid_index_name" : "my_hybrid_idx",
                    "vector" : 
                     { "search_text"    : "vector based search capabilities",
                       "search_mode"    : "CHUNK"
                     },
                    "return" : 
                     { "topN"           : 10 }
                 }')
               ),
               '$[*]' COLUMNS doc_rowid  PATH '$.rowid',
                              chunk      PATH '$.chunk_text') jt;
  • ベクトル索引の部分のみを再構築するには:

    ハイブリッド・ベクトル索引のベクトル索引部分のみを元のプリファレンス設定で再構築するには、次の構文を使用します:

    構文:

    ALTER INDEX index_name REBUILD 
      PARAMETERS('UPDATE VECTOR INDEX') [PARALLEL n];

    例:

    ALTER INDEX my_hybrid_idx REBUILD 
      PARAMETERS('UPDATE VECTOR INDEX') PARALLEL 3;
    
    SELECT (select id from doc_table where rowid = jt.doc_rowid) as doc,
           jt.chunk
    FROM JSON_TABLE(
             DBMS_HYBRID_VECTOR.SEARCH(
               json(
                 '{ "hybrid_index_name" : "my_hybrid_idx",
                    "vector" : 
                     { "search_text"    : "vector based search capabilities",
                       "search_mode"    : "CHUNK"
                     },
                    "return" : 
                     { "topN"           : 10 }
                 }')
               ),
               '$[*]' COLUMNS doc_rowid  PATH '$.rowid',
                              chunk      PATH '$.chunk_text') jt;
  • ベクトル化プリファレンスを使用して索引を再作成するには:

    DBMS_VECTOR_CHAIN.CREATE_PREFERENCE PL/SQLファンクションを使用してベクトル化プリファレンスを作成できます。ベクトル化プリファレンスの作成方法の詳細は、CREATE_PREFERENCEを参照してください。プリファレンスを作成したら、REPLACE vectorizerパラメータを使用してプリファレンス名をここで渡します。

    構文:

    ALTER INDEX index_name REBUILD 
      parameters('REPLACE vectorizer vectorizer_pref_name') [PARALLEL n];

    ノート:

    非HVI索引の場合、REPLACE操作によってエラーがスローされます。

    例:

    ALTER INDEX my_hybrid_idx REBUILD 
      parameters('REPLACE vectorizer my_vectorizer_pref') [PARALLEL n];
  • モデル索引タイプまたはベクトル索引タイプ(あるいはその両方)のみを置換するには

    既存のHVI索引の場合、次の構文を使用して完全なベクトル化プリファレンスを指定せずに、モデルまたは索引タイプ(あるいはその両方)を置き換えることができます。

    構文:

    ALTER INDEX schema.index_name REBUILD[
    parameters('REPLACE MODEL model_name VECTOR_IDXTYPE hnsw/ivf')];

    例:

    ALTER INDEX schema.my_hybrid_idx REBUILD[
    parameters('REPLACE MODEL my_model_name VECTOR_IDXTYPE ivf')];

    ノート:

    HVI以外の索引の場合、この構文ではエラーがスローされます。ベクタライザがモデルまたはvector_idxtype (あるいはその両方)とともに指定されている場合、ベクタライザまたはモデル/vector_idxtypeのいずれか1つのみが許可されるため、エラーが発生します。