google_ml_integration
拡張機能には、public
と google_ml
の 2 つの異なる Namespace にエンベディング関数が含まれています。このページでは、これらの Namespace の関数を使用してテキスト エンベディングを生成する方法について説明します。
public
スキーマの embedding()
関数は、エンドポイントを登録せずに任意の Vertex AI エンベディング モデルで使用できます。タスクタイプなどのカスタム情報を渡す場合は、エンドポイントを登録してから、google_ml
スキーマで google_ml.embedding()
関数を使用します。エンドポイントの登録の詳細については、モデルを登録するをご覧ください。
エンベディングの仕組み
AlloyDB で次の特長を満たすデータベースを実行します。
データベースに
items
というテーブルが存在する。このテーブルの各行には、販売する商品が記録されています。items
テーブルにcomplaints
という列がある。このTEXT
列には、各商品について記録された購入者からの苦情が保存されます。データベースが Vertex AI Model Garden と統合され、
gemini-embedding-001
の英語モデルにアクセスできる。
このデータベースには商品に関する苦情が記録されていますが、苦情は書式なしテキストとして保存されているため、クエリで照会するのは容易ではありません。たとえば、色違いの商品を受け取った顧客からの苦情が最も多い商品を確認したい場合は、テーブルに対して通常の SQL クエリを実行し、さまざまなキーワードで照合を行います。ただし、この方法では、指定したキーワードが含まれている行のみが一致します。
たとえば、SELECT * FROM item WHERE complaints LIKE
"%wrong color%"
などの基本的な SQL クエリでは、complaints
フィールドに The picture shows a blue one, but the one I received was red
のみが含まれる行は返されません。
LLM ベースのエンベディングを使用する SQL クエリは、このようなクエリに対して意味的に類似したレスポンスを返すのに役立ちます。エンベディングを適用すると、この例のテーブルで、苦情が特定のテキスト プロンプト(It was the
wrong color
など)と意味的に類似している項目をクエリできます。
エンベディングを生成するには、次のいずれかのスキーマを選択します。
始める前に
AlloyDB でエンベディングを生成するには、次の操作を行います。
psql
または AlloyDB for PostgreSQL Studio を使用してpostgres
ユーザーとしてデータベースに接続します。google_ml_integration
拡張機能がインストールされていることを確認します。google_ml_integration.enable_model_support
フラグがon
に設定されていることを確認します。- AlloyDB データベースからエンベディングを生成するには、Vertex AI と連携するように AlloyDB を構成する必要があります。詳細については、データベースを Vertex AI と統合するをご覧ください。
データベース ユーザーにエンベディング関数を実行してエンベディングを生成する権限を付与します。
\c DB_NAME; GRANT EXECUTE ON FUNCTION google_ml.embedding TO USER_NAME;
次のように置き換えます。
DB_NAME: 権限を付与するデータベースの名前
USER_NAME: 権限を付与するユーザーの名前
エンベディングを生成する
google_ml.embedding()
SQL 関数を使用して、テキスト エンベディング モデルを呼び出します。
モデルを呼び出してエンベディングを生成するには、次のクエリを実行します。
SELECT
google_ml.embedding(
model_id => 'MODEL_ID',
content => 'CONTENT');
次のように置き換えます。
MODEL_ID
: 修飾モデル ID(gemini-embedding-001
など)。CONTENT
: ベクトル エンベディングに変換するテキスト。
エンベディング生成の例
このセクションでは、登録済みモデル エンドポイントを使用してエンベディングを生成する例を示します。
Gemini のエンベディング モデル
登録済みの gemini-embedding-001
モデル エンドポイントのエンベディングを生成するには、次のステートメントを実行します。
SELECT
google_ml.embedding(
model_id => 'gemini-embedding-001',
content => 'AlloyDB is a managed, cloud-hosted SQL database service');
AlloyDB クラスタと Vertex AI エンドポイントが異なるプロジェクトにある場合は、model_id
をエンドポイントの完全修飾パス(projects/PROJECT_ID/locations/REGION_ID/publishers/google/models/gemini-embedding-001
など)に設定します。
登録済みの gemini-embedding-001
モデル エンドポイントのエンベディングを生成するには、次のステートメントを実行します。
SELECT
google_ml.embedding(
model_id => 'gemini-embedding-001',
content => 'AlloyDB is a managed, cloud-hosted SQL database service');
OpenAI のエンベディング モデル
OpenAI によって登録された text-embedding-ada-002
モデル エンドポイントのエンベディングを生成するには、次のステートメントを実行します。
SELECT
google_ml.embedding(
model_id => 'text-embedding-ada-002',
content => 'e-mail spam');
OpenAI によって登録された text-embedding-3-small
モデル エンドポイントまたは text-embedding-3-large
モデル エンドポイントのエンベディングを生成するには、次のステートメントを実行します。
SELECT
google_ml.embedding(
model_id => 'text-embedding-3-small',
content => 'Vector embeddings in AI');
次のステップ
- ベクトル類似性検索を実行する。
- AlloyDB、pgvector、モデル エンドポイント管理を使用してスマート ショッピング アシスタントを構築する方法について確認する。
- インデックスとクエリベクトルを作成する。
- エンベディング ワークフローの例を確認する。