サードパーティREST APIを利用したベクトル生成のサードパーティ・モデルへのアクセス

サードパーティのREST APIをコールすることで、サードパーティのベクトル埋込みモデルにアクセスして、データベースの外部でデータからベクトル埋込みを生成できます。

ベクトル・ユーティリティのPL/SQLパッケージDBMS_VECTORおよびDBMS_VECTOR_CHAIN (「提供されているベクトル・ユーティリティPL/SQLパッケージ」を参照)には、外部埋込みモデルとやり取りできるサードパーティのREST APIが用意されています。

Cohere、Google AI、Hugging Face、生成AI、OpenAI、Vertex AIなどのサードパーティ・サービス・プロバイダにリモートからアクセスできます。または、ローカルホストにOllamaをインストールして、Llama 3、Phi 3、Mistral、Gemma 2などのオープンLLMにアクセスすることもできます。サポートされているすべてのプロバイダおよび各プロバイダで許可されている対応するREST操作は、「サポートされるサードパーティ・プロバイダの操作およびエンドポイント」にリストされています。

サードパーティREST APIをコールして埋込みを生成する際に実行する大まかなステップを次に示します。

  1. サードパーティの埋込みモデルの使用条件を理解します

    警告:

    データベースの特定の機能により、たとえば、REST APIへのアクセスを容易にするJSON仕様を使用して、第三者によって個別に提供されるサービスにアクセスできる場合があります。

    お客様によるこれらの機能の使用は、お客様自身の責任においてのみ行われ、お客様は、当該第三者サービスの使用に関連するあらゆる条件を遵守する責任を負います。第三者のサービスに関するその他の条件にかかわらず、お客様は、かかるデータベース機能の使用によって、そのリスクを受諾し、当該アクセスにより生じた一切の損害について、Oracleの責任または法的責任を明示的に除外することになります。

  2. REST API接続を構成します

    REST API接続を構成することで、Oracle DatabaseがRESTエンドポイントURLと通信し、ユーザーがリクエストを送信してサードパーティの埋込みサービスからデータにアクセスできるようにします。次に、リクエストされた埋込みサービスがデータを処理し、ベクトル表現を返します。

    これには、次のタスクが含まれます。

    1. ユーザーを作成し、ストレージを設定して、必要な権限を付与します

      表領域およびユーザーを作成し、そのユーザーにDB_DEVELOPER_ROLEを付与します。このロールは、データベース開発者に必要なすべての基本的なロールおよび権限を割り当てます。

      入力をテキスト文字列として直接渡すか、データ・ダンプ・ディレクトリを準備してベクトル生成用のデータをアップロードできます。データ・ダンプ・ディレクトリの読取りおよび書込みアクセスをユーザーに付与してください。

    2. サードパーティ・ホストに接続できるようにするための接続権限を付与します

      サードパーティ・ホストに接続するためのCONNECT権限をユーザーに付与します。DBMS_NETWORK_ACL_ADMIN PL/SQLプロシージャ(DBMS_NETWORK_ACL_ADMINを参照)を使用して、データベース内から外部ネットワーク・サービスにアクセスできるユーザーとその権限割当てを指定します。

      このプロシージャは、指定したホストのネットワーク・アクセス制御リスト(ACL)にアクセス制御エントリ(ACE)を追加します。ACEはプリンシパル(ユーザー名)に権限を付与します。これにより、そのユーザーはデータベースのネットワーキングACLで認可されている外部ホストに接続できます。これにより、指定したホストに接続できるユーザーを制御することでセキュリティが向上し、不正な接続が防止されます。

    3. プロキシ・サーバーを設定します(構成されている場合)

      ネットワーク上にプロキシ・サーバーを構成した場合は、プロキシ・サーバーのホスト名とポート番号を指定する必要があります。これにより、プロキシ・サーバーを介してリクエストをルーティングすることで、外部Webリソースまたは埋込みサービスにアクセスできます。

      プロキシ・サーバーを設定するには、UTL_HTTP.SET_PROXY PL/SQLプロシージャ(UTL_HTTP.SET_PROXYを参照)を使用します。

    4. RESTプロバイダへのアクセスを有効にするための資格証明を設定します

      選択したサードパーティのサービス・プロバイダにアクセスできるようにするには、認証資格証明が必要です。資格証明名は、ユーザー名、パスワード、アクセス・トークン、秘密キー、指紋などの認証パラメータを保持します。

      データベース内の資格証明を安全に管理するには、資格証明ヘルパー・プロシージャCREATE_CREDENTIALおよびDROP_CREDENTIALを使用します。これらのプロシージャは、DBMS_VECTORおよびDBMS_VECTOR_CHAINの両方のPL/SQLパッケージで使用できます。

  3. ベクトル埋込みを生成します

    チェーン可能ユーティリティ関数UTL_TO_EMBEDDINGおよびUTL_TO_EMBEDDINGSを使用して、入力データを1つ以上のベクトル埋込みに変換します。これらのAPIは、DBMS_VECTORおよびDBMS_VECTOR_CHAIN PL/SQLパッケージの両方で使用できます。

    使用するAPIを決定します。

    • UTL_TO_EMBEDDINGは、プレーン・テキスト(CLOB)またはイメージ(BLOB)を単一の埋込み(VECTOR)に変換します。

    • UTL_TO_EMBEDDINGSは、チャンクの配列(VECTOR_ARRAY_T)を埋込みの配列(VECTOR_ARRAY_T)に変換します。

    たとえば、一般的なDBMS_VECTOR.UTL_TO_EMBEDDINGコールでは、RESTプロバイダ、資格証明名、埋込みサービスのRESTエンドポイントURL、および埋込みモデル名のパラメータを次のようにJSONオブジェクトで指定します:

    var params clob;
    exec :params := '
    {
     "provider": "cohere",
      "credential_name": "COHERE_CRED",
      "url": "https://api.cohere.example.com/embed",
      "model": "embed-model"
    }';
    
    select DBMS_VECTOR.UTL_TO_EMBEDDING('hello', json(:params)) from dual;

    この例では、埋込みを生成するための入力はhelloです。

エンドツーエンドの埋込みの例の実行:

これらのステップを適用して様々な埋込みユースケースを実行する方法を確認するには、「ベクトル生成の例」にリストされているエンドツーエンドのシナリオ例を実行します。

関連トピック