このドキュメントでは、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-005 |
これらのモデルを初めて使用する場合は、最新バージョンを使用することをおすすめします。英語のテキストには text-embedding-005
を使用します。多言語テキストの場合は、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-005
text-multilingual-embedding-002
次の例では、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 に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。
最新モデル
text-embedding-005
は、新しいタスクタイプ 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-005: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-005
とtext-multilingual-embedding-002
の背後にある研究について詳しくは、研究論文「Gecko: Versatile Text Embeddings Distilled from Large Language Models」をご覧ください。