TO_VECTOR

TO_VECTORは、VARCHAR2CLOBBLOBまたはJSON型の文字列を入力として受け取り、それをベクトルに変換し、ベクトルを出力として返すコンストラクタです。また、TO_VECTORは入力として別のベクトルを受け取り、その書式を調整し、調整されたベクトルを出力として返します。TO_VECTORは、VECTORと同義です。

パラメータ

  • exprは次のいずれかと評価される必要があります。

    • ベクトルを表す文字列(文字型またはCLOB)。
    • VECTOR
    • BLOBBLOBではベクトルのバイナリ・バイトを表す必要があります。
    • JSON配列。配列内のすべての要素が数値である必要があります。

    exprがNULLの場合、結果はNULLになります。

    ベクトルの文字列表現は、大カッコで囲まれてカンマで区切られたNULL以外の数値の配列([1, 3.4, -05.60, 3e+4]など)の形式である必要があります。TO_VECTORは、ベクトルの有効な文字列表現を、指定された形式のベクトルに変換します。形式が指定されていない場合は、デフォルトの形式が使用されます。

  • number_of_dimensionsは、作成するベクトルのディメンション数を表す数値である必要があります。ディメンション数は、アスタリスク(*)として指定することもできます。この場合、次元はexprによって判断されます。

  • formatは、トークンINT8FLOAT32FLOAT64BINARYまたは*のどれかである必要があります。これはベクトルのターゲットでの内部格納形式です。*を使用した場合、形式はFLOAT32になります。

    この動作は、ベクトル列の宣言とは異なります。VECTOR(3, *)型の列を宣言すると、挿入されたすべてのベクトルがそのまま格納され、書式は変更されません。

  • storage_formatは、トークンDENSESPARSEまたは*のどれかである必要があります。格納形式が指定されていない場合や*が使用されている場合は、入力タイプに応じて次のようになります:
    • テキスト入力: 格納形式はデフォルトでDENSEになります。
    • JSON入力: 格納形式はデフォルトでDENSEになります。
    • VECTOR入力: デフォルトはなく、格納形式は変更されません。
    • BLOB入力: デフォルトはなく、格納形式は変更されません。

SELECT TO_VECTOR('[34.6, 77.8]');

TO_VECTOR('[34.6,77.8]')
---------------------------------------------------------
[3.45999985E+001,7.78000031E+001]



SELECT TO_VECTOR('[34.6, 77.8]', 2, FLOAT32);

TO_VECTOR('[34.6,77.8]',2,FLOAT32)
---------------------------------------------------------
[3.45999985E+001,7.78000031E+001]



SELECT TO_VECTOR('[34.6, 77.8, -89.34]', 3, FLOAT32);

TO_VECTOR('[34.6,77.8,-89.34]',3,FLOAT32)
-----------------------------------------------------------
[3.45999985E+001,7.78000031E+001,-8.93399963E+001]



SELECT TO_VECTOR('[34.6, 77.8, -89.34]', 3, FLOAT32, DENSE);

TO_VECTOR('[34.6,77.8,-89.34]',3,FLOAT32,DENSE)
---------------------------------------------------------------------
[3.45999985E+001,7.78000031E+001,-8.93399963E+001]

ノート:

  • Oracle Database 23aiに接続された23aiより前のOracle Clientライブラリを使用するアプリケーションでは、TO_VECTORファンクションを使用してベクトル・データを挿入します。次に例を示します。

    INSERT INTO vecTab VALUES(TO_VECTOR('[1.1, 2.9, 3.14]'));
  • Oracle Client 23aiライブラリまたはThinモード・ドライバを使用するアプリケーションでは、ベクトル・データを文字列またはCLOBとして直接挿入できます。次に例を示します。

    INSERT INTO vecTab VALUES ('[1.1, 2.9, 3.14]');