JavaScriptを使用してOracleデータベース内からHugging Face AIを呼び出す方法

'JavaScriptでOracleデータベースからHugging Face AIを呼び出す方法'

この記事では、無料のOracleデータベース内で実行されるJavaScriptプログラムを使用して、完全に無料のアプリを素早く作成する方法を紹介します。このプログラムはHugging Face AIを呼び出し、その結果をデータベースに保存し、それからSQL、JSON、REST、または他の言語を使用してアクセスすることができます。ソースコードはすべてこちらで利用できます。

一般的なアプリケーションのフロー、特にAIアプリケーションでは、アプリケーションがAIサービスを呼び出し、その情報をデータベースに保存してさらに処理したり、後で分析やクエリを行ったりするという流れが一般的です。

データベース自体からコマンドを発行することで、データはすぐに保存されるため、ネットワークコールを行わずに確実性が増します。さらに、ロジック(さらにはコード)をデータベース内に配置することで、Oracleデータベースの高可用性、管理、観測性などの機能を暗黙的かつ内包的に活用することができます。

これはOracleデータベースのユニークな機能であり、データベース自体にJavaが含まれており、さらにはJavaScriptのランタイムエンジンも内包しているためです。

Hugging Faceは機械学習を使用したアプリケーションの開発ツールを開発しています。特に、自然言語処理アプリケーション向けに構築されたtransformersライブラリと、ユーザーが機械学習モデルやデータセットを共有できるプラットフォームが特筆されます。ここ数年で非常に人気が高まっています。

簡単に言うと、以下の手順を実行します:

  1. アカウントを作成し、モデルを選択します。
  2. Oracleデータベースとデータベースユーザーを作成します。
  3. HTTPSコールを許可するための証明書を持つウォレットを追加します。
  4. テーブルを作成します。
  5. データベース内で短いJavaScriptプログラムを実行し、Hugging Face AIモデルにコールを行い、結果をテーブルに保存します。
  6. 必要に応じて、SQL、JSON、RESTなどを使用してこれらの結果をクエリします。

Hugging FaceアカウントとAIモデルのセットアップ

https://huggingface.co にアクセスし、サインアップ をクリックします。 プロフィール に移動し、設定 ボタンをクリックします。

アクセストークン をクリックして、トークンを作成し、後で使用するためにその値をコピーします。

モデル をクリックし、モデルを選択します。この場合、自然言語処理 セクションの 質問応答 のモデルを選択します。

モデルを選択し(おそらく人気のあるモデルの1つ)、左側の モデルカード 内の情報に注目し、右側の デプロイ ドロップダウンメニューを選択します。

推論API を選択し、モデルを呼び出すためのサンプルコードスニペットを表示するために JavaScript オプションを選択します。

Oracleデータベースのセットアップ

Oracleデータベースのバージョン21c以降のどのフレーバーを使用しても構いません。クラウド上では、Oracle Always Free Autonomous Database を使用することができます(これはインターネット経由で公開し、数分でゲームを世界中で利用できるので便利です)、またはOracle 23c Free バージョンを使用することもできます(ローカルにインストールするか、コンテナイメージを使用するかのどちらかです)。もちろん、開発にはローカルを、本番にはクラウドを使用するなど、これらのオプションのいずれも素早くセットアップできます。

Always Free Oracle Cloud Database オプション

こちらから Oracle Cloud Always Free Autonomous Database をセットアップできます。プロンプトは非常に直感的です。Oracle Databaseメニュー画面で Autonomous Transaction Processing を選択し、次に Create Autonomous Database ボタンをクリックするだけです。デフォルト値を使用し、管理者ユーザーパスワードを指定するだけです。

Oracle Database Free オプション

こちらから Oracle Database Free 23c をセットアップできます。

コンテナイメージを使用する場合、以下の1行を実行するだけで簡単です。 -e ORACLE_PASSWORD=Welcome12345 を選択したパスワードに置き換え、-v oracle-volume:/somedirectory をディレクトリの場所に置き換えます(またはインメモリデータベースのみを使用する場合は省略します)。--add-host docker.for.mac.host.internal:host-gateway パラメータはコンテナからの呼び出しを許可します。これはMacの設定であり、異なるOSで実行する場合は異なります。

docker pull 
container-registry.oracle.com/database/free:latest; docker run --add-host docker.for.mac.host.internal:host-gateway -e ORACLE_PASSWORD=Welcome12345 -v oracle-volume:/somedirectory container-registry.oracle.com/database/free:latest

SQLcl(またはDatabase Actions)のセットアップと接続

クラウドデータベースを使用している場合、OCIコンソールでDatabase Actionsをクリックし、クラウドデータベースを管理するためにSQLを使用することができます。

また、次の手順を使用して、SQLclをインストールし、上記のいずれかのデータベース/オプションを管理することもできます:

  1. この場所からダウンロードしてインストールします。これにより、データベースの管理に使用する[SQLcl_INSTALL_DIR]/bin/sql実行可能ファイルが提供されます。便利のために、[SQLcl_INSTALL_DIR]/binをPATHに追加することができます。

  2. データベースの作成時にORACLE_PASSWORDとして指定したもので、[SQLcl_INSTALL_DIR]をSQLclの場所に、Welcome12345を置き換えてログインします。

以下は、ローカルインストール(例:Oracle Database Freeコンテナイメージ)を使用する場合の例です:

