获取文本嵌入

本指南将介绍如何使用 Vertex AI 文本嵌入 API 创建文本嵌入。本页面涵盖以下主题:

Vertex AI 文本嵌入 API 使用文本的密集向量表示法。这些嵌入是使用与大语言模型所用方法类似的深度学习方法创建的。与倾向于将字词直接映射到数字的稀疏向量不同,密集向量旨在表示一段文本的含义。这样,即使段落不使用相同的字词,您也可以搜索与查询含义相符的段落。

这些嵌入的关键特征包括:

  • 高维度:模型生成高维度向量。例如,gemini-embedding-001 使用 3072 维向量。您可以降低输出维度,以节省存储空间并提高计算效率。
  • 归一化向量:输出向量已归一化,因此您可以使用余弦相似度点积欧几里得距离来获取相同的相似度排名。

如需了解详情,请参阅以下资源:

准备工作

  1. 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.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Enable the Vertex AI API.

    Enable the API

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  5. Enable the Vertex AI API.

    Enable the API

  6. 为嵌入作业选择任务类型
  7. 支持的模型

    您可以使用以下模型获取文本嵌入:

    模型名称 说明 输出维度 最大序列长度 支持的文本语言
    gemini-embedding-001 在英语、多语言和代码任务方面均具有卓越性能。它统一了之前专门的模型(如 text-embedding-005text-multilingual-embedding-002),并在各自的领域中实现了更好的性能。如需了解详情,请参阅我们的技术报告 高达 3072 2048 个 token 支持的文字语言
    text-embedding-005 擅长处理英语和代码任务。 高达 768 2048 个 token 英语
    text-multilingual-embedding-002 擅长处理多语言任务。 高达 768 2048 个 token 支持的文字语言

    如需获得出色的嵌入质量,请使用 gemini-embedding-001,这是我们旨在提供最高性能的大型模型。请注意,gemini-embedding-001 支持每个请求一个实例。

    请仅使用支持的模型表中列出的模型名称。请勿指定不带 @version 后缀的模型名称,也不要使用 @latest,因为这些格式无效。

    获取文本片段的文本嵌入

    您可以使用 Vertex AI API 或 Python 版 Vertex AI SDK 获取文本片段的文本嵌入。

    API 限额

    每个请求最多只能包含 250 个输入文本,总共最多只能包含 2 万个输入 token。如果请求超出令牌限制,则会返回 400 错误。每个输入文本的词元数上限为 2048,超出此上限的词元会被静默截断。如需停用静默截断,请将 autoTruncate 设置为 false

    如需了解详情,请参阅文本嵌入限制

    选择嵌入维度

    默认情况下,所有模型都会生成完整长度的嵌入向量。对于 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

    from google import genai
    from google.genai.types import EmbedContentConfig
    
    client = genai.Client()
    response = client.models.embed_content(
        model="gemini-embedding-001",
        contents=[
            "How do I get a driver's license/learner's permit?",
            "How long is my driver's license valid for?",
            "Driver's knowledge test study guide",
        ],
        config=EmbedContentConfig(
            task_type="RETRIEVAL_DOCUMENT",  # Optional
            output_dimensionality=3072,  # Optional
            title="Driver's License",  # Optional
        ),
    )
    print(response)
    # Example response:
    # embeddings=[ContentEmbedding(values=[-0.06302902102470398, 0.00928034819662571, 0.014716853387653828, -0.028747491538524628, ... ],
    # statistics=ContentEmbeddingStatistics(truncated=False, token_count=13.0))]
    # metadata=EmbedContentMetadata(billable_character_count=112)

    将嵌入添加到向量数据库

    生成嵌入后,您可以将其添加到向量数据库(例如 Vector Search)中。这样可以实现低延迟检索,并且随着数据规模扩大,这一点至关重要。

    如需详细了解 Vector Search,请参阅 Vector Search 概览

    后续步骤