このドキュメントでは、Vertex AI の Text embeddings API を使用してテキスト エンベディングを作成する方法について説明します。
Vertex AI Text Embeddings API は、密なベクトル表現を使用し、たとえば、text-embedding-gecko は 768 次元のベクトルを使用します。密なベクトル エンベディング モデルは、大規模言語モデルで使用されるものと同様のディープ ラーニング手法を使用します。単語を直接数値にマッピングする傾向があるスパース ベクトルとは異なり、密なベクトルは、テキストの意味をより適切に表現するように設計されています。生成 AI で密なベクトル エンベディングを使用するメリットは、単語や構文の直接的な一致ではなく、クエリの意味に合った文章を検索できる点です。たとえその文章が同じ表現を使っていなくても、意味が一致すれば検索できます。
- エンベディングの詳細については、エンベディング API の概要をご覧ください。
- テキスト エンベディング モデルの詳細については、テキスト エンベディングをご覧ください。
- 各エンベディング モデルでサポートされている言語については、サポートされているテキスト言語をご覧ください。
始める前に
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Enable the Vertex AI API.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Enable the Vertex AI API.
- エンベディング ジョブのタスクタイプを選択します。
サポートされているモデル
テキスト エンベディングは、次のモデルを使用して取得できます。
英語モデル | 多言語モデル |
---|---|
textembedding-gecko@001 |
textembedding-gecko-multilingual@001 |
textembedding-gecko@003 |
text-multilingual-embedding-002 |
text-embedding-004 |
|
text-embedding-preview-0815 |
これらのモデルを初めて使用する場合は、最新バージョンを使用することをおすすめします。英語のテキストには text-embedding-004
を使用します。多言語テキストには text-multilingual-embedding-002
を使用します。
テキストのスニペットに対するテキスト エンベディングを取得する
テキストのスニペットのテキスト エンベディングを取得するには、Vertex AI API または Vertex AI SDK for Python を使用します。us-central1
では、入力テキストが 1 つのリクエストにつき 250 個までに制限されています。他のリージョンでは、入力テキストは最大 5 個です。API の最大入力トークンの上限は 20,000 です。この上限を超える入力は、500 エラーになります。個々の入力テキストはさらに 2,048 トークンに制限されており、超過分は通知なく切り捨てられます。autoTruncate
を false
に設定して、暗黙的な切り捨てを無効にすることもできます。
どのモデルも、デフォルトで 768 ディメンションの出力を生成します。ただし、次のモデルでは、1~768 の範囲で出力のディメンションを選択できます。出力のディメンションを小さくすると、メモリとストレージのスペースを節約し、計算を効率化できます。
text-embedding-004
text-multilingual-embedding-002
text-embedding-preview-0815
次の例では、text-embedding-004
モデルを使用します。
REST
テキスト エンベディングを取得するには、パブリッシャー モデルのモデル ID を指定して POST リクエストを送信します。
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: 実際のプロジェクト ID。
- TEXT: エンベディングを生成するテキスト。上限:
textembedding-gecko@001
を除くすべてのモデルで、5 テキスト(1 テキストあたり最大 2,048 トークン)。textembedding-gecko@001
の最大入力トークン長は 3,072 です。 - AUTO_TRUNCATE:
false
に設定した場合、テキストがトークンの上限を超えると、リクエストが失敗します。デフォルト値はtrue
です。
HTTP メソッドと URL:
POST https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/publishers/google/models/text-embedding-004:predict
リクエストの本文(JSON):
{ "instances": [ { "content": "TEXT"} ], "parameters": { "autoTruncate": AUTO_TRUNCATE } }
リクエストを送信するには、次のいずれかのオプションを選択します。
curl
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/publishers/google/models/text-embedding-004:predict"
PowerShell
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/publishers/google/models/text-embedding-004:predict" | Select-Object -Expand Content
次のような JSON レスポンスが返されます。容量を節約するために、values
は切り捨てられています。
curl コマンドの例
MODEL_ID="text-embedding-004"
PROJECT_ID=PROJECT_ID
curl \
-X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/publishers/google/models/${MODEL_ID}:predict -d \
$'{
"instances": [
{ "content": "What is life?"}
],
}'
Python
Vertex AI SDK for Python のインストールまたは更新の方法については、Vertex AI SDK for Python をインストールするをご覧ください。 詳細については、Python API リファレンス ドキュメントをご覧ください。
Go
このサンプルを試す前に、Vertex AI クイックスタート: クライアント ライブラリの使用にある Go の設定手順を完了してください。詳細については、Vertex AI Go API のリファレンス ドキュメントをご覧ください。
Vertex AI に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。
Java
このサンプルを試す前に、Vertex AI クイックスタート: クライアント ライブラリの使用にある Java の設定手順を完了してください。詳細については、Vertex AI Java API のリファレンス ドキュメントをご覧ください。
Vertex AI に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。
Node.js
このサンプルを試す前に、Vertex AI クイックスタート: クライアント ライブラリの使用にある Node.js の設定手順を完了してください。詳細については、Vertex AI Node.js API のリファレンス ドキュメントをご覧ください。
Vertex AI に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。
最新モデル
プレビュー版では、次の 1 つのエンベディング モデルを使用できます。
text-embedding-preview-0815
このモデルは、新しいタスクタイプ CODE_RETRIEVAL_QUERY
をサポートしています。このタスクタイプを使用すると、プレーンテキスト クエリを使用して関連するコードブロックを取得できます。この機能を使用するには、RETRIEVAL_DOCUMENT
タスクタイプを使用してコードブロックを埋め込み、CODE_RETRIEVAL_QUERY
を使用してテキストクエリを埋め込む必要があります。
すべてのタスクタイプを確認するには、モデル リファレンスをご覧ください。
以下に例を示します。
REST
PROJECT_ID=PROJECT_ID
curl \
-X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/publishers/google/models/text-embedding-preview-0815:predict -d \
$'{
"instances": [
{
"task_type": "CODE_RETRIEVAL_QUERY",
"content": "Function to add two numbers"
}
],
}'
Python
Vertex AI SDK for Python のインストールまたは更新の方法については、Vertex AI SDK for Python をインストールするをご覧ください。 詳細については、Python API リファレンス ドキュメントをご覧ください。
Go
このサンプルを試す前に、Vertex AI クイックスタート: クライアント ライブラリの使用にある Go の設定手順を完了してください。詳細については、Vertex AI Go API のリファレンス ドキュメントをご覧ください。
Vertex AI に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。
Java
このサンプルを試す前に、Vertex AI クイックスタート: クライアント ライブラリの使用にある Java の設定手順を完了してください。詳細については、Vertex AI Java API のリファレンス ドキュメントをご覧ください。
Vertex AI に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。
Node.js
このサンプルを試す前に、Vertex AI クイックスタート: クライアント ライブラリの使用にある Node.js の設定手順を完了してください。詳細については、Vertex AI Node.js API のリファレンス ドキュメントをご覧ください。
Vertex AI に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。
これらのモデルを使用する場合は、次の制限事項が適用されます。
- ミッション クリティカルなシステムや本番環境のシステムでは、これらのプレビュー モデルを使用しません。
- これらのモデルは
us-central1
でのみ使用できます。 - バッチ予測はサポートされていません。
- カスタマイズはサポートされていません。
ベクトル データベースにエンベディングを追加する
エンベディングを生成すると、Vector Search のようなベクトル データベースにエンベディングを追加できます。これにより低レイテンシでの検索が可能になり、データサイズが大きくなるほどそれが重要になります。
ベクトル検索の詳細については、ベクトル検索の概要をご覧ください。
次のステップ
- レート制限の詳細を確認する。Vertex AI の生成 AI のレート制限をご覧ください。
- エンベディングのバッチ予測を取得する。バッチ テキスト エンベディング予測を取得するをご覧ください。
- マルチモーダル エンベディングの詳細を確認する。マルチモーダル エンベディングを取得するをご覧ください。
- エンベディングをチューニングする。テキスト エンベディングをチューニングするをご覧ください。
text-embedding-004
とtext-multilingual-embedding-002
の背後にある研究の詳細を確認する。研究論文「Gecko: Versatile Text Embeddings Distilled from Large Language Models」をご覧ください。