また、クラウドデータベース(例:Oracle Always Free Autonomous)を使用する場合の例は次のとおりです:

ウォレットの作成

データベースでJavaScriptからHugging FaceへのSSL/HTTPS呼び出しのための証明書を保持するためのウォレットを作成します。

Hugging FaceのAPI SSL証明書のPEMを作成し、ウォレットに保存し、ウォレット(具体的にはewallet.p12ファイル)をデータベースにアップロードし、データベースにHTTPS呼び出しに使用するよう指示します。具体的には、OracleデータベースのJavaScript fetchコマンドでマップ/使用されるUTL_HTTPパッケージにそれを使用するよう指示します。

1.まず、次のコマンドを使用してHugging Face(api-infeerence.hugging.face.co:443)のSSL証明書を取得し、PEMファイルに保存します。

2.次のコマンドをSQLclのプロンプトで発行して、ウォレットを作成し、PEMを追加し、結果を表示して検証します。 -cert引数は、さきほど作成したPEMファイルを指します。

3.これで、Hugging FaceのAPI証明書(pem)を含むewallet.p12ファイルが含まれるウォレットディレクトリが作成されます。まだ行っていない場合は、別のターミナルウィンドウを開き、srcリポジトリ(この記事の冒頭にリンクされています)をクローンまたはダウンロードし、ルート( huggingface-javascript-oracle )ディレクトリに移動し、ewallet.p12ファイルをsrc/main/resourcesディレクトリにコピーします。つまり:

4. SQLclターミナルに戻り、srcリポジトリからsql/writefile.sqlファイルを実行/インストールします。

5.これにより、HTTPS呼び出しで使用するために、ewallet.p12をデータベースにアップロードするためのJavaユーティリティからwrite_fileストアドプロシージャがインストールされます。 srcリポジトリターミナル(再びルートの(huggingface-javascript-oracle)ディレクトリから)で、次のコマンドを実行し、必要に応じてデータベース接続値を置き換えます。たとえば、Oracle Freeコンテナイメージデータベースの場合:

HuggingFaceFromOracleDatabaseApplication ewallet.p12 wallet uploaded to DATA_DUMP_DIRのような出力が表示されるはずです。

6. SQLclターミナルウィンドウに戻り、次のコマンドを実行して、ewallet.p12ファイルがアップロードされたDATA_DUMP_DIRの場所を取得します。

以下のような出力が表示されるはずです。

7. sql/create_aijs_acl.sqlは、データベース(UTL_HTTPパッケージ)にewallet.p12の証明書を使用して、主体aijsに対してHTTPS呼び出しを行うよう指示します。このファイルの2つのwallet_path値を、前の/dba_directoriesクエリから返された値に置き換え、[WALLET_PASSWORD]の値を置き換えてください。

</

wallet_path => 'file:/opt/oracle/admin/FREE/dpdump/FB9997ED60890BBDE0536402000AF33F',
[...]
'file:/opt/oracle/admin/FREE/dpdump/FB9997ED60890BBDE0536402000AF33F', '[WALLET_PASSWORD]'

8. 以下のSQLファイルを実行して、aijsユーザーを作成し、必要な権限とACLを作成します(より高度なセキュリティのためにこれらをさらに強化することもできます)。

9. ユーザーに接続し、Hugging Faceの呼び出し結果を格納するテーブルを作成します。

これで準備が整いました。

アプリを実行し、結果を管理する

最後に、データベース内のJavaScriptコードからHuggingFaceクエリを実行します:

次に、SQLクエリを使用してテーブルに格納されたJSON結果を確認します。

実行したコードを見ると、以下のJavaScriptスニペットがあることがわかります:

Hugging Faceの有用なパラメーターとデバッグ情報は、ドキュメントに記載されています。

結果は、SQLまたはJSON(同時に、新しいJSONの二重性機能のおかげで)を使用してクエリ、分析などができます。RESTやMongoDB APIでも可能です。

Oracle Databaseは、AIに対して完璧なデータベースであり、次のような機能を既に利用できます。

  • ベクトル表現とストレージのためのネイティブデータ型:RAW、BLOB、JSON
  • ベクトル埋め込みを格納して検索するためのインメモリカラムストア(SIMDカーネルによる驚異的なパフォーマンス)
  • データモデル固有のインデックスを作成するための拡張可能なインデックスフレームワーク(テキスト、空間など)
  • ネイティブのOracle機械学習API – モデリング、分類、スコアリング、クラスタリングなど
  • DML、並列ローディング、パーティショニング、高度な圧縮、並列クエリ、RAC、シャーディングなど

また、Oracleデータベース内からOracle OCI AIおよびその他のサービスを呼び出すことも可能です。

結論

この記事では、JavaScriptを使用してOracleデータベース内からHugging Face APIを呼び出す方法について説明しました。これにより、さまざまなAIソリューションに完璧に適した機能の組み合わせが実証され、JavaScript開発者にも親しみやすくなります。

JavaScriptを使用したデータベースに関連する他のブログ(特にそれを可能にするMultiLingual Engine(MLE)など)は、Martin Bachの投稿やこの23cでのJavaScript ESモジュールのインポートに関する投稿で見つけることができます。

ご意見やご質問がありましたら、お待ちしております。お読みいただき、本当にありがとうございました。

We will continue to update VoAGI; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more