このページでは、AlloyDB Omni でモデル エンドポイント管理を使用して AI モデル エンドポイントの登録と予測の呼び出しをテストできるプレビューについて説明します。本番環境で AI モデルを使用するには、AlloyDB AI を使用して生成 AI アプリケーションを構築するとベクトル エンベディングを使用するをご覧ください。
AlloyDB にリモートモデル エンドポイントを登録するには、AlloyDB でリモート AI モデルを登録して呼び出すをご覧ください。
概要
モデル エンドポイント管理のプレビュー版を使用すると、モデル エンドポイントを登録して、データベース クラスタでモデル エンドポイントのメタデータを管理し、SQL クエリでモデルを操作できます。これには google_ml_integration
拡張機能が用意されています。この機能により、モデルに関連するモデル エンドポイント メタデータを追加して登録する関数を実行できます。また、モデルを使用してベクトル エンベディングを生成したり、予測を呼び出すこともできます。
モデル エンドポイント管理を使用して登録できるモデルタイプの例を次に示します。
- Vertex AI テキスト エンベディング モデル
- Anthropic、Hugging Face、OpenAI などのサードパーティ プロバイダが提供するエンベディング モデル
- セルフホスト型テキスト エンベディング モデル
- JSON ベースの API を使用した汎用モデル(Hugging Face でホストされている
facebook/bart-large-mnli
モデルや Vertex AI Model Garden のgemini-pro
モデルなど)
仕組み
モデル エンドポイント管理を使用すると、次の要件を満たすモデル エンドポイントを登録できます。
- モデルの入力と出力は JSON 形式をサポートしています。
- モデルは REST プロトコルを使用して呼び出すことができます。
モデル エンドポイントをモデル エンドポイント管理に登録すると、モデルへの参照として指定した一意のモデル ID を使用して各エンドポイントが登録されます。このモデル ID を使用してモデルをクエリできます。
エンベディングを生成して、テキスト プロンプトを数値ベクトルに変換します。データベースで
pgvector
拡張機能が有効になっている場合、生成されたエンベディングをベクトルデータとして保存できます。予測を呼び出し、トランザクション内で SQL を使用してモデルを呼び出します。
アプリケーションは、google_ml_integration
拡張機能を使用してモデル エンドポイント管理にアクセスできます。この拡張機能では、次の関数を使用できます。
google_ml.create_model()
SQL 関数。予測関数またはエンベディング関数で使用されるモデル エンドポイントを登録するために使用されます。google_ml.create_sm_secret()
SQL 関数。API キーが保存されている Secret Manager のシークレットを使用します。 Google Cloudgoogle_ml.embedding()
SQL 関数。テキスト エンベディングを生成する予測関数です。- JSON の入力形式と出力形式をサポートする汎用モデルを呼び出すときに予測を生成する
google_ml.predict_row()
SQL 関数。 - 汎用モデルでカスタム URL の生成、HTTP ヘッダーの生成、変換関数の渡しを処理するその他のヘルパー関数。
- 登録されたモデル エンドポイントとシークレットを管理する関数。
主なコンセプト
モデル エンドポイント管理を使い始める前に、モデルに接続して使用するために必要なコンセプトを理解しておく必要があります。
モデル プロバイダ {: #model-provider}
モデル プロバイダは、サポートされているモデルのホスティング プロバイダです。次の表に、使用するモデル プロバイダごとに設定が必要なモデル プロバイダの値を示します。
モデル プロバイダ | 関数での設定… |
---|---|
Vertex AI | google |
Hugging Face モデル | custom |
Anthropic モデル | custom |
その他のモデル | custom |
OpenAI | open_ai |
デフォルトのモデル プロバイダは custom
です。
サポートされている認証方法は、プロバイダのタイプによって異なります。Vertex AI モデルは AlloyDB サービス アカウントを使用して認証を行いますが、他のプロバイダは Secret Manager を使用して認証できます。
モデルタイプ
モデルタイプは、AI モデルのタイプを示します。この拡張機能は、テキスト エンベディングと任意の汎用モデルタイプをサポートしています。モデル エンドポイントの登録時に設定できるサポート対象のモデルタイプは、text-embedding
と generic
です。generic
がデフォルトのモデルタイプであるため、汎用モデル エンドポイントを登録する場合、モデルタイプの設定は省略可能です。
- サポートが組み込まれたテキスト エンベディング モデル
- モデル エンドポイント管理には、Vertex AI の
textembedding-gecko
モデルと OpenAI のtext-embedding-ada-002
モデルのすべてのバージョンが組み込まれています。これらのモデル エンドポイントを登録するには、google_ml.create_model()
関数を使用します。AlloyDB は、これらのモデルのデフォルトの変換関数を自動的に設定します。 - これらのモデルのモデルタイプは
text-embedding
です。 - その他のテキスト エンベディング モデル
- 他のテキスト エンベディング モデルの場合は、モデルがサポートする入力形式と出力形式を処理する変換関数を作成する必要があります。必要に応じて、HTTP ヘッダー生成関数を使用して、モデルに必要なカスタム ヘッダーを生成できます。
- これらのモデルのモデルタイプは
text-embedding
です。 - 汎用モデル
- モデル エンドポイント管理では、テキスト エンベディング モデルを除くすべてのモデルタイプを登録できます。汎用モデルの予測を呼び出すには、
google_ml.predict_row()
関数を使用します。モデル固有のリクエスト エンドポイントや HTTP ヘッダーなど、モデル エンドポイントのメタデータを設定できます。 - 汎用モデル エンドポイントを登録するときに変換関数を渡すことはできません。予測を呼び出す前に、関数への入力が JSON 形式であることと、JSON 出力を解析して最終出力を導出していることを確認します。
- これらのモデルのモデルタイプは
generic
です。
認証
認証タイプは、google_ml_integration
拡張機能を使用してモデル エンドポイント管理に接続するために使用できる認証タイプを示します。認証の設定は省略可能です。モデルにアクセスするために認証が必要な場合にのみ必要です。
Vertex AI モデルの場合、認証には AlloyDB サービス アカウントが使用されます。他のモデルでは、Secret Manager にシークレットとして保存されている API キーまたは署名なしトークンを google_ml.create_sm_secret()
SQL 関数で使用できます。
次の表に、設定可能な認証タイプを示します。
認証方法 | 関数での設定… | モデル プロバイダ |
---|---|---|
AlloyDB サービス エージェント | alloydb_service_agent_iam |
Vertex AI プロバイダ |
Secret Manager | secret_manager |
Anthropic、Hugging Face、OpenAI などのサードパーティ プロバイダ |
予測関数
google_ml_integration
拡張機能には、次の予測関数が含まれています。
google_ml.embedding()
- 登録されたテキスト エンベディング モデル エンドポイントを呼び出してエンベディングを生成するために使用されます。Vertex AI の
textembedding-gecko
モデルと OpenAI のtext-embedding-ada-002
モデルの組み込みサポートも含まれます。 - 組み込みサポートのないテキスト エンベディング モデルの場合、入力パラメータと出力パラメータはモデルに固有であり、関数でモデルを呼び出すには変換する必要があります。予測関数の入力をモデル固有の入力に変換する入力変換関数と、モデル固有の出力を予測関数出力に変換する出力変換関数を作成します。
google_ml.predict_row()
- モデルが JSON ベースの API をサポートしている限り、登録済みの汎用モデル エンドポイントを呼び出して予測を呼び出すために使用されます。
変換関数
変換関数は、入力をモデルが理解できる形式に変更し、モデルのレスポンスを予測関数が想定する形式に変換します。変換関数は、組み込みサポートなしで text-embedding
モデル エンドポイントを登録する場合に使用されます。変換関数の署名は、モデルタイプの予測関数によりも異なります。
generic
モデル エンドポイントを登録するときに変換関数を使用できません。
次のコードは、テキスト エンベディング モデルの予測関数の署名を示しています。
// define custom model specific input/output transform functions.
CREATE OR REPLACE FUNCTION input_transform_function(model_id VARCHAR(100), input_text TEXT) RETURNS JSON;
CREATE OR REPLACE FUNCTION output_transform_function(model_id VARCHAR(100), response_json JSON) RETURNS real[];
変換関数の作成方法については、変換関数の例をご覧ください。
HTTP ヘッダー生成関数
HTTP ヘッダー生成関数は、HTTP ヘッダーとして使用される JSON Key-Value ペアで出力を生成します。予測関数の署名は、ヘッダー生成関数の署名を定義します。
次の例は、google_ml.embedding()
予測関数の署名を示しています。
CREATE OR REPLACE FUNCTION generate_headers(model_id VARCHAR(100), input TEXT) RETURNS JSON;
google_ml.predict_row()
予測関数の署名は次のとおりです。
CREATE OR REPLACE FUNCTION generate_headers(model_id VARCHAR(100), input JSON) RETURNS JSON;
ヘッダー生成関数の作成方法については、HTTP ヘッダー生成関数をご覧ください。