このドキュメントでは、Vertex AI の Text embeddings API を使用してテキスト エンベディングを作成する方法について説明します。
Vertex AI Text Embeddings API は、密なベクトル表現を使用します。たとえば、gemini-embedding-001 は 3,072 次元のベクトルを使用します。密なベクトル エンベディング モデルは、大規模言語モデルで使用されるものと同様のディープ ラーニング手法を使用します。単語を直接数値にマッピングする傾向があるスパース ベクトルとは異なり、密なベクトルは、テキストの意味をより適切に表現するように設計されています。生成 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.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Enable the Vertex AI API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles. -
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Enable the Vertex AI API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles. - エンベディング ジョブのタスクタイプを選択します。
- レート制限の詳細を確認する。Vertex AI の生成 AI のレート制限をご覧ください。
- エンベディングのバッチ予測を取得する。バッチ テキスト エンベディング予測を取得するをご覧ください。
- マルチモーダル エンベディングの詳細を確認する。マルチモーダル エンベディングを取得するをご覧ください。
- エンベディングをチューニングする。テキスト エンベディングをチューニングするをご覧ください。
text-embedding-005
とtext-multilingual-embedding-002
の背後にある研究の詳細を確認する。研究論文「Gecko: Versatile Text Embeddings Distilled from Large Language Models」をご覧ください。
サポートされているモデル
テキスト エンベディングは、次のモデルを使用して取得できます。
モデル名 | 説明 | 出力のサイズ | 最大シーケンス長 | サポートされているテキスト言語 |
---|---|---|---|---|
gemini-embedding-001 |
英語、多言語、コードタスクで最先端のパフォーマンスを実現します。text-embedding-005 や text-multilingual-embedding-002 などの以前の専門モデルを統合し、それぞれのドメインでより優れたパフォーマンスを実現します。詳しくは、技術レポートをご覧ください。 |
最大 3,072 | 2,048 トークン | サポートされているテキスト言語 |
text-embedding-005 |
英語とコードのタスクに特化しています。 | 最大 768 | 2,048 トークン | 英語 |
text-multilingual-embedding-002 |
多言語タスクに特化しています。 | 最大 768 | 2,048 トークン | サポートされているテキスト言語 |
エンベディングの品質を高めるには、最高レベルのパフォーマンスを提供するように設計された大規模モデルである gemini-embedding-001
を使用します。
テキストのスニペットに対するテキスト エンベディングを取得する
テキストのスニペットのテキスト エンベディングを取得するには、Vertex AI API または Vertex AI SDK for Python を使用します。
API の上限
1 つのリクエストにつき入力テキストは 250 個までに制限されています。API の最大入力トークンの上限は 20,000 です。この上限を超える入力は、400 エラーになります。個々の入力テキストはさらに 2,048 トークンに制限されており、超過分は通知なく切り捨てられます。autoTruncate
を false
に設定して、暗黙的な切り捨てを無効にすることもできます。
詳細については、テキスト エンベディングの上限をご覧ください。
エンベディング ディメンションを選択する
どのモデルも、デフォルトでフルレングスのエンベディング ベクトルを生成します。gemini-embedding-001
の場合、このベクトルは 3,072 次元を持ち、他のモデルは 768 次元のベクトルを生成します。ただし、output_dimensionality
パラメータを使用すると、出力エンベディング ベクトルのサイズを制御できます。出力のディメンションを小さくすると、ストレージ スペースを節約し、ダウンストリーム アプリケーションの計算効率を高めることができます。品質の低下はわずかです。
次の例では、gemini-embedding-001
モデルを使用します。
Python
インストール
pip install --upgrade google-genai
詳しくは、SDK リファレンス ドキュメントをご覧ください。
Vertex AI で Gen AI SDK を使用するための環境変数を設定します。
# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values # with appropriate values for your project. export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT export GOOGLE_CLOUD_LOCATION=global export GOOGLE_GENAI_USE_VERTEXAI=True
Go
Go をインストールまたは更新する方法について学びます。
詳しくは、SDK リファレンス ドキュメントをご覧ください。
Vertex AI で Gen AI SDK を使用するための環境変数を設定します。
# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values # with appropriate values for your project. export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT export GOOGLE_CLOUD_LOCATION=global export GOOGLE_GENAI_USE_VERTEXAI=True
ベクトル データベースにエンベディングを追加する
エンベディングを生成すると、Vector Search のようなベクトル データベースにエンベディングを追加できます。これにより低レイテンシでの検索が可能になり、データサイズが大きくなるほどそれが重要になります。
ベクトル検索の詳細については、ベクトル検索の概要をご覧ください。