本文档介绍如何使用 Vertex AI 文本嵌入 API 创建文本嵌入。
Vertex AI 文本嵌入 API 使用密集向量表示法:例如,gemini-embedding-001 使用 3072 维向量。密集向量嵌入模型使用与大语言模型所用方法类似的深度学习方法。与倾向于将字词直接映射到数字的稀疏向量不同,密集向量旨在更好地表示一段文本的含义。在生成式 AI 中使用密集向量嵌入的优势在于,您可以更好地搜索与查询含义相符的段落,而不是搜索直接的字词或语法匹配项,即使段落不使用相同的语言也是如此。
这些向量已进行标准化处理,因此您可以使用余弦相似度、点积或欧几里得距离来提供相同的相似度排名。
准备工作
- 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. - 为嵌入作业选择任务类型。
- PROJECT_ID:您的项目 ID。
- TEXT:您要为其生成嵌入的文本。限制:五个文本,除
textembedding-gecko@001
之外的所有模型的每个文本最多 2,048 个词元。textembedding-gecko@001
的输入词元长度上限为 3072。 对于gemini-embedding-001
,每个请求只能包含一个输入文本。如需了解详情,请参阅文本嵌入限制。 - AUTO_TRUNCATE:如果设置为
false
,则超出词元限制的文本会导致请求失败。默认值为true
。 - 如需详细了解速率限制,请参阅 Vertex AI 上的生成式 AI 速率限制。
- 如需获取嵌入的批量预测结果,请参阅获取批量文本嵌入预测结果
- 如需详细了解多模态嵌入,请参阅获取多模态嵌入
- 如需调优嵌入,请参阅调优文本嵌入
- 如需详细了解
text-embedding-005
和text-multilingual-embedding-002
背后的研究,请参阅研究论文 Gecko:从大语言模型中蒸馏的多功能文本嵌入。
API 限额
对于每个请求,不能超过250个输入文本。 API 的输入token数量上限为 20,000。超出此限制的输入会导致 400 错误。每个输入文本进一步限制为 2048 个token;任何多余的内容都会以静默方式截断。您还可以通过将 autoTruncate
设置为 false
来停用静默截断。
如需了解详情,请参阅文本嵌入限制。
获取文本片段的文本嵌入
您可以使用 Vertex AI API 或 Python 版 Vertex AI SDK 获取文本片段的文本嵌入。
选择嵌入维度
默认情况下,所有模型都会生成全长嵌入向量。对于 gemini-embedding-001
,此向量具有 3072 个维度,而其他模型会生成 768 维向量。不过,通过使用 output_dimensionality
参数,用户可以控制输出嵌入向量的大小。选择较小的输出维度可以节省存储空间并提高下游应用的计算效率,同时在质量方面几乎不会有损失。
以下示例使用 gemini-embedding-001
模型。
Python
安装
pip install --upgrade google-genai
如需了解详情,请参阅 SDK 参考文档。
设置环境变量以将 Gen AI SDK 与 Vertex AI 搭配使用:
# 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 参考文档。
设置环境变量以将 Gen AI SDK 与 Vertex AI 搭配使用:
# 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
REST
在使用任何请求数据之前,请先进行以下替换:
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 个 token | 支持的文本语言 |
text-embedding-005 |
擅长处理英语和代码任务。 | 高达 768 | 2048 个 token | 英语 |
text-multilingual-embedding-002 |
擅长处理多语言任务。 | 高达 768 | 2048 个 token | 支持的文本语言 |
如要获得出色的嵌入质量,请使用 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 概览。