INDEX_ACCURACY_QUERY
特定の問合せベクトル、上位Kおよびターゲット精度についてベクトル索引の精度を検証するには、DBMS_VECTOR.INDEX_ACCURACY_QUERY関数を使用します。
構文
DBMS_VECTOR.INDEX_ACCURACY_QUERY (
OWNER_NAME IN VARCHAR2,
INDEX_NAME IN VARCHAR2,
QV IN VECTOR,
TOP_K IN NUMBER,
TARGET_ACCURACY IN NUMBER
) return VARCHAR2;
DBMS_VECTOR.INDEX_ACCURACY_QUERY (
OWNER_NAME IN VARCHAR2,
INDEX_NAME IN VARCHAR2,
QV IN VECTOR,
TOP_K IN NUMBER,
QUERY_PARAM IN JSON
) return VARCHAR2;パラメータ
表12-4 DBMS_VECTORのINDEX_ACCURACY_QUERY (IN)のパラメータ
| パラメータ | 説明 |
|---|---|
owner_name |
ベクトル索引の所有者の名前。 |
index_name |
ベクトル索引の名前。 |
qv |
問合せベクトルを指定します。 |
top_k |
精度計算の |
target_accuracy |
ベクトル索引のターゲット精度値。 |
query_param |
ベクトル索引の精度の計算中に使用する問合せパラメータの指定に使用できるJSON入力。サポートされる値は次のとおりです。
|
ベクトル索引の精度を判断する方法の詳細は、『Oracle AI Database Oracle AI Vector Searchユーザーズ・ガイド』の索引精度レポートを参照してください。
使用上の注意
query_paramパラメータでrescore factorフィールドを指定すると、この値を使用して、指定された索引について、達成された精度が計算されます。これにより、精度の要件に基づいて、スカラー量子化HNSW索引について、適切な再スコア係数を手動で選択できるようになります。
量子化の詳細は、Oracle AI Database AI Vector Searchユーザーズ・ガイドでスカラー量子化HNSW索引を参照してください。
例
IVF索引を使用した例:
DECLARE
q_v VECTOR;
report VARCHAR2(128);
BEGIN
q_v := TO_VECTOR('[1, 1, 1]', 3, FLOAT64);
report := DBMS_VECTOR.INDEX_ACCURACY_QUERY(owner_name => 'VEC',
index_name => 'IVF_IDX',
qv => q_v,
top_K => 10,
query_param => json('{"accuracy": 80 }'));
DBMS_OUTPUT.PUT_LINE(report);
END;
/
結果:
Accuracy achieved (100%) is 20% higher than the Target Accuracy requested (80%)
DECLARE
q_v VECTOR;
report VARCHAR2(128);
BEGIN
q_v := TO_VECTOR('[1, 1, 1]', 3, FLOAT64);
report := DBMS_VECTOR.INDEX_ACCURACY_QUERY(owner_name => 'VEC',
index_name => 'IVF_IDX',
qv => q_v,
top_K => 10,
query_param => json('{"neighbor partition probes": 2}'));
DBMS_OUTPUT.PUT_LINE(report);
END;
/
結果:
Accuracy achieved (100%) for NEIGHBOR PARTITION PROBES (2)
HNSW索引を使用した例:
DECLARE
q_v VECTOR;
report VARCHAR2(128);
BEGIN
q_v := TO_VECTOR('[1, 1, 1]', 3, FLOAT64);
report := DBMS_VECTOR.INDEX_ACCURACY_QUERY(owner_name => 'VEC',
index_name => 'HNSW_IDX',
qv => q_v,
top_K => 10,
query_param => json('{"efsearch": 32}'));
DBMS_OUTPUT.PUT_LINE(report);
END;
/
結果:
Accuracy achieved (100%) for EFSEARCH (32)
量子化HNSW索引を使用した例:
DECLARE
q_v VECTOR;
report VARCHAR2(128);
BEGIN
q_v := TO_VECTOR('[1, 1, 1]', 3, FLOAT64);
report := DBMS_VECTOR.INDEX_ACCURACY_QUERY(owner_name => 'VEC',
index_name => 'QUANTIZED_HNSW_IDX',
qv => q_v,
top_K => 10,
query_param => json('{"efsearch": 32, "rescore factor " : 2}'));
DBMS_OUTPUT.PUT_LINE(report);
END;
/
結果:
Accuracy achieved (100%) for EFSEARCH (32), RESCORE FACTOR (2)
親トピック: DBMS_VECTOR