MLEのJavaScriptでのVECTORデータ型のサポート
Oracle Multilingual Engine (MLE)では、JavaScript TypedArraysとSQLベクトルの間のINT8、FLOAT32およびFLOAT64形式の変換がサポートされています。JavaScriptデータ型とVECTORデータ型間のデータ交換は、MLE JavaScript SQLドライバ、MLEコール仕様およびMLE JavaScriptバインディングによってサポートされます。
VECTORデータ型は、IN、OUTおよびIN OUTバインド引数、および戻り型として指定できます。MLEコール仕様のSIGNATURE句では、次のJavaScript型がサポートされます。
Float32ArrayFloat64ArrayInt8Array
表A-5 VECTORデータ型からJavaScript型へのマッピング
| SQL型 | JavaScript型 |
|---|---|
VECTOR(*, float32) |
Float32Array (TypedArray)
|
VECTOR(*, float64) |
Float64Array (TypedArray)
|
VECTOR(*, int8) |
Int8Array (TypedArray)
|
VECTOR(*) |
Float64Array脚注1(TypedArray)
|
脚注1 ベクトル形式が指定されていない場合、デフォルトでFloat64Arrayが使用されます。
表A-6 JavaScript型からVECTORデータ型へのマッピング
| JavaScript型 | SQL型 |
|---|---|
Float32Array |
VECTOR(*, float32) |
Float64Array |
VECTOR(*, float64) |
Int8Array |
VECTOR(*, int8) |
Array |
VECTOR(*, float64) |
関連項目:
-
VECTORデータ型およびOracle AI Vector Search機能の詳細は、『Oracle Database Oracle AI Vector Search ユーザーズ・ガイド』を参照してください。
例A-1 MLEでのVECTORデータ型の使用
この例では、引数で使用されるVECTORデータ型と、MLEコール仕様の戻り型のサポートを示します。
SET SERVEROUTPUT ON;
CREATE OR REPLACE MLE MODULE vec_mod
LANGUAGE JAVASCRIPT AS
/**
* Add two vectors
* @param v1 the first vector
* @param v2 the second vector
* @returns the resulting vector after adding v1 and v2
*/
export function addVectors(v1, v2){
return v1.map((element, index) => element + v2[index]);
}
/**
* Subtract two vectors
* @param v1 the first vector
* @param v2 the second vector
* @returns the resulting vector after subtracting v2 from v1
*/
export function subtractVectors(v1, v2){
return v1.map((element, index) => element - v2[index]);
}
/
CREATE OR REPLACE PACKAGE mle_vec_pkg AS
FUNCTION addVectors(
input_vector1 IN VECTOR,
input_vector2 IN VECTOR
)
RETURN VECTOR
AS MLE MODULE vec_mod
SIGNATURE 'addVectors';
FUNCTION subtractVectors(
input_vector1 IN VECTOR,
input_vector2 IN VECTOR
)
RETURN VECTOR
AS MLE MODULE vec_mod
SIGNATURE 'subtractVectors';
END mle_vec_pkg;
/
SELECT mle_vec_pkg.addVectors(
VECTOR('[1, 2]'),
VECTOR('[3, 4]')
) AS result;
結果:
RESULT
---------------------------------------------
[4.0E+000,6.0E+000]
SELECT mle_vec_pkg.subtractVectors(
VECTOR('[3, 4]'),
VECTOR('[1, 2]')
) AS result;
結果:
RESULT
---------------------------------------------
[2.0E+000,2.0E+000]
親トピック: MLEの型変換