分散データベースでのOracle AI Vector Search
AI Vector Searchに対するOracle Globally Distributed Databaseサポートには、ほとんどの分散データベース機能が含まれています。
サポートには次のものが含まれます:
-
ベクトル・データ型列を含むシャード表および重複表の作成。
-
Inverted File Flat (IVF)索引やHierarchical Navigable Small World (HNSW)索引など、シャード表および重複表に対するベクトル索引の作成。
-
ベクトル・データ型を含むシャード表および重複表のシャード・カタログからDMLを発行できます。
-
ベクトル・データ型列を含む重複表のシャードからDMLを発行できます。
-
シャード・カタログから、または直接ルーティング機能を使用してシャードから、シャード表および重複表に対するベクトル検索問合せを発行できます。
-
シャード・カタログで発行されたベクトル検索問合せを分析および変換して、シャードに送信される問合せの部分と、カタログで実行する必要がある部分を識別します。
-
すべてのタイプのデータ分散(システム・シャーディング、ユーザー定義シャーディング、コンポジット・シャーディングおよびディレクトリ・ベースのシャーディング)でベクトル検索をサポートしています。
-
パッケージ
DBMS_VECTOR
およびDBMS_VECTOR_CHAIN
にあるプロシージャはGlobally Distributed Databaseでサポートされています。
いくつかの制限事項があります:
-
シャーディング・キー: Globally Distributed Databaseでは、非ベクトル列のシャーディング・キーのみがサポートされます。ベクトル・データは、シャーディング・キーとして識別される他の非ベクトル列の主キーを使用してシャード間に分散されます。
-
Raftレプリケーション: Raftレプリケーション方法を使用する分散データベースでは、ベクトル列はサポートされません。
分散データベースが提供する必要があること、つまり、複数のデータベースにデータが分散されることで、AI Vector Searchには次の利点があります:
-
データ主権の規制への準拠
-
すべてのデータが使用できなくなるリスクの低減
-
スループットの向上およびレイテンシの削減によるスケーラビリティの実現
分散データベース表のベクトル
Globally Distributed Databaseにベクトル列を含むシャード表および重複表を作成する場合、新しいSQL構文やキーワードはありませんが、いくつかの考慮する要件および制限があります。
ユーザー権限
シャード表および重複表を作成できるのは、全シャード・ユーザーのみです。シャード・カタログに全シャード・ユーザーとして接続する必要があります。全シャード・ユーザーとしてシャード・カタログに接続すると、SHARD DDL
が自動的に有効になり、表を作成するためのDDLが分散データベース内のすべてのシャードに伝播されます。
ベクトル列を含むシャード表の作成
-
シャード表は、
SHARD DDL
を有効にしたカタログ・データベースで作成する必要があります。 -
ベクトル列は、シャーディング・キーまたはパーティションセット・キーの一部にはできません。
-
CREATE SHARDED TABLE
コマンドは、シャード・コーディネータによってすべてのシャードに伝播されます。
ベクトル列を含むシャード表を作成する構文は、ベクトル列を含む非シャード表を作成する構文と同様です。唯一の違いは、CREATE TABLE
文にSHARDED
キーワードを含めることです。
CREATE SHARDED TABLE REALTORS(
REALTOR_ID NUMBER PRIMARY KEY,
NAME VARCHAR2(20),
IMAGE VECTOR,
ZIPCODE VARCHAR2(40))
PARTITION BY CONSISTENT HASH(REALTOR_ID)
TABLESPACE SET TS1;
ベクトル列を含む重複表の作成
-
重複表は、
SHARD DDL
を有効にしたシャード・カタログ・データベースで作成する必要があります。
ベクトル列を含む重複表を作成する構文は、ベクトル列を含む非シャード表を作成する構文と同様です。唯一の違いは、CREATE TABLE
文にDUPLICATED
キーワードを含めることです。
CREATE DUPLICATED TABLE PRODUCT_DESCRIPTIONS
(
PRODUCT_ID NUMBER(6,0) NOT NULL,
ORDER_ID NUMBER(6,0) NOT NULL,
LANGUAGE_ID VARCHAR2(6 BYTE),
TRANSLATED_NAME NVARCHAR2(50),
TRANSLATED_DESCRIPTION NVARCHAR2(2000),
VECT4 VECTOR,
VECT5 VECTOR,
CONSTRAINT PRODUCT_DESCRIPTIONS_PK primary key (PRODUCT_ID)
) tablespace products
STORAGE (INITIAL 1M NEXT 1M);
Globally Distributed Databaseでのベクトル索引
分散データベース内のシャード表では、Inverted File Flat (IVF)索引とHierarchical Navigable Small World (HNSW)索引がサポートされていますが、いくつかの考慮事項があります。
ノート:
-
グローバル索引はシャード表ではサポートされていませんが、グローバルHNSWおよびIVF索引にはこの制限はありません。
-
ハイブリッド・ベクトル索引(HVI)は、シャード表では現在サポートされていません。
-
シャード表にグローバル・ベクトル索引がある場合、GDSCTLコマンド
MOVE CHUNK
、ADD CDB
およびADD SHARD
では、ORA-05118が発生します。これらの操作を実行する前に、グローバル・ベクトル索引を削除します。
Inverted File Flat索引
Inverted File Flat索引(IVFフラットまたは単純にIVF)は、高い検索品質と適切な速度のバランスをとることができるパーティションベースの索引です。
シャード表のベクトル列にはローカルIVF索引を作成できます。構文の変更は必要ありません。
-
シャード表のIVF索引およびHNSW索引は、
SHARD DDL
を有効にしたシャード・カタログ・データベースで作成する必要があります。 -
CREATE INDEX
コマンドは、シャード・コーディネータによってすべてのシャードにそのまま伝播されます。CREATE INDEX
句のスコープはシャードです。
非シャード表にIVF索引を作成する構文と比べて、シャード表にIVF索引を作成する構文の変更はありません。
CREATE VECTOR INDEX ivf_image
ON houses (image)
ORGANIZATION NEIGHBOR PARTITIONS WITH TARGET ACCURACY 95
DISTANCE EUCLIDEAN PARAMETERS
(type IVF, NEIGHBOR PARTITIONS 1000) PARALLEL 16;
Hierarchical Navigable Small World索引
非シャード表にHNSW索引を作成する構文と比べて、シャード表にHierarchical Navigable Small World (HNSW)索引を作成する構文の変更はありません。
CREATE VECTOR INDEX hnsw_image
ON houses (image)
ORGANIZATION INMEMORY NEIGHBOR GRAPH
WITH TARGET ACCURACY 95;