ベクトルは、基となる単語やピクセルなどの実際のコンテンツではなく、データの特徴や意味をエンコードしたテキスト、画像、音声、または動画の数値表現です。ベクトルはディメンションと呼ばれる数値のリストで構成され、人工知能(AI)の運用に使用することができます。
ベクトルは、埋め込みモデルとして知られる深層学習モデルによって、さまざまなタイプの入力データ(テキスト、画像、音声、動画、その他のデータ)から作成されます。埋め込みモデルや埋め込みサービスを使用してデータベースの外でベクトルを導入することもできますし、VECTOR_EMBEDDING() SQL関数を使用してONNX埋め込みモデルを使用してデータベースの中でベクトルを導入することもできます。
Oracle AI Vector Searchは、BINARY、INT8、FLOAT32およびFLOAT64形式をサポートしています。
Oracle AI Vector Searchでは、最大65,535次元のベクトルをサポートしています。
ベクトルのサイズは次元数と各次元のサイズの積になります。
たとえば、2,048ディメンションでINT8(1バイト)フォーマットのベクトルは2キロバイトのサイズになり、1,024ディメンションでFLOAT32(4バイト)フォーマットのベクトルは4キロバイトのサイズになります。
Oracle AI Vector Searchではスパース・ベクトルがサポートされており、通常は多数の次元がありますが、ゼロ以外の値を持つディメンションはわずかです。特定のドキュメントの場合、ベクトルのゼロ以外の次元値は、そのドキュメントに表示されるキーワード(およびそのバリエーション)に対応します。
AI Vector Searchは、サポートされている形式のいずれかで65,535以下の次元のベクトルを生成する有効な埋め込みモデルであれば、どのようなモデルでも動作します。
埋め込みモデルの選択は、データの性質、重視するパフォーマンスメトリクス、許容可能なコストなど、多くの要因に依存します。さまざまなセンテンス・トランスフォーマなど無償のオープンソース埋め込みモデルはHugging Faceなどのサイトで見つけることができます。これらのモデルをONNXに変換し、AIベクトル検索でデータベースに埋め込みを生成することができます。最適なテキスト埋め込みモデルの一般的な情報源として、Hugging FaceがホストするMTEBリーダーボードがあります。OpenAIやCohereなど実績のあるモデル・プロバイダーを利用することもできます。
AIベクトル検索は、テキスト、画像、音声、動画、その他のデータのモデルを問わず、すべての組み込みモデルから生成されたベクトルをサポートします。Oracle AI Databaseには、AI Vector Searchで画像ベースの距離操作を実行するために、ONNXで事前にコンパイルされた埋込みモデルも含まれています。
ベクトルでは複数の数学演算がサポートされています。最も重要な操作は、VECTOR_DISTANCE() SQL関数で、選択した距離式に基づいて2つのベクトル間の数学的距離を検索します。Oracle AI Vector Searchでは、Euclidean、Euclidean Squared、Cosine Similarity、Dot Product、Manhattan、Jaccard、Hammingなど、多くの距離数式がサポートされています。どの距離関数を選択するかは通常、ベクトルの生成に使用される埋込みモデルによって決まりますが、Oracle AI Database 26aiではデフォルトの距離メトリックとしてコサイン類似度が使用されます。
すべてのタイプのベクトルは同じプロパティを共有します。2つのエンティティが類似しているほど、それらの間の数学的距離は小さくなります。たとえば、「apple」と「orange」のベクトルは、「apple」と「dog」のベクトルよりも互いに近くなります。このベクトルのプロパティにより、意味的類似性に基づくデータの検索が可能になります。
AI Vector Searchをアプリケーションに簡単に組み込むことができる、シンプルで直感的なSQL拡張機能があります。ベクトル距離は類似性の尺度であるため、AI Vector Searchでは、検索ベクトルからの距離に基づいて候補ベクトルのセットをソートし、上位K個の最も近い一致を返すだけです。たとえば、以下のクエリは、ユーザーの検索写真に最も近い上位10個の製品を見つけます。
SELECT product_name, product_photo
FROM product
ORDER BY VECTOR_DISTANCE(product_photo_vector, :search_photo_vector)
FETCH FIRST 10 ROWS ONLY;
AIベクトル検索は、フィルタ、結合、集約、group byなどの要素を含む高度なクエリで使用することができます。たとえば、次のクエリは、ユーザーがアップロードした写真に基づいて、カリフォルニア州で製造された製品の上位10件を検索するために使用することができます。
SELECT p.name, p.photo, m.name
FROM product p
JOIN manufacturer m ON (p.mfr_id = m.id)
WHERE m.state = 'CA'
ORDER BY VECTOR_DISTANCE(product_photo_vector, :search_photo_vector)
FETCH FIRST 10 ROWS ONLY;
従来のデータベース索引は、値の一致に基づく検索を高速化するために使用されます。たとえば、B-tree索引により、値に基づいた検索や範囲スキャンが高速になります。一方、ベクトル索引は、値の完全一致ではなく意味的類似性に基づいて、上位K個の最も類似した一致を見つけるように設計されています。ベクトル索引を使用して、既存の単語コーパスの中から「apple」に最も意味的に類似する上位K個の単語を見つけることができます。ベクトル索引を使用すると、列内のすべてのベクトルを調べる必要がないため、検索精度を多少犠牲にする代わりに検索パフォーマンスが最大100倍向上する、近似検索が可能になります。
インメモリ近傍グラフ・ベクトル索引は、グラフベースのメモリー常駐索引です。グラフの頂点はベクトルを表し、頂点間の辺はベクトル間の類似性を表します。Oracle AIベクトル検索は、HNSW(Hierarchical Navigable Small World)タイプのインメモリ近傍グラフ・ベクトルインデックスをサポートします。HNSWインデックス作成は、スモールワールドネットワークの原理と階層構造を使用しているため、類似検索において非常に高速かつ正確です。
Oracle AI Vector Searchは、Inverted File Flat(IVF)タイプの近傍パーティション・ベクトルインデックスをサポートしています。近傍分割ベクトルインデックスは、類似性に基づいてベクトルが表パーティションにクラスタ作成されるディスクベースのベクトルインデックスです。高速でシームレスにトランザクションをサポートする効率的なスケールアウトインデックスで、高品質な検索と合理的な速度のバランスをとることができます。メモリに依存しないため、無制限のデータサイズに対応できるように設計されています。
ハイブリッド・ベクトル・インデックスは新しいタイプのベクトル・インデックスで、ユーザーは全文検索とセマンティックベクトル検索を使用して、ドキュメントに簡単にインデックスを作成し、クエリを実行することで、より質の高い検索結果を得ることができます。この統合クエリAPIをサポートすることで、ユーザーはテキストクエリ、ベクトル類似性クエリ、または両方のアプローチを活用したハイブリッドクエリを実行することができます。
AIベクトル検索アプリケーションは、SQLやPL/SQLに加え、様々なプログラミング言語で構築することができます。AI Vector Searchは、Java、Python、JavaScript、C#などの一般的な言語におけるベクトルに対するネイティブ・ドライバをサポートしています。
AIベクトル検索は、多くの場合、検索拡張生成(RAG)ワークフローの一部です。生成AI大規模言語モデル(LLM)からの応答をファインチューニングするために必要な追加入力を提供します。
RAGと組み合わせると、ユーザーの質問はまずベクトルに変換され、AIベクトル検索によってデータベース内の最も関連性の高いドキュメントにマッピングされます。次に、ユーザーの質問とそれをサポートする関連ドキュメントがLLMに渡され、LLMは一般ナレッジとナレッジ・ベースからの専門的な知識に基づいて情報に基づく回答を生成します。
AIベクトル検索は、Llama3やMistralのようなオープンソースモデルや、OpenAIやCohereのようなプロバイダー独自のモデルを含む、あらゆるLLMでRAGに使用することができます。さらに、AIベクトル検索とLLM for RAGをシームレスな統合するための専門的なPL/SQL APIが利用可能です。
AIベクトル検索は、LangChainおよびLlamaIndexと統合されています。これらのフレームワークは、大規模言語モデルアプリケーションのプライベートデータとパブリックデータの統合を支援します。
取得拡張生成(RAG)は生成AI(GenAI)において転換方向を担っており、GenAIアプリケーションに大きな利点を提供しています。以下は、RAGを生成AIセットアップに統合することが最も重要である3つの説得力のある理由です。
並列実行、パーティショニング、Real Application Clusters(Oracle RAC)、シャーディング、Exadataなど、オラクルの幅広いスケーラビリティ・メカニズムにより、AIベクトル検索は事実上あらゆるデータ・サイズとユーザー数にスケールアップできます。
並列実行、パーティショニング、, Oracle Real Application Clusters (Oracle RAC)、シャーディング、Exadataなど、オラクルの幅広いスケーラビリティ・メカニズムにより、AIベクトル検索は事実上あらゆるデータ・サイズとユーザー数にスケールアップできます。Oracle Exadataには、AIベクトル検索のクエリ運用をExadataストレージ・サーバーにオフロードし、圧倒的なクエリ・パフォーマンスを実現するAIスマート・スキャンも搭載されています。
Oracle AI Veector Search は、オラクルの業界をリードするデータベースセキュリティ機能とシームレスに統合し、リスクを軽減し、コンプライアンスを簡素化します。組織は、高度なAI検索機能を最大限に活用しながら、暗号化、データ・マスキング、特権ユーザー・アクセス制御、アクティビティ・モニタリング、監査などの堅牢なツールを活用することで、ベクター・データを安全に保護することができます。Database VaultやVirtual Private Databaseなどのデータベース内機能は、ベクトル・データをセキュアに保護し、適切な権限を持つユーザーだけがアクセスできるように支援します。
つまり、Oracle AI Veector Searchは、企業のベクトル・インフラのフットプリントを大幅に削減できます。他のベクトル・データベースでよくあるように、データを複製したり、管理オーバーヘッドを追加したりする必要がなく、1つのOracle AI Databaseで、アクセス権限や認可が異なるさまざまなユーザーのニーズに対応できます。
Oracle AI Databaseのベクトルは、最初のクラスのデータベース・データ型です。つまり、ベクトルは、Oracleを世界有数のエンタープライズ・データベースにしているすべての革新的な機能と特徴を暗黙のうちに継承します。高可用性(HA)は、Oracle RACまたはOracle Globally Distributed Database(シャード)で類似検索を実行することによって提供されます。Data Guard、Active Data Guard、およびオラクル・ゴールデンゲートはすべて、自動的にディザスタ・リカバリを提供します。