Oracle AI Vector Searchの概要

Oracle AI Vector Searchは、人工知能(AI)ワークロード用に設計されており、キーワードではなくセマンティクスに基づいてデータを問い合せることができます。

VECTORデータ型

VECTORデータ型は、Oracle Database 23aiのリリースで導入され、ベクトル埋込みをデータベース内のビジネス・データとともに格納するための基盤となります。埋込みモデルを使用すると、非構造化データをベクトル埋込みに変換して、ビジネス・データに対するセマンティック問合せに使用できます。VECTORデータ型とその関連機能を使用するには、COMPATIBLE初期化パラメータを23.4.0以上に設定する必要があります。このパラメータとその変更方法の詳細は、『Oracle Databaseアップグレード・ガイド』を参照してください。

表定義でVECTORデータ型を使用する次の基本的な例を参照してください。

CREATE TABLE docs (doc_id INT, doc_text CLOB, doc_vector VECTOR);

VECTORデータ型および表でのベクトルの使用方法の詳細は、「VECTORデータ型を使用する表の作成」を参照してください。

VECTORデータ型の数値特性により、分類、異常、回帰、クラスタリング、特徴抽出などの機械学習アルゴリズムへの入力として使用できます。機械学習でのVECTORデータ型の使用の詳細は、ベクトル・データ型のサポートを参照してください。

ノート:

VECTORデータ型の機械学習のサポートは、23.7以降のすべてのバージョンで使用できますが、以前のバージョンでは使用できません。

ベクトル埋込み

音声アシスタント、チャットボット、言語翻訳機能、レコメンデーション・システム、異常検出、ビデオの検索および認識などのアプリケーションを使用したことがある場合は、ベクトル埋込み機能を暗黙的に使用しています。

Oracle AI Vector Searchでは、データ・ポイントの数学的ベクトル表現であるベクトル埋込みを格納します。これらのベクトル埋込みは、単語、ドキュメント、音声トラック、画像などのコンテンツの背後にある意味論的な意味を表現します。たとえば、多くの場合、テキスト・ベースの検索の実行ではベクトル検索がキーワード検索よりも優れていると見なされます。ベクトル検索は、実際の単語自体ではなく、単語の背後にある意味とコンテキストに基づくためです。このベクトル表現では、人間が認識するオブジェクトの意味的類似度が数学的ベクトル空間の近接に変換されます。このベクトル空間には、通常、数千でなければ数百の次元があります。言い換えると、ベクトル埋込みはテキスト、画像、ビデオ、ユーザー、音楽などのほぼすべての種類のデータを多次元空間内のポイントとして表す方法であり、空間内のそれらのポイントの場所および他のポイントとの近接性がセマンティックな意味を持ちます。

この簡略化された図は、単語が2次元ベクトルとしてエンコードされるベクトル空間を示しています。



類似検索

データ・セットの意味的類似度の検索は、問合せ述語を使用した従来のキーワード検索ではなく、ベクトル空間で最近傍を検索することと同等になりました。次の図に示すように、このベクトル空間のdogwolfの間の距離は、dogkittenの間の距離より短くなりますこの空間では、犬は子猫よりも狼に似ています。詳細は、「完全類似検索の実行」を参照してください。



ベクトル・データは不均等に分散され、セマンティックに関連するグループにクラスタ化される傾向があります。特定の問合せベクトルに基づいて類似検索を行うことは、ベクトル空間で問合せベクトルに最も近いK件のベクトルを取得することと同等です。基本的に、ベクトルの順序付きリストをランク付けして検索する必要があります。リストの最初の行は問合せベクトルに最も近いまたは最も類似したベクトルで、リスト内の2番目の行は問合せベクトルに2番目に最も近いベクトルです(以下同様に続きます)。類似検索を行う場合、距離の相対的な順序は実際の距離よりも重要です。

前述のベクトル空間を使用して、問合せベクトルがPuppyという単語に対応するものであり、最も近い4つの単語を識別する場合のセマンティック検索の図を次に示します。



類似検索では、問合せベクトルの値およびフェッチ・サイズに応じて、1つ以上のクラスタからデータが取得される傾向があります。

ベクトル索引を使用した近似検索では、検索を特定のクラスタに制限できますが、完全検索ではすべてのクラスタにわたるベクトルが訪問されます。詳細は、「ベクトル索引の使用」を参照してください。

ベクトル埋込みモデル

このようなベクトル埋込みを作成する1つの方法は、誰かのドメインの専門知識を使用して、処理するオブジェクト・タイプに応じて、形状、テクスチャ、色、センチメントなどの事前定義された一連の機能または次元を定量化することです。ただし、この方法の効率はユースケースによって異なり、必ずしもコスト効率が高いとはかぎりません。

かわりに、ベクトル埋込みはニューラル・ネットワークを介して作成されます。ほとんどの最新のベクトル埋込みでは、次の図に示すようにTransformerモデルが使用されますが、畳み込みニューラル・ネットワークも使用されることがあります。

図2-1 ベクトル埋込みモデル



データのタイプに応じて、様々な事前トレーニング済のオープンソース・モデルを使用してベクトル埋込みを作成できます。次に例を示します。

  • テキスト・データの場合、文トランスフォーマは単語、文または段落をベクトル埋込みに変換します。
  • 視覚データの場合、残差ネットワーク(ResNet)を使用してベクトル埋込みを生成できます。
  • 音声データの場合、音声データの視覚的なスペクトログラム表現を使用して、視覚データのケースにフォールバックできます。

各モデルによって、ベクトルの次元数も決まります。次に例を示します。

  • Cohereの埋込みモデルembed-english-v3.0には1024の次元があります。
  • OpenAIの埋込みモデルtext-embedding-3-largeは3072の次元があります。
  • Hugging Faceの埋込みモデルall-MiniLM-L6-v2には384の次元があります

もちろん、独自のデータ・セットを使用してトレーニングされた独自のモデルをいつでも作成できます。

Oracle Databaseへのモデルの埋込みのインポート

事前トレーニング済のオープンソースの埋込みモデルまたは独自の埋込みモデルを使用して、Oracle Databaseの外部でベクトル埋込みを生成できますが、これらのモデルがOpen Neural Network Exchange (ONNX)標準と互換性がある場合は、Oracle Databaseに直接インポートすることもできます。Oracle Databaseでは、データベース内にONNX Runtimeが直接実装されます。これにより、SQLを使用してOracle Database内でベクトル埋込みを直接生成できます。詳細は、「ベクトル埋込みの生成」を参照してください。