OceanBaseは、AIベクトル検索関連のアプリケーションをサポートするためにベクトルデータ型を提供しています。ベクトルデータ型を使用することで、例えば[0.1, 0.3, -0.9, ...]のような単精度浮動小数点数の配列を格納およびクエリできます。配列はシングルクォートで囲む必要があります。ベクトルデータを使用する前に、以下の点を確認してください:
- 密ベクトルと疎ベクトルがサポートされており、どちらもデータ要素はすべて単精度浮動小数点数です。
- ベクトルデータの要素値は、非数値(NaN)や無限大(Inf)を含むことはできません。含む場合はランタイムエラーが発生します。
- ベクトル列を作成する際には、ベクトルの次元を指定する必要があります。例:
VECTOR(3)。 - 密ベクトルインデックスの作成がサポートされています。詳細は密ベクトルインデックスを参照してください。
- OceanBaseのベクトルデータは配列形式で格納されます。
- 密ベクトル/疎ベクトルはどちらもハイブリッド検索をサポートしています。
構文
密ベクトル値は、16,000個以内の任意の数の浮動小数点数を含むことができます。構文は以下のとおりです:
-- 密ベクトル
'[<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
);