本文档介绍如何使用 Vertex AI 文本嵌入 API 创建文本嵌入。
Vertex AI 文本嵌入 API 使用密集向量表示法:例如,text-embedding-gecko 使用 768 维向量。密集向量嵌入模型使用与大语言模型所用方法类似的深度学习方法。与倾向于将字词直接映射到数字的稀疏向量不同,密集向量旨在更好地表示一段文本的含义。在生成式 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.
-
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 或 Python 版 Vertex AI SDK 获取文本片段的文本嵌入。对于每个请求,在 us-central1
,输入文本上限为 250 个,而在其他区域,输入文本数上限为 5。
API 的输入词元数量上限为 20,000。超出此限制的输入将导致 500 错误。每个输入文本进一步限制为 2048 个词元;任何多余的内容都会以静默方式截断。您还可以通过将 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
之外的所有模型的每个文本最多 2,048 个词元。textembedding-gecko@001
的输入词元长度上限为 3072。 - AUTO_TRUNCATE:如果设置为
false
,则超出词元限制的文本会导致请求失败。默认值为true
。
HTTP 方法和网址:
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。这样可以实现低延迟检索,并且随着数据规模扩大,这一点至关重要。
如需详细了解 Vector Search,请参阅 Vector Search 概览。
后续步骤
- 如需详细了解速率限制,请参阅 Vertex AI 上的生成式 AI 速率限制。
- 如需获取嵌入的批量预测结果,请参阅获取批量文本嵌入预测结果
- 如需详细了解多模态嵌入,请参阅获取多模态嵌入
- 如需对嵌入进行调优,请参阅调优文本嵌入
- 如需详细了解
text-embedding-005
和text-multilingual-embedding-002
背后的研究,请参阅研究论文 Gecko:从大语言模型中提炼的多功能文本嵌入。