CREATE_PREFERENCE
ハイブリッド・ベクトル索引の作成または更新時に使用されるベクトル化プリファレンスを作成するには、DBMS_VECTOR_CHAIN.CREATE_PREFERENCE
ヘルパー・プロシージャを使用します。
用途
ベクトル化プリファレンスを作成します。
これにより、ハイブリッド・ベクトル索引付けパイプラインのベクトル検索パラメータをカスタマイズできます。ベクトル化プリファレンスの目的は、様々なチャンク化または埋込みの戦略を深く理解していなくても、ドキュメントのチャンク化または埋込みを行う方法を構成できる簡単な方法を提供することです。
使用上の注意
ベクトル化プリファレンスは、次のチャンク化、埋込みまたはベクトル索引作成パラメータに関連するユーザー指定の値をまとめて保持するJSONオブジェクトです:
-
チャンク化(
UTL_TO_CHUNKS
およびVECTOR_CHUNKS
) -
埋込み(
UTL_TO_EMBEDDING
、UTL_TO_EMBEDDINGS
およびVECTOR_EMBEDDING
) -
ベクトル索引の作成(
distance
、accuracy
およびvector_idxtype
)
すべてのベクトル索引プリファレンスは、対応するDBMS_VECTOR
およびDBMS_VECTOR_CHAIN
APIに定義されているものと同じJSON構文に従います。
ベクトル化プリファレンスを作成した後、VECTORIZER
パラメータを使用して、CREATE_HYBRID_VECTOR_INDEX
およびALTER_INDEX
SQL文のPARAMETERS
句のparamstring
にこのプリファレンス名を渡すことができます。
プリファレンスの作成はオプションです。オプションのプリファレンスを指定しない場合、索引はシステムのデフォルトを使用して作成されます。
構文
DBMS_VECTOR_CHAIN.CREATE_PREFERENCE (
PREF_NAME IN VARCHAR2,
PREF_TYPE IN VARCHAR2,
PARAMS IN JSON default NULL
);
PREF_NAME
作成するベクトル化プリファレンスの名前を指定します。
PREF_TYPE
プリファレンスのタイプ。サポートされている唯一のプリファレンス・タイプは次のタイプです:
DBMS_VECTOR_CHAIN.VECTORIZER
PARAMS
ベクトル検索固有のパラメータをJSON形式で指定します:
埋込みパラメータ:
{ "model" : <embedding_model_for_vector_generation> }
次に例を示します。
{ "model" : MY_INDB_MODEL }
model
には、ONNX埋込みモデルがデータベースに格納されるときの名前を指定します。
ONNX形式のデータベース内埋込みモデルがない場合は、『Oracle Database AI Vector Searchユーザーズ・ガイド』に示されている手順を実行します。
チャンク化パラメータ:
{
"by" : mode,
"max" : max,
"overlap" : overlap,
"split" : split_condition,
"vocabulary" : vocabulary_name,
"language" : nls_language,
"normalize" : normalize_mode,
"extended" : boolean
}
次に例を示します。
JSON(
'{ "by" : "vocabulary",
"max" : "100",
"overlap" : "0",
"split" : "none",
"vocabulary" : "myvocab",
"language" : "american",
"normalize" : "all"
}')
split
にcustom
、およびnormalize
にoptions
を指定する場合は、custom_list
パラメータとnorm_options
パラメータをそれぞれ指定する必要があります。
JSON(
'{ "by" : "vocabulary",
"max" : "100",
"overlap" : "0",
"split" : "custom",
"custom_list" : [ "<p>" , "<s>" ],
"vocabulary" : "myvocab",
"language" : "american",
"normalize" : "options",
"norm_options" : [ "whitespace" ]
}')
次の表に、すべてのチャンク化パラメータを示します:
パラメータ | 説明および許容される値 |
---|---|
|
データを分割するモードを指定します。つまり、文字、単語または語彙トークンの数をカウントして分割します。 有効な値は次のとおりです。:
デフォルト値: |
|
各チャンクの最大サイズの制限を指定します。この設定では、大きいテキストで最大制限に達したときに、固定された位置で入力テキストが分割されます。 有効な値は次のとおりです。:
デフォルト値: |
|
最大サイズ制限に達したときに入力テキストを分割する位置を指定します。これにより、チャンクに対して適切な境界を定義することで、関連するデータが一緒になるように維持できます。 有効な値は次のとおりです。:
デフォルト値: |
|
チャンクに含める必要がある先行するテキストの量(正の整数リテラルまたはゼロ)を指定します(存在する場合)。これは、先行するチャンク・テキストの一部を含めて、関連するテキスト(文など)を論理的に分割するのに役立ちます。 重なりの量は、チャンクの最大サイズの測定方法(文字、単語または語彙トークン)によって異なります。重なりは、指定された 有効な値: デフォルト値: |
|
入力データの言語を指定します。 この句は、別の言語では異なる解釈になる可能性がある特定の文字(句読点や略語など)がテキストに含まれている場合に特に重要です。 有効な値は次のとおりです。:
ノート: エスケープ文字は、SQL予約語でもある言語の略語(たとえば、 次に例を示します。
デフォルト値: セッションの |
|
ドキュメントがテキストに変換されるときに発生する可能性のある問題(連続する複数の空白やスマート・クォートなど)を自動的に前処理または後処理します。正規化モードを使用して高品質のチャンクを抽出することをお薦めします。 有効な値は次のとおりです。:
デフォルト値: |
|
デフォルト値: |
ベクトル索引のパラメータ:
{
"distance" : <vector_distance>,
"accuracy" : <vector_accuracy>,
"vector_idxtype" : <vector_idxtype>
}
次に例を示します。
{
"distance" : COSINE,
"accuracy" : 95,
"vector_idxtype" : HNSW
}
パラメータ | 説明 |
---|---|
|
ベクトル間の距離を計算するために使用される距離メトリックまたは数学的関数:
ノート: 現在、 これらの各メトリックの詳細は、「ベクトル距離関数および演算子」を参照してください。 デフォルト値: |
|
ベクトル索引を使用して近似検索問合せを実行するときに近似検索を実行するターゲット精度。 「ベクトル索引を使用した近似類似検索の理解」で説明したように、使用している索引タイプに応じて、パーセンテージ値を指定するか、内部パラメータ値を指定することで、デフォルト以外のターゲット精度値を指定できます。
HNSWとIVFの両方のベクトル索引の有効範囲は、次のとおりです:
デフォルト値: :なし |
|
作成するベクトル索引のタイプ:
これらの各索引タイプの詳細は、「ベクトル索引の様々なカテゴリの管理」を参照してください。 デフォルト値: |
Pathsパラメータ:
type
およびpath_list
を指定する必要があります。
ノート:
ユーザーがpaths
フィールドを指定しない場合、ドキュメント全体が考慮されます。
"paths":[
{"type" : "<path_type>",
"path_list" : ["<path_list_array>"]
}
]
JSONドキュメントの例について考えてみましょう:
{
"person":
{
"bio": "James is a data scientist who specializes in natural language .. ",
"profile":
{
"text" : "James is a data scientist with expertise in Python programming...",
"embedding" : [1.60541728E-001,5.76677322E-002,4.0473938E-003,1.2037459E-001,-5.98970801E-004, ..]
},
"avatar": "https://example.com/images/James.jpg"
},
"product":
{
"description": "A social media analytics tool.", "It helps brands track...",
"image": "https://example.com/images/data_tool.jpg",
"embedding" : [1.60541728E-001,5.76677322E-002,4.0473938E-003,1.2037459E-001,-5.98970801E-004, ..]
}
}
前述のJSONに対応するpath_list
を次に示します:
"paths": [
{"type" : "VECTOR",
"path_list" : ["$.person.profile.embedding", "$.product.embedding"]
},
{"type" : "STRING",
"path_list" : ["$.person.bio", "$.product.description"]
}
]
次の表に、paths
パラメータの詳細を示します。
パラメータ |
許容値 |
|
このフィールドの有効な値は次のとおりです:
|
|
有効なJSON形式のパスが少なくとも1つあるパス( ノート: |
例
begin
DBMS_VECTOR_CHAIN.CREATE_PREFERENCE(
'my_vec_spec',
DBMS_VECTOR_CHAIN.VECTORIZER,
json('{ "vector_idxtype" : "hnsw",
"model" : "my_doc_model",
"by" : "words",
"max" : 100,
"overlap" : 10,
"split" : "recursively,
"language" : "english",
"paths": : [
{
"type" : "VECTOR",
"path_list" : ["$.person.profile.embedding"]
}
]
}'));
end;
/
CREATE HYBRID VECTOR INDEX my_hybrid_idx on
doc_table(text_column)
parameters('VECTORIZER my_vec_spec');
関連トピック
親トピック: DBMS_VECTOR_CHAIN