本文說明如何使用 Gemini Enterprise Agent Platform Text embeddings API 建立文字嵌入。
Gemini Enterprise Agent Platform 文字嵌入 API 使用密集向量表示法:以 gemini-embedding-001 為例,該模型使用 3072 維度的向量。密集向量嵌入模型採用與大型語言模型類似的深度學習方法。與傾向於將字詞直接對應至數字的稀疏向量不同,密集向量的設計目的是更準確地表示文字片段的意義。在生成式 AI 中使用密集向量嵌入的優點是,您不必搜尋直接相符的字詞或語法,而是可以更準確地搜尋與查詢意義相符的段落,即使這些段落使用的語言不同也沒關係。
向量經過正規化,因此您可以使用餘弦相似度、點積或歐幾里得距離,提供相同的相似度排名。
- 如要進一步瞭解嵌入,請參閱 Embeddings API 總覽。
- 如要瞭解文字嵌入模型,請參閱「文字嵌入」。
- 如要瞭解各個嵌入模型支援哪些語言,請參閱這篇文章。
事前準備
- 登入 Google Cloud 帳戶。如果您是 Google Cloud新手,歡迎 建立帳戶,親自評估產品在實際工作環境中的成效。新客戶還能獲得價值 $300 美元的免費抵免額,可用於執行、測試及部署工作負載。
-
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 role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
Enable the Agent Platform API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. 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 role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
Enable the Agent Platform API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.- 為嵌入工作選擇工作類型。
API 上限
每項要求最多只能有 250 個輸入文字。API 的輸入權杖上限為 20,000 個。如果輸入內容超過這個上限,就會發生 400 錯誤。每個輸入文字的權杖上限為 2048 個,超過上限的內容會遭到截斷。您也可以將 autoTruncate 設為 false,停用截斷功能。
詳情請參閱「文字嵌入限制」。
取得文字片段的文字嵌入
您可以使用 Agent Platform API 或 Agent Platform SDK for Python,取得某段文字的文字嵌入。
選擇嵌入維度
所有模型預設都會生成完整長度的嵌入向量。對於 gemini-embedding-001,這個向量有 3072 個維度,其他模型則會產生 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_ENTERPRISE=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_ENTERPRISE=True
Node.js
安裝
npm install @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_ENTERPRISE=True
Java
瞭解如何安裝或更新 Java。
詳情請參閱 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_ENTERPRISE=True
REST
使用任何要求資料之前,請先修改下列項目的值:
- PROJECT_ID: 您的 [專案 ID](/resource-manager/docs/creating-managing-projects#identifiers)。 。
- TEXT:要產生嵌入的文字。限制:除了
textembedding-gecko@001以外的所有模型,每則文字最多 2,048 個權杖,且最多五則文字。textembedding-gecko@001的輸入權杖長度上限為 3072。gemini-embedding-001的每項要求只能包含單一輸入文字。詳情請參閱「文字嵌入限制」。 - AUTO_TRUNCATE:如果設為
false,文字超出權杖限制會導致要求失敗。預設值為true。
HTTP 方法和網址:
POST https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/publishers/google/models/gemini-embedding-001: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/gemini-embedding-001: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/gemini-embedding-001:predict" | Select-Object -Expand Content
您應該會收到類似如下的 JSON 回應。請注意,values
已截斷,以節省空間。
cURL 指令範例
MODEL_ID="gemini-embedding-001"
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?"}
],
}'
支援的模型
下表列出可用的 Google 和開放式文字嵌入模型。
Google 模型
您可以使用下列模型取得文字嵌入:
| 模型名稱 | 說明 | 輸出維度 | 序列長度上限 | 支援的文字語言 |
|---|---|---|---|---|
gemini-embedding-001 |
在英文、多語言和程式碼工作方面表現優異。這項模型整合了先前的專用模型 (例如 text-embedding-005 和 text-multilingual-embedding-002),並在各自領域中展現更出色的效能。詳情請參閱我們的技術報告。 |
最多 3072 個 | 2048 個權杖 | 支援的文字語言 |
text-embedding-005 |
專精於英文和程式碼工作。 | 最多 768 個 | 2048 個權杖 | 英文 |
text-multilingual-embedding-002 |
擅長處理多語言工作。 | 最多 768 個 | 2048 個權杖 | 支援的文字語言 |
如要獲得最佳嵌入品質,請使用 gemini-embedding-001,這是專為提供最高效能而設計的大型模型。
開放式模型
您可以使用下列模型取得文字嵌入:
| 模型名稱 | 說明 | 輸出尺寸 | 序列長度上限 | 支援的文字語言 |
|---|---|---|---|---|
multilingual-e5-small |
屬於 E5 系列文字嵌入模型。小型變體包含 12 層。 | 最多 384 個 | 512 個權杖 | 支援的語言 |
multilingual-e5-large |
屬於 E5 系列文字嵌入模型。大型變體包含 24 層。 | 最多 1024 個 | 512 個權杖 | 支援的語言 |
如要開始使用,請參閱 E5 系列模型卡。 如要進一步瞭解開放模型,請參閱「MaaS 的開放模型」。
將嵌入項目新增至向量資料庫
產生嵌入後,您可以將嵌入新增至向量資料庫,例如 Vector Search。這樣就能以低延遲時間擷取資料,這在資料量增加時至關重要。
如要進一步瞭解 Vector Search,請參閱 Vector Search 總覽。
後續步驟
- 如要進一步瞭解速率限制,請參閱「Agent Platform 速率限制」。
- 如要取得嵌入的批次預測,請參閱取得批次文字嵌入推論
- 如要進一步瞭解多模態嵌入,請參閱「取得多模態嵌入」
- 如要調整嵌入,請參閱「調整文字嵌入」一文。
- 如要進一步瞭解
text-embedding-005和text-multilingual-embedding-002背後的相關研究,請參閱「Gecko:從大型語言模型擷取的通用文字嵌入」研究論文。