返回

字典嵌入在 Vertex AI Search 中的应用:从字典到文本嵌入的完整指南

python

如何为 Vertex AI Search 生成字典(非文本)嵌入

引言

在使用 Vertex AI Search 进行向量搜索时,需要将数据转换为向量嵌入。对于文本数据,可以使用预训练的文本嵌入模型来生成嵌入。然而,对于非文本数据(如字典),无法直接应用这些模型。本文将介绍如何将字典转换为文本格式,然后使用文本嵌入模型生成嵌入。

将字典转换为文本格式

要将字典转换为文本格式,可以使用以下步骤:

  • 遍历字典的键和值,将它们连接成一个字符串。
  • 确保键和值之间使用分隔符(如逗号或冒号)进行分隔。

生成文本嵌入

一旦将字典转换为文本格式,就可以使用文本嵌入模型来生成嵌入。Vertex AI 提供了预训练的文本嵌入模型,例如 "textembedding-gecko@001"。可以使用以下步骤生成嵌入:

  • 使用 TextEmbeddingModel.from_pretrained() 函数加载模型。
  • 使用 get_embeddings() 方法将文本字符串传递给模型。
  • 模型将返回一个字典,其中包含每个单词的嵌入向量。

提取矢量

文本嵌入是一个字典,其中包含每个单词的嵌入向量。要获得矢量,可以从字典中提取值列表。

存储嵌入

将矢量存储在 GCS 存储桶中,以便 Vertex AI Search 可以访问它们。可以通过以下步骤存储嵌入:

  • 创建一个新的 GCS 存储桶。
  • 将嵌入向量上传到存储桶。
  • 将存储桶的 URI 添加到 Vertex AI Search 连接器。

代码示例

以下 Python 代码展示了如何将字典转换为文本嵌入:

import json
from vertexai.language_models import TextEmbeddingModel

def dict_to_embedding(dict_object):
    """Generate an embedding for a given dictionary.

    Args:
        dict_object (dict): The dictionary to generate an embedding for.

    Returns:
        list: A list of embedding vectors.
    """

    # Convert the dictionary to a text string.
    text_string = json.dumps(dict_object)

    # Generate the text embedding.
    model = TextEmbeddingModel.from_pretrained("textembedding-gecko@001")
    embeddings = model.get_embeddings([text_string])

    # Extract the vector.
    vector = embeddings[0].values

    # Return the vector.
    return vector

结论

通过遵循本文中概述的步骤,可以将字典转换为文本嵌入,然后使用这些嵌入在 Vertex AI Search 中进行向量搜索。这使得在非文本数据上进行向量搜索成为可能,从而扩大了 Vertex AI Search 的用例。

常见问题解答

  • 我可以使用任何文本嵌入模型吗?
    • 是的,但建议使用 Vertex AI 提供的预训练模型,因为它们已经针对文本搜索进行了优化。
  • 嵌入向量的维度是多少?
    • 嵌入向量的维度取决于所使用的文本嵌入模型。
  • 如何对嵌入进行加权或减权?
    • 加权和减权可以通过使用权重矩阵来完成,该矩阵将应用于嵌入向量。
  • 我可以将嵌入用于其他应用程序吗?
    • 是的,嵌入可以用于其他应用程序,例如聚类和异常检测。
  • 如何提高嵌入的质量?
    • 提高嵌入质量的方法包括使用更大的数据集和微调模型。