SQL*Loaderを使用したバイナリ・ベクトル・データのロードの例
この例では、SQL*Loaderを使用してバイナリ・ベクトル・データ・ファイルをロードする方法を確認できます。
バイナリ(fvec
)ファイルのベクトルは、32ビットのリトル・エンディアンのRAW形式で格納されます。
各ベクトルは、.fvecs
ファイルで4+d*4バイトを占有します。ここで、最初の4バイトはベクトルの次元(d)を示し(つまり、ベクトルの次元数)、その後にベクトル・データを表すd*4バイトが続きます(次の表を参照)。
表5-2 ベクトルの次元および成分のフィールド
フィールド | フィールド型 | 説明 |
---|---|---|
|
int | ベクトルの次元 |
成分 |
浮動小数点数の配列 |
ベクトルの成分 |
バイナリfvec
ファイルの場合、次のように定義する必要があります。
LOBFILE
を指定する必要があります。- データ・ファイルにバイナリの次元が含まれていることを示すには、構文形式
fvecs
を指定する必要があります。 - データ・ファイルに生のバイナリ・データ(
raw
)が含まれていることを指定する必要があります。
次に、「Hierarchical Navigable Small World索引の理解」で説明されている銀河ベクトルの例を使用して、バイナリ浮動小数点配列からVECTOR
列をロードするために使用される制御ファイルの例を示します。ただし、この場合、制御ファイル構文format "fvecs"
を使用してfvecs
データをインポートします。
ノート:
SQL*Loaderでは、文字データおよびバイナリ浮動小数点配列のfvec
ファイルからVECTOR
列をロードすることがサポートされています。fvec
ファイルの形式では、各バイナリの32ビットの浮動小数点配列の前に4バイトの値(ベクトルの要素数)があります。ファイル内に複数のベクトルが存在することがあり、次元が異なる可能性があります。
LOAD DATA
infile 'galaxies_vec.csv'
INTO TABLE galaxies
fields terminated by ':'
trailing nullcols
(
id,
name char (50),
doc char (500),
embedding lobfile (constant '/u01/data/vector/embedding.fvecs' format "fvecs") raw
)
この場合、galaxies_vec.csv
に含まれるデータにはベクトル・データがありません。かわりに、ベクトル・データは、/u01/data/vector
ディレクトリ(/u01/data/vector/embedding.fvecs
)のセカンダリLOBFILE
から読み取られます。このファイルには、float32
浮動小数点の2進数に同じ情報が含まれていますが、fvecs
形式です。
1:M31:Messier 31 is a barred spiral galaxy in the Andromeda constellation which has a lot of barred spiral galaxies.:
2:M33:Messier 33 is a spiral galaxy in the Triangulum constellation.:
3:M58:Messier 58 is an intermediate barred spiral galaxy in the Virgo constellation.:
4:M63:Messier 63 is a spiral galaxy in the Canes Venatici constellation.:
5:M77:Messier 77 is a barred spiral galaxy in the Cetus constellation.:
6:M91:Messier 91 is a barred spiral galaxy in the Coma Berenices constellation.:
7:M49:Messier 49 is a giant elliptical galaxy in the Virgo constellation.:
8:M60:Messier 60 is an elliptical galaxy in the Virgo constellation.:
9:NGC1073:NGC 1073 is a barred spiral galaxy in Cetus constellation.:
親トピック: SQL*Loaderを使用したベクトル・データのロード