Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Oracle AI Vector Search 技術概要

Oracle AI Vector Search 技術概要

oracle4engineer

May 21, 2024
Tweet

More Decks by oracle4engineer

Other Decks in Technology

Transcript

  1. Oracle Database 23ai AI Vector Search パフォーマンスとスケーラビリティ・開発⽣産性とリスキリング・運⽤効率性 あらゆるデータの進化を⽀えるデータプラットフォーム AIアプリケーション開発の劇的な⽣産性向上 •

    ベクトル・データを含む、あらゆるデータ型を⼀つのデータベースで統合管理 • 構造データとベクトル・データのベクトル検索をSQLで実⾏する事による 検索の⾼度化の実現 • ベクトルデータを構造管理し実現するマルチモーダル・マルチベクトル検索 ⾼速なベクトル検索 • パーティション化されたベクトル索引 • グラフ・テクノロジーを活⽤したベクトル検索の正確性品質を兼ね備えた⾼速化 • SQL構⽂のカスタマイズ性がRAGにおける精度チューニングを加速 ⾼可⽤性、スケーラビリティ、セキュリティ • データ整合性を保持したスケールアウトによるベクトルデータ技術の⺠主化 • Oracle Databaseが市場を牽引する⾼性能・⾼可⽤性・堅牢なセキュリティ技術を ベクトル検索に Copyright © 2024, Oracle and/or its affiliates 2
  2. • 類似テキストの検索 • 類似画像の検索 ベクトル検索のユースケース 質問を Embedding モデルでベクトル化 {TEXT} ⼊⼒された質問

    事前に格納された QA⼀覧の ベクトルデータ 上位⼀致抽出 {TEXT} {TEXT} 1. 2. 類似したQAを出⼒ ⼊⼒された画像 画像を Embedding モデルでベクトル化 事前に格納された 画像⼀覧の ベクトルデータ 上位⼀致抽出 Oracle Database 23ai Copyright © 2024, Oracle and/or its affiliates 3
  3. • ベクトルデータベースとは • セマンティック検索や、画像や⽂書などの類似性検索を⾼い精度で実現する技術のひとつ。これらの検索のために 下記のベクトルデータをデータベース内部に持ち、SQLを⽤いて検索(ベクトル検索)を 実施するのがベクトルデータベース • ベクトルデータとは • 画像および⽂書の特徴をベクトルの形に落としたもの。ベクトルはいわゆる⾼校数学ででてくるベクトル、次元が3

    次元を超えて多いところが主な違い。重要な点は、ベクトル化さえできてしまえば、ベクトル間の距離を計算するこ とで、類似度を評価できるようになること • Embeddingとは • 画像および⽂書の特徴をベクトル化すること。ベクトル化のためのEmbedding⼿法はさまざまあり、オープンに公 開されており、ONNXなどの形で利⽤できるようになっている。どのモデルを使うかによって、特徴量の検出の仕⽅や ベクトルデータへの埋め込み⽅が異なるので精度が⼤きく変わる。 ベクトルデータベースにおける登場⼈物 Copyright © 2024, Oracle and/or its affiliates 4
  4. AIシステム全体におけるベクトルデータベースの位置 Oracle UI ⽣成モデル Oracle Generative AI Service オーケストレーション OCI

    Functions アプリケーション Oracle Applications 埋込モデル Oracle Generative AI Service or Oracle Database ベクトルデータベース Oracle Database ベクトルインデックス Oracle Database リレーショナル データベース Oracle Database 空間 データベース Oracle Database ドキュメントストア Oracle Database その他 データプラットフォーム Oracle Database ドキュメントパーサー Oracle Database チャンカー Oracle Database リランカー Oracle Generative AI Service 企業データ データウェアハウス Oracle Database グラフ データベース Oracle Database ドキュメント検索エンジン OCI Search AIエージェント OCI Agent Service MLOps OCI Data Science データ前処理 OCIData Flow Infrastructure Oracle Cloud Infrastructure Copyright © 2024, Oracle and/or its affiliates 5 ※リリース予定製品を含む全体像
  5. オブジェクト・ストレージからのONNX (Open Neural Network eXchange)モデルをインポート Embeddingモデルのインポート例 DECLARE model_source BLOB :=

    NULL; BEGIN model_source := DBMS_CLOUD.get_object( credential_name => 'OBJ_STORE_CRED', object_uri => 'https://objectstorage…bucketname/o/resnet50bundle.onnx’); DBMS_DATA_MINING.import_onnx_model( model_name => "resnet50", model_data => model_source, metadata => JSON('{ function : "embedding" }') ); END; ※ ONNXとは、機械学習モデルを異なる深層学習フレームワーク間で交換できるようにするオープンなフォーマットとなります Copyright © 2024, Oracle and/or its affiliates 7
  6. VECTOR 型 • 新しくVECTORデータ型が登場し、このデータ型を宣⾔して使う • ディメンション数と形式(FLOAT32、FLOAT64、INT8)を指定可能 ベクトルデータの格納 CREATE TABLE vec_tab

    ( id number, dataVec VECTOR(3, 'FLOAT32')); INSERT INTO vec_tab VALUES (1, TO_VECTOR('[1.1, 2.2, 3.3]'); Copyright © 2024, Oracle and/or its affiliates 9
  7. ベクトル検索 検索クエリ ⾏制限(FETCH)句の新しいAPPROXIMATEキーワードは、類似度検索を⽰す 検索写真ベクターを使⽤して、類似度で上位5の顧客を検索 ベクトル類似性検索問合せは、リレーショナル述語などと簡単に組み合せることが可能 サンフランシスコに住む検索フォトベクターと類似性で上位5の顧客を⾒つける: SELECT id, name, photo

    FROM Customers ORDER BY VECTOR_DISTANCE(photo_vec, :QUERY_VEC) FETCH APPROXIMATE FIRST 5 ROWS ONLY; SELECT id, name, photo FROM Customers WHERE city = 'San Francisco’ ORDER BY VECTOR_DISTANCE(photo_vec, :QUERY_VEC) FETCH APPROXIMATE FIRST 5 ROWS ONLY; Copyright © 2024, Oracle and/or its affiliates 10
  8. 概要 • ⼤量ベクトルデータの⾼速な近傍検索のため、近似解を許容する構造 • リソース(コスト)、検索速度、検索精度のトレードオフを実現 • 索引は2種類(索引⽣成時にいずれかを選択) • インメモリ近傍グラフベクトル索引 (

    In-Memory Neighbor Graph Vector Index) SGA上にインメモリで展開される⾼速なグラフ構造の索引 • 近傍パーティションベクトル索引 (Neighbor Partition Vector Index ) ベクトル同⼠を距離ベースのクラスタリングでまとめた低コストな索引 • メモリ領域としてSGA上のVECTOR_POOLを使⽤ • 求める検索精度を指定して索引の作成が可能 • 原理的で索引構造理解が必要となるパラメータのでの記述を回避 ベクトル索引 Copyright © 2024, Oracle and/or its affiliates 12
  9. 構築と検索時の動作イメージ 構築 • グラフの最下位レイヤー(0)にはすべてのベクトルが存在 • ⾼層に⾏くほどベクトルは減少 • 各レイヤーでベクトル間が近い距離のものをエッジで接 続することでグラフが⽣成される 検索

    • 検索は最上位レイヤーのエントリーポイントから開始 • 問い合わせベクトルに近づく⽅向にエッジを辿り、最も 近いベクトルを発⾒したら、探索は下のレイヤーに継承 • 問合せベクトルに最も近い上位Kベクトルが最下位レイ ヤーで⾒つかり次第、探索は完了 インメモリ近傍グラフ・ベクトル索引 Copyright © 2024, Oracle and/or its affiliates 13 エントリーポイント レイヤー3 レイヤー2 レイヤー1 レイヤー0 問合せベクトル 最も近い 隣⼈を⾒つけ、 レイヤーを下に移動 最も近い 隣⼈を⾒つけ、 レイヤーを下に移動 最も近い 隣⼈を⾒つけ、 レイヤーを下に移動 最寄りの Kネイバーを⾒つけ るための貪欲な検 索 新幹線 → 快速列⾞ → 普通列⾞ の乗り継ぎのイメージ
  10. 構築と検索時の動作イメージ 近傍パーティション・ベクトル索引 Copyright © 2024, Oracle and/or its affiliates 14

    X軸 Y軸 #1 #2 #3 #4 #5 問合せベクトル 構築 • OMLのK-meansクラスタリング・アル ゴリズムを使⽤し、ベクトルをパーティ ションにグループ化(K = 5)。 (OML: Oracle Machine Learning) 検索 • 問合せベクトルから各パーティション の重⼼までの距離を計算 • 最も近い2つのパーティションを特定 • 問合せベクトルからクラスタ#1およ び#3のすべてのベクトルと問い合わ せベクトル間の距離を計算し、最も 近い上位5件(⾚✖で表⽰)を取得 2次元データ・セット
  11. 基本的な索引作成構⽂: • DISTANCE句はオプション(デフォルトはCOSINE) • 距離関数は、ベクトルの⽣成に使⽤される埋込みモデルに基づいて適切なものを選択 • 利⽤可能な距離関数 • EUCLIDEAN(ユークリッド距離) •

    L2_SQUARED(EUCLIDEAN_SQUARED)(ユークリッド平⽅距離) • COSINE(コサイン距離) • DOT(ドット積) • MANHATTAN(マンハッタン距離) • HAMMING(ハミング距離) ベクトル索引の作成 CREATE VECTOR INDEX photo_idx ON Customer(photo_vector) ORGANIZATION [INMEMORY NEIGHBOR GRAPH | NEIGHBOR PARTITIONS] DISTANCE EUCLIDEAN | COSINE_SIMILARITY | HAMMING ... Copyright © 2024, Oracle and/or its affiliates 15
  12. Oracle Databaseにおけるベクトル検索の強み Why Oracle 1. パフォーマンス ⼤量データを使った⼤規模な ベクトル検索がユーザを待たせる ことなく実⾏可能 2.

    精度 Oracle Databaseに格納されて いるビジネス・データを利⽤する ことで精度の⾼い検索を実現 3. カスタマイズ性 SQLを使ったベクトル検索のた め、⽤途に合わせてカスタマイ ズする柔軟な検索が可能 Copyright © 2024, Oracle and/or its affiliates 16
  13. パフォーマンス Oracle Databaseで利⽤可能な多くのデータ型の⼀部としてVECTORが追加されている そのため、Oracleがこれまで提供している以下のような機能やサービスはそのまま使⽤できる • Partitioning︓⼤規模な表をパーティション分割してアクセス対象を削減 • RAC︓相互接続/共有された複数のサーバーでデータベースを構成した⾼可⽤性と処理のスケールを実現 • Exadata︓Oracle

    Databaseに最適化されたOracle Databaseのためのプラットフォーム • Autonomous Database︓Oracle Database + Exadata + AI/機械学習による⾃律型データベース Why Oracle ⼤量データを使った⼤規模なベクトル検索がユーザを待たせることなく実⾏可能 Copyright © 2024, Oracle and/or its affiliates 17
  14. 精度 • AI利⽤においてデータの鮮度は検索の精度に⼤きな影響を与える 格納されているデータをデータベースの中でベクトル化しすぐに類似性検索できる • ⼤規模なデータ検索において検索データのフィルタリングは精度、パフォーマンス向上の観点から⾮常に重要 格納されているメタデータで属性フィルタリングを⾏うことでパフォーマンスを下げることなく検索精度を向上できる Why Oracle 商品ID

    商品名 商品概要 商品画像 商品価格 商品概要_Vec 商品画像_Vec SELECT … FROM item_name WHERE price >= ‘2000‘ ORDER BY VECTOR_DISTANCE (item_vector, :qry_vector) FETCH APPROX FIRST 10 ROWS ONLY; Oracle Databaseに格納されているビジネス・データを利⽤することで精度の⾼い検索を実現 Copyright © 2024, Oracle and/or its affiliates 18
  15. SQLでベクトル検索を実⾏できる=SQLで記述可能な範囲であれば様々なカスタマイズが可能 • ドキュメントからのテキスト抽出 → テキストのチャンク化 → チャンクされたデータのEmbedまで全て1SQLで実⾏可能 • 埋込みモデルを複数使い分けるために同じ表の中でモデルごとに列を⽤意しそれぞれに対して検索をかけて精度確認 •

    複数のドキュメントをチャンク化しておき、全てのドキュメントの中から最も類似したチャンクを検索する マルチベクトル検索が実⾏可能 • ベクトル検索で出⼒された結果のチャンクだけでなくその前後のチャンクも結果に含める Extend Chunkの実装が簡単に可能 • VECTOR_DISTANCE関数をWHERE句で使⽤することで、検索したい類似度の調整が簡単に可能 カスタマイズ性 Why Oracle SQLを使ったベクトル検索のため、⽤途に合わせてカスタマイズする柔軟な検索が可能 Copyright © 2024, Oracle and/or its affiliates 19