OceanBaseは、AIベクトル検索に関連するアプリケーションをサポートするために、ベクトルデータ型を提供しています。ベクトルデータ型を使用することで、[0.1, 0.3, -0.9, ...]のような浮動小数点数の配列を格納し、クエリを実行できます。ベクトルデータを使用する前に、以下の点にご注意ください:
- 密ベクトルと疎ベクトルのデータをサポートしており、データ要素はすべて単精度浮動小数点数です。
- ベクトルデータ内の要素に非数(NaN)や無限大(Inf)を設定することはできず、設定すると実行時エラーが発生します。
- ベクトル列を作成する際には、
VECTOR(3)のようにベクトルの次元を指定する必要があります。 - 密ベクトルインデックスを作成できます。詳細はベクトルインデックスを参照してください。
- OceanBaseのベクトルデータは配列形式で格納されます。
- 密ベクトル・疎ベクトルのいずれもハイブリッド検索をサポートしています。
注意
疎ベクトルデータは、V4.3.5 BP2バージョンからサポートされています。
構文
密ベクトル値には、16000個以内の任意の数の浮動小数点数を含めることができます。構文は以下の通りです。
-- 密ベクトル
'[<float>, <float>, ...]'
疎ベクトルはMAPデータ型に基づいており、順不同のキーと値のペアを含みます。構文は以下の通りです。
-- 疎ベクトル
'{<uint:float>, <uint:float>...}'
ベクトル列とインデックスを作成する例は以下の通りです。
-- 密ベクトル列とインデックスの作成
CREATE TABLE t1(
c1 INT,
c2 VECTOR(3),
PRIMARY KEY(c1),
VECTOR INDEX idx1(c2) WITH (distance=L2, type=hnsw)
);
-- 疎ベクトル列の作成
CREATE TABLE t2 (
c1 INT,
c2 SPARSEVECTOR
);