分散データベースでの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 CHUNKADD 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;