$30 off During Our Annual Pro Sale. View Details »

Oracle AI Vector Search 新機能アップデート

Oracle AI Vector Search 新機能アップデート

oracle4engineer

November 29, 2024
Tweet

More Decks by oracle4engineer

Other Decks in Technology

Transcript

  1. AI Vector Search User’s Guide What’s New for Oracle AI

    Vector Search - July 2024, Release Update 23.5 • Binary Vectors • LangChain Integration • Optimizer Plans for Vector Indexes(ドキュメントの拡充) • Documentation Map to GenAI Prompts(ドキュメントの拡充) July 2024, Release Update 23.5 Copyright © 2024, Oracle and/or its affiliates 2
  2. VECTORデータ型 データの形式を厳密に定義したい場合、次元数や数値 データの形式は制約的に働くため次元や数値の形式を 指定することにメリットがある 次元数など指定せずにVECTORとして指定も可 スキーマ定義やDDLの普遍性を重視する場合、こちらは 次元数の指定がないため、次元数が変化した場合にもス キーマ定義の変更は不要 ベクトル・データ型 CREATE

    TABLE my_images ( id number, image BLOB, img_vec VECTOR(768, FLOAT32)); 次元数 (任意) 数値の形式 (任意) CREATE TABLE my_images ( id number, image BLOB, img_vec VECTOR); 指定可能な数値形式 FLOAT32, FLOAT64, INT8, BINARY ※例えば、embedding APIのバージョンアップで次元数が変更された場合でも、 スキーマ定義書の更新が不要になる →運用上の選択肢が1つ増える Copyright © 2024, Oracle and/or its affiliates 3
  3. • ベクトルデータ型を定義する際にBINARY数値形式を指定可能 • パフォーマンスの向上やストレージ使用量を減らすことと引き換えに精度を多少犠牲にする数値形式 • メリット(FLOAT32とBINARYとを比較した場合) • 距離計算が40倍高速に可能 • ストレージの使用量を32分の1に削減

    • デメリット(FLOAT32とBINARYとを比較した場合) • 精度が低くなる可能性があり、参考値としてFLOAT32に比べて90%程度の精度となる • BINARYは次元値が0より大きければ1、次元値が0以下の場合0となり、この0,1の配列をバイト表現に変換したものを1 次元値のデータとして格納することになる • INT8の場合 [25, 11, -99, -114, 13, -17, -59, 44]と表現される • BINARYの場合 [1, 1, 0, 0, 1, 0, 0, 1]と表現される この11001001をバイト表現すると201となり、BINARYとして格納されるのは[201, ~~~~~]となる この数値の丸め込みが計算の高速化とストレージ使用料の削減に寄与する バイナリ・ベクトル Copyright © 2024, Oracle and/or its affiliates 4
  4. • LangchainやはLLMを活用した アプリケーション開発を支援するオープンソースの フレームワーク • LangchainにOracle Database用のコードが追加 • 埋め込み機能、ベクトルデータストアとしての活用 インデックスの作成と検索、RAGパイプライン統合

    などOracle Databaseを活用するための コード群が充実 • Oracle Databaseのベクトル検索機能を シンプルに実装可能 Langchainとの統合 Copyright © 2024, Oracle and/or its affiliates 5
  5. AI Vector Search User’s Guide What’s New for Oracle AI

    Vector Search - October 2024, Release Update 23.6 • Hybrid Search using Hybrid Vector Indexes • Updated AI Vector Search Workflow(ドキュメントの拡充) • Updated Documentation Map to GenAI Prompts(ドキュメントの拡充) • Extended SQL Quick Start(ドキュメントの拡充) • Support for Ollama • Support for SPARSE Vectors • Integration with LlamaIndex • Jaccard Distance • Hamming Distance • Transaction Support for HNSW Indexes • HNSW Index Duplication and Reload October 2024, Release Update 23.6 (1/2) Copyright © 2024, Oracle and/or its affiliates 6
  6. AI Vector Search User’s Guide What’s New for Oracle AI

    Vector Search - October 2024, Release Update 23.6 • Update to the default for VECTOR_INDEX_NEIGHBOR_GRAPH_RELOAD • Global and Local Partitioning for IVF Indexes • GET_INDEX_STATUS, ENABLE_CHECKPOINT, DISABLE_CHECKPOINT, and INDEX_VECTOR_MEMORY_ADVISOR Procedures • VECSYS.VECTOR$INDEX$CHECKPOINTS View • Relational Data Vectorization • Document Reranking • BLOB Support for UTL_TO_GENERATE_TEXT() • BLOB Support for UTL_TO_EMBEDDING() • List of REST Endpoints October 2024, Release Update 23.6 (2/2) Copyright © 2024, Oracle and/or its affiliates 7
  7. 作成方法 基本的な索引作成構文 ハイブリッド・ベクトル索引 CREATE HYBRID VECTOR INDEX MY_HYBRID_INDEX ON SUPPORT_INCIDENTS

    (INCIDENT_TEXT) PARAMETERS (...); "embed_model" :"ALL_MINILM_L12_V2" "chunk_by" : "WORDS" "index_type" : "HNSW" "vector_distance": "COSINE" "vector_accuracy": "95" "datastore" :"network_datastore" "filter" : "auto_filter" "lexer" : "auto_lexer" "sectioner" : "basic_sectioner" "stoplist" : "default_stop_list" ベクトル索引パラメータ テキスト索引パラメータ Copyright © 2024, Oracle and/or its affiliates 9
  8. 検索結果 検索結果には結果のテキストだけではなく、スコアなども表示される ハイブリッド検索 { "rowid" : "AK37pKAAkAAAACVAAA", "score" : 96.95,

    "vector_score" : 94.50, "text_score" : 92.40, "vector_rank" : 1, "text_rank" : 1, "chunk_text" : "ABCD_ATP1(133):Incomplete Recovery applied until change 41787149790615 time 08/20/2024 15:03:53. ORA-00600: internal error code, arguments: [kdsgrp_LOST_piece], [11], [830411452], [0], []", ... } Copyright © 2024, Oracle and/or its affiliates 11
  9. 制限と注意事項 • 索引作成時に指定する埋め込みモデルはデータベース内のONNXモデルのみ (インポート可能なONNXモデルには1GB以内のサイズ制限あり) • DBMS_HYBRID_VECTOR.SEARCHの使用について • ベクトル検索とテキスト検索に使用するクエリテキストをそれぞれ指定可能 • テキスト検索に設定するクエリは、形態素解析は行われず、CONTAINS句を使いながら手動で設定が必要

    • ハイブリッド・ベクトル索引のメンテナンスについて • DMLが頻繁に発行されるようなテーブルの場合は、定期的に索引のメンテナンスが必要 • 索引作成時にメンテナンスをAUTOで行うか、MANUALで行うかを指定可能 • AUTOを設定した場合、索引はバックグラウンドで自動的に同期される • メンテナンスについての詳細はドキュメントを参照 • その他の制限や注意事項については下記ドキュメントを参照 • AI Vector Search User‘s Guide - Guidelines and Restrictions for Hybrid Vector Indexes ハイブリッド・ベクトル索引 Copyright © 2024, Oracle and/or its affiliates 12
  10. Copyright © 2024, Oracle and/or its affiliates 13 • ローカル環境でLLMを実行するための手段として、Oracle

    DatabaseでオープンソースソフトウェアのOllamaをサポート • Ollamaをインストールし、Ollamaコマンドを実行することでLLMをダウンロードしてローカル実行可能 • Oracle Databaseからは以下のDBMS_VECTORパッケージにてOllamaを指定することでそれぞれの処理をローカルに完 結して実行可能 • UTL_TO_EMBEDDING • UTL_TO_SUMMARY • UTL_TO_GENERATE_TEXT • レイテンシの低減、セキュリティ向上、モデルのカスタマイズなどがメリット Ollamaのサポート
  11. Copyright © 2024, Oracle and/or its affiliates 14 • ベクトル・データ型を定義する際にSPARSEベクトルが指定可能に

    • デフォルトではどのデータ型もDENSEベクトルで格納されるが、SPARSEベクトルの指定が可能になった • SPARSEベクトルはベクトル要素の大部分が0であり、0以外の少数の実数値のみが物理的に格納される • 情報量がDENSEベクトルに比べて削減されるため、要素に0の多いようなデータを格納する際に使用することで ストレージ容量の削減、メモリ使用量の削減、距離計算コストの低下などのメリットが得られる SPARSE ベクトルのサポート CREATE TABLE my_images ( id number, image BLOB, img_vec VECTOR(768, FLOAT32, SPARSE));
  12. • LlamaIndexはLLMを活用した アプリケーション開発を支援するオープンソースの フレームワーク • LlamaIndexにOracle Database用のコードが追加 • 埋め込み機能、ベクトルデータストアとしての活用 インデックスの作成と検索、RAGパイプライン統合

    などOracle Databaseを活用するための コード群が充実 • Oracle Databaseのベクトル検索機能を シンプルに実装可能 LlamaIndexとの統合 Copyright © 2024, Oracle and/or its affiliates 15
  13. ベクトル同士の類似性は、ベクトル間の距離計算結果で判断される 対象が似ているほど、ベクトル間の距離が短くなる。 例えば:トラとライオンのベクトルはトラとリンゴのベクトルよりも距離が短い VECTOR_DISTANCE(<Tiger Vec>, <Lion Vec>) < VECTOR_DISTANCE(<Tiger Vec>,

    <Apple Vec>) VECTOR_DISTANCEで指定する距離メトリックはエンベッディングモデルで使用された距離メトリックと同一にする VECTOR_DISTANCE関数 Copyright © 2024, Oracle and/or its affiliates 16 VECTOR_DISTANCE(VECTOR1, VECTOR2, <distance metric>) 距離メトリック 省略形 COSINE(デフォルト) / COSINE_DISTANCE <=> DOT / INNER_PRODUCT <#> EUCLIDEAN / L2_DISTANCE <-> EUCLIDEAN_SQUARED / L2_SQUARED HAMMING / HAMMING_DISTANCE MANHATTAN / L1_DISTANCE JACCARD / JACCARD_DISTANCE VECTOR_DISTANCE(VECTOR1, VECTOR2, COSINE) COSINE_DISTANCE(VECTOR1, VECTOR2) VECTOR1 <=> VECTOR2 以下は全て同じ結果が得られる
  14. HAMMING_DISTANCE関数の追加 • Oracle Database23.6にてHAMMING_DISTANCE関数が追加 • 23.6では二つの方法で距離計算が可能に ハミング距離 Copyright © 2024,

    Oracle and/or its affiliates 17 VECTOR_DISTANCE(VECTOR1, VECTOR2, HAMMING) HAMMING_DISTANCE(VECTOR1, VECTOR2) ← New in 23.6
  15. ジャッカード距離 Copyright © 2024, Oracle and/or its affiliates 18 ジャッカード距離は二つのベクトルがどれくらい異なっているかを表す。

    0〜1の範囲に正規化され、1に近づくほど異なっていることを意味する。 バイナリ・ベクトルにおいて、ベクトルAとBにおけるAND演算の結果を OR演算の結果で割ったものがジャッカード類似度となる。 このジャッカード類似度は各ベクトルがどれくらい似ているかという類似度を示す。 ジャッカード距離は二つのベクトルの非類似度を示すため 1 – ジャッカード類似度がジャッカード距離となる
  16. • 近傍グラフ・ベクトル索引(HNSW) がトランザクションに 対応し、クエリのレイテンシを一定に保つことが可能に • 近傍グラフ・ベクトル索引を作成すると トランザクション・ジャーナルにDMLの変更を記録する • アクティブなトランザクションの変更はイン・メモリ上 のプライベート・ジャーナルへ

    • トランザクションコミット時にディスク上の シェアード・ジャーナルにフラッシュされる • クエリーが発行されるとHNSWグラフと共にジャーナルを 参照し、トランザクションの一貫性を保つ 近傍グラフ・ベクトル索引のトランザクション対応 Copyright © 2024, Oracle and/or its affiliates 19
  17. ジャーナルの利用によるパフォーマンス懸念について • ジャーナルに変更が蓄積されるほど、 HNSW索引走査時のパフォーマンスは劣化する • そのため、DMLが一定の閾値まで発行されるとHNSW グラフは自動的に再作成され、 クエリのレイテンシを抑える • 再作成中にも索引にアクセスできるよう、

    新たにメモリ領域を確保しながら再作成を行う そのため、再作成中はメモリを通常時の倍以上消費 することになるため注意 • HNSW索引が作成、再作成されるたびにフルチェックポ イントとROW IDとVIDとのマッピングテーブルがディスク上 に作成され、索引の複製やリロードに利用される 近傍グラフ・ベクトル索引のトランザクション対応 Copyright © 2024, Oracle and/or its affiliates 20
  18. • 近傍グラフ・ベクトル索引において、再作成、インスタン スの再起動、RAC環境での索引作成のために 索引の複製とリロード機能のどちらかが利用される • HNSW索引が作成、再作成されるたびにROW IDと VIDのマッピングテーブルと、メモリにあるグラフとほぼ同じ 情報を持ったフルチェックポイントがディスク上に 作成される

    • 複製、リロードは以下の情報を用いて行われる • マッピングテーブルからグラフを 再作成する場合は複製 • フルチェックポイントからグラフを 読み込む場合はリロード 近傍グラフ・ベクトル索引の複製とリロード Copyright © 2024, Oracle and/or its affiliates 21
  19. • フルチェックポイントには、インスタンスのメモリ上にあるHNSWグラフとほぼ同じ情報が保持される • インスタンス再起動時やノード追加時にはフルチェックポイントからグラフをリロードすることで、 マッピングテーブルからの再作成よりも高速にグラフをリロード可能 • フルチェックポイントからリロードされるかは以下の条件によって決まる • フルチェックポイントが存在する •

    VECTOR_INDEX_NEIGHBOR_GRAPH_RELOADパラメータがRESTART(デフォルト)に設定されている • フルチェックポイントが現在のSCNと比較して差が大きくない • リロードされない場合はマッピングテーブルからの複製を実行する • フルチェックポイントの作成は索引の作成、再作時に行われるが、無効/有効の切り替えが可能(デフォルト有効) インスタンス再起動時やノード追加時の近傍グラフ・ベクトル索引のリロード Copyright © 2024, Oracle and/or its affiliates 23 DBMS_VECTOR.DISABLE_CHECKPOINT(<schema owning indexes> [, <index name>]) DBMS_VECTOR.ENABLE_CHECKPOINT(<schema owning indexes> [, <index name>] [, <tablespace name>])
  20. • DBMS_VECTOR.INDEX_VECTOR_MEMORY_ADVISORを利用して ベクトル索引に必要なメモリサイズをシミュレート可能に • 既存テーブル列を指定しての実行や、ベクトル数とディメンション数を指定する形でも実行可能 索引に必要なメモリサイズのシミュレート Copyright © 2024, Oracle

    and/or its affiliates 24 SQL> exec DBMS_VECTOR.INDEX_VECTOR_MEMORY_ADVISOR( 'VECTOR_USER’, 'VECTAB', 'DATA_VECTOR', 'HNSW', RESPONSE_JSON=>:response_json); Using default accuracy: 90% Suggested vector memory pool size: 76396251 Bytes
  21. • Oracle Machine Learning (OML)の特徴抽出アルゴリズムとベクトル検索機能を組み合わせることができる • リレーショナル・データをベクトル化し、検索することで特徴的なデータを導き出すことができる • ベクトル化することで、重要な情報を保持しながらもデータセットが簡略化される •

    大規模なデータセットを対象にする場合でも、データの相関関係、冗長性の分析が容易になる 特徴抽出アルゴリズムによるリレーショナル・データのベクトル化と相関分析 Copyright © 2024, Oracle and/or its affiliates 25
  22. 検索対象のリレーショナル・データ 実行イメージ 特徴抽出アルゴリズムによるリレーショナル・データのベクトル化と相関分析 Copyright © 2024, Oracle and/or its affiliates

    26 COLUMN_NAME DATA_TYPE -------------------- -------------------- AGE NUMBER CAMPAIGN NUMBER CONS_CONF_IDX NUMBER CONS_PRICE_IDX NUMBER DURATION NUMBER EMP_VAR_RATE NUMBER EURIBOR3M NUMBER ID NUMBER NR_EMPLOYED NUMBER PDAYS NUMBER PREVIOUS NUMBER CONTACT VARCHAR2 CREDIT_DEFAULT VARCHAR2 DAY_OF_WEEK VARCHAR2 EDUCATION VARCHAR2 HOUSING VARCHAR2 JOB VARCHAR2 LOAN VARCHAR2 MARITAL VARCHAR2 MONTH VARCHAR2 POUTCOME VARCHAR2 Y VARCHAR2 -- 対象となる表 BANKテーブル SELECT column_name, data_type FROM user_tab_columns WHERE table_name = 'BANK' ORDER BY data_type, column_name;
  23. 実行イメージ OMLモデル作成のために、設定テーブルを作成 特徴抽出アルゴリズムによるリレーショナル・データのベクトル化と相関分析 Copyright © 2024, Oracle and/or its affiliates

    27 CREATE TABLE mod_sett( setting_name VARCHAR2(30), setting_value VARCHAR2(30) ); -- テーブルに設定したいパラメータをINSERTする BEGIN INSERT INTO mod_sett (setting_name, setting_value) VALUES (dbms_data_mining.algo_name, dbms_data_mining.algo_singular_value_decomp); -- 特徴抽出アルゴリズムalgo_singular_value_decompを指定 INSERT INTO mod_sett (setting_name, setting_value) VALUES (dbms_data_mining.prep_auto, dbms_data_mining.prep_auto_on); -- データ準備の自動化をオン オンにするとモデルはヒューリスティックを使用してビルドデータを変換する INSERT INTO mod_sett (setting_name, setting_value) VALUES (dbms_data_mining.svds_scoring_mode, dbms_data_mining.svds_scoring_pca);-- ビルドデータのスコアリングモードをPCAに設定 投影がU行列とS行列の積になる INSERT INTO mod_sett (setting_name, setting_value) VALUES (dbms_data_mining.feat_num_features, 5); -- 抽出される特徴の数を5に設定 commit; END; /
  24. 実行イメージ 設定テーブルを指定して、bankテーブルに対する特徴抽出のモデルを作成する 特徴抽出アルゴリズムによるリレーショナル・データのベクトル化と相関分析 Copyright © 2024, Oracle and/or its affiliates

    28 BEGIN DBMS_DATA_MINING.CREATE_MODEL( model_name => 'pcamod‘, -- モデルの名前 mining_function => dbms_data_mining.feature_extraction, -- マイニング機能の設定 ここでは特徴抽出モデルを指定 data_table_name => ‘bank‘, -- 対象テーブルの指定 case_id_column_name => ‘id’, -- キーとなる列 settings_table_name => 'mod_sett'); --設定テーブルの名前 END; /
  25. 実行イメージ 作成したモデルpcamodを使用して、bankテーブルのID=10000の特徴量をベクトル化 特徴抽出アルゴリズムによるリレーショナル・データのベクトル化と相関分析 Copyright © 2024, Oracle and/or its affiliates

    29 SELECT id, vector_embedding(pcamod USING *) embedding FROM bank WHERE id=10000; ID EMBEDDING -------------- -------------------------------------------------- 10000 [-2.3551013972411354E+002,2.8160084506788273E+001, 5.2821278275005774E+001,-1.8960922352439308E-002, -2.5441143639048378E+000]
  26. 実行イメージ 作成したモデルpcamodを使用して、bankテーブルのベクトルデータをテーブルへ IVFのベクトル索引を作成 特徴抽出アルゴリズムによるリレーショナル・データのベクトル化と相関分析 Copyright © 2024, Oracle and/or its

    affiliates 30 CREATE TABLE pca_output AS (SELECT id, vector_embedding(pcamod USING *) embedding FROM bank); CREATE VECTOR INDEX my_ivf_idx ON pca_output(embedding) ORGANIZATION NEIGHBOR PARTITIONS DISTANCE COSINE WITH TARGET ACCURACY 95;
  27. 実行イメージ feature_details関数で作成したモデルを指定して、特徴量が大きい列を確認できる 特徴抽出アルゴリズムによるリレーショナル・データのベクトル化と相関分析 Copyright © 2024, Oracle and/or its affiliates

    31 SELECT feature_details(pcamod, 5 USING *) features FROM bank WHERE id=10000; FEATURES ----------------------------------------------------------------------------------------------- <Details algorithm="Singular Value Decomposition" feature="5"> <Attribute name="PDAYS" actualValue="999" weight=".041" rank="1"/> <Attribute name="EURIBOR3M" actualValue="4.959" weight=".028" rank="2"/> <Attribute name="CONTACT" actualValue="telephone" weight=".016" rank="3"/> <Attribute name="EMP_VAR_RATE" actualValue="1.4" weight=".014" rank="4"/> <Attribute name="DAY_OF_WEEK" actualValue="wed" weight=".002" rank="5"/> </Details>
  28. 実行イメージ bankテーブルの中から特徴量の大きなレコードをベクトル検索 特徴抽出アルゴリズムによるリレーショナル・データのベクトル化と相関分析 Copyright © 2024, Oracle and/or its affiliates

    32 SELECT p.id id, b.PDAYS PDAYS, b.EURIBOR3M EURIBOR3M, b.CONTACT CONTACT, b.EMP_VAR_RATE EMP_VAR_RATE, b.DAY_OF_WEEK DAY_OF_WEEK FROM pca_output p, bank b WHERE p.id <> 10000 AND p.id=b.id ORDER BY VECTOR_DISTANCE(embedding, (select embedding from pca_output where id=10000), COSINE) FETCH APPROXIMATE FIRST 3 ROWS ONLY; ID PDAYS EURIBOR3M CONTACT EMP_VAR_RATE DAY_OF_WEEK ---------- ---------- ---------- --------- ------------ ----------- 9416 999 4.967 telephone 1.4 fri 13485 999 4.963 telephone 1.4 thu 9800 999 4.959 telephone 1.4 wed
  29. • DBMS_VECTOR_CHAIN.RERANKファンクションを利用してリランクモデルをコールし、 ドキュメントのリランキングが可能 • ベクトル検索、ハイブリッド検索後にリランキングを活用することで精度が向上する可能性がある • 構文 • 出力例 DBMS_VECTOR_CHAIN.RERANK

    Copyright © 2024, Oracle and/or its affiliates 34 DBMS_VECTOR.RERANK( QUERY IN CLOB, DOCUMENTS IN JSON, PARAMS IN JSON default NULL ) return JSON; { "index" : "1", "score" : "0.99", "content" : "Jupiter boasts an impressive system of 95 known moons." }
  30. 実行イメージ • クエリとリランク対象のドキュメントを設定 DBMS_VECTOR_CHAIN.RERANK Copyright © 2024, Oracle and/or its

    affiliates 35 set echo on set serveroutput on var query clob; var initial_retrieval_docs clob; exec :query := 'What are some interesting characteristics of the Jovian satellites?'; begin :initial_retrieval_docs := ' { "documents": [ "Jupiter boasts an impressive system of 95 known moons, including the four largest Galilean satellites.", "Jupiter's immense mass, 318 times that of Earth, significantly influences the orbits of other bodies in the Solar System.", "Io, one of Jupiter's Galilean moons, is the most volcanically active body in our solar system.", "The gas giant completes one orbit around the Sun in just under 12 years, traveling at an average speed of 13 kilometers per second.", "Jupiter's composition is similar to that of the Sun, and it could have become a brown dwarf if its mass had been 80 times greater." ] }'; end; /
  31. 実行イメージ • dbms_vector_chain.rerankの引数にクエリ、ドキュメント、パラメータ(モデル指定)を指定して実行 DBMS_VECTOR_CHAIN.RERANK Copyright © 2024, Oracle and/or its

    affiliates 36 declare params clob; reranked_output json; begin params := '{ "provider": "cohere", "credential_name": "COHERE_CRED", "url": "https://api.cohere.com/v1/rerank", "model": "rerank-english-v3.0", “return_documents”: true, “top_n”: 3 }'; reranked_output := dbms_vector_chain.rerank(:query, json(:initial_retrieval_docs), json(params)); dbms_output.put_line(json_serialize(reranked_output)); end; /
  32. 実行結果 • 以下のような出力となる DBMS_VECTOR_CHAIN.RERANK Copyright © 2024, Oracle and/or its

    affiliates 37 [ { "index" : "0", "score" : "0.059319142", "content" : "Jupiter boasts an impressive system of 95 known moons, including the four largest Galilean satellites." }, { "index" : "2", "score" : "0.04352814", "content" : "Io, one of Jupiter's Galilean moons, is the most volcanically active body in our solar system." }, { "index" : "4", "score" : "0.04138472", "content" : "Jupiter's composition is similar to that of the Sun, and it could have become a brown dwarf if its mass had been 80 times greater." } ]
  33. • AI Vector Search User‘s Guide - Supported Third- Party

    Provider Operations and Endpointsにて確認可能 • https://docs.oracle.com/en/database/oracle/oracle -database/23/vecse/supported-third-party- provider-operations-and-endpoints.html 対応する3rdパーティ製品やエンドポイントについて Copyright © 2024, Oracle and/or its affiliates 40