返回
字典嵌入在 Vertex AI Search 中的应用:从字典到文本嵌入的完整指南
python
2024-03-04 22:41:16
如何为 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 提供的预训练模型,因为它们已经针对文本搜索进行了优化。
- 嵌入向量的维度是多少?
- 嵌入向量的维度取决于所使用的文本嵌入模型。
- 如何对嵌入进行加权或减权?
- 加权和减权可以通过使用权重矩阵来完成,该矩阵将应用于嵌入向量。
- 我可以将嵌入用于其他应用程序吗?
- 是的,嵌入可以用于其他应用程序,例如聚类和异常检测。
- 如何提高嵌入的质量?
- 提高嵌入质量的方法包括使用更大的数据集和微调模型。