ONNXパイプライン・モデル: テキスト埋込み
ONNXパイプライン・モデルは、テキストを入力として受け入れ、埋込みを出力として生成するテキスト埋込みモデルを提供します。パイプライン・モデルでは、テキストに必要な前処理および後処理も提供されます。
ノート:
- このAPIは23.7で更新されています。23.6以下のバージョンでは、PythonパッケージEmbeddingModelおよびEmbeddingModelConfigが使用されています。これらのパッケージは、それぞれONNXPipelineおよびONNXPipelineConfigに置き換えられます。最新バージョンを使用することをお薦めします。非推奨のPythonクラスの詳細は、「事前トレーニング済モデルをONNXモデルに変換するPythonクラス(非推奨)」を参照してください。
-
この機能は、OML4Py 2.1クライアントでのみ動作します。OML4Pyサーバーではサポートされていません。
-
データベース内の埋込みモデルには、トークン化と後処理を含める必要があります。トークン化を外部で処理し、テンソルをSQL演算子に渡し、出力テンソルをベクトルに変換する必要があるため、コアONNXモデルを
DBMS_VECTOR.LOAD_ONNX_MODEL
に指定するだけでは不十分です。 - Oracleは、Hugging Face all-MiniLM-L12-v2モデルをONNX形式で提供しており、
DBMS_VECTOR.LOAD_ONNX_MODEL
を使用してデータベースに直接ダウンロードできます。詳細は、ブログ投稿「Oracle Database 23aiの事前組込み埋込み生成モデルが利用可能になりました」を参照してください。
データの埋込みを生成するためのONNX形式の事前トレーニング済モデルがない場合、外部ソースから事前トレーニング済モデルをダウンロードして、そのモデルを前処理ステップおよび後処理ステップで拡張されたONNX形式に変換し、結果のONNX形式のモデルをOracle DatabaseにインポートするPythonパッケージが用意されています。DBMS_VECTOR.LOAD_ONNX_MODEL
プロシージャまたはexport2db()
関数を使用して、ファイルをマイニング・モデルとしてインポートします(eport2db()
は、ONNXPipelineオブジェクトのメソッドです)。次に、ONNXモデルでデータベース内のONNX Runtimeを利用して、ベクトル埋込みを生成します。
- 外部ソース(Hugging Faceリポジトリなどから)からシステムに事前トレーニング済モデルをダウンロードします
- 前処理および後処理ステップを使用してモデルを拡張し、新しいONNXモデルを作成します
- 拡張したONNXモデルを検証します
- データ・マイニング・モデルとしてデータベースにロードするか、オプションでファイルにエクスポートします
Pythonパッケージは、事前構成済リストのどのモデルも入力として受けることができます。または、特定のモデル・グループ(テキスト・モデルやイメージ・モデルなど)の共通構成を含む組込みテンプレートを使用できます。事前構成済リストとは何か、組込みテンプレートとは何か、およびそれらを使用する方法を理解するには、以降の説明をお読みください。
制限事項
この表では、Pythonパッケージの制限について説明します。
ノート:
この機能は、OML4Py 2.1クライアントでのみ使用できます。パラメータ | 説明 |
---|---|
Transformer Model Type |
テキスト埋込みをサポートするトランスフォーマ・モデルをサポートします。 |
Model Size |
モデル・サイズは1GB未満にする必要があります。量子化はサイズを小さくするのに役立ちます。 |
Tokenizers |
BERT 、GPT2 、SENTENCEPIECE 、CLIP, またはROBERTA である必要があります。
|
モデルの事前構成済リスト
モデルの事前構成済リストは、Pythonパッケージで提供される外部リソース・リポジトリの共通モデルです。事前構成済モデルには既存の仕様があります。ユーザーは、開始点としてテキスト・テンプレートを使用して独自の仕様を作成できます。事前構成済リストのすべてのモデル名のリストを取得するには、show_preconfigured
関数を使用します。
テンプレート
Pythonパッケージには組込みテキスト・テンプレートが用意されており、前処理操作と後処理操作を使用して事前トレーニング済モデルを構成できます。テンプレートには、事前トレーニング済モデルのデフォルト仕様があります。この仕様を変更または拡張して、カスタム構成を作成できます。テキスト・テンプレートでは、デフォルトで後処理操作として平均プーリングおよび正規化が使用されます。
テキスト・モデルをONNX形式に変換し、それらをファイルまたはデータベースに格納するためのエンドツーエンドの例:
oml.utils
を使用するには、次のものがあることを確認します:
-
オンプレミス・データベース用にLinux X64で実行されているOML4Py 2.1クライアント
-
Python 3.12 (以前のバージョンは互換性がありません)
DBMS_VECTOR.LOAD_ONNX_MODEL
は、モデルをデータベースに保存するためにexport2db
を使用するかわりに、ONNXモデル・ファイルをローカル・システムに保存するためにexport2file
が使用された場合にのみ必要です。DBMS_VECTOR.LOAD_ONNX_MODEL
は、ONNXフォーマット・モデルをOracle Databaseにインポートして、データベース内ONNXランタイムを活用し、VECTOR_EMBEDDING
SQL演算子を使用してベクトル埋込みを生成します。
関連項目:
VECTOR_EMBEDDING
SQL関数の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。IMPORT_ONNX_MODEL
プロシージャの詳細は、『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』を参照してくださいLOAD_ONNX_MODEL
プロシージャの詳細は、『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』を参照してください- 事前トレーニング済埋込みモデルをONNX形式でインポートし、ベクトル埋込みを生成する方法の詳細は、Oracle Machine Learning for SQLの概要を参照してください
- https://onnx.ai/onnx/intro/ (ONNXドキュメントの場合)
親トピック: ONNX形式での事前トレーニング済モデルのインポート