Gemini API 中的嵌入

Gemini API 中的嵌入服务可以为字词、短语和句子生成先进的嵌入。生成的嵌入随后可用于自然语言处理 (NLP) 任务,例如语义搜索、文本分类和聚类等等。

本页面简要介绍了嵌入,并重点说明了嵌入服务的一些关键用例,以帮助您快速入门。

什么是嵌入?

文本嵌入是一种自然语言处理 (NLP) 技术,可将文本转换为可在 N 维空间中绘制的数值坐标(称为向量)。通过这种方法,您可以将文本片段视为关系型数据,然后我们可以使用这些数据训练模型。

嵌入会捕获语义含义和上下文,从而使含义相似的文本具有更紧密的嵌入。例如,“我把我的狗带到兽医”和“我把我的猫带去了兽医”这句话的嵌入在向量空间中彼此接近,因为它们都描述了类似的上下文。

您可以使用嵌入来比较不同的文本并了解它们之间的关联。例如,如果文本“cat”和“dog”的嵌入位置相近,您可以推断出这些字词在含义和上下文中相似,或两者都相似。此功能支持下一部分中介绍的各种用例。

用例

文本嵌入用于各种 NLP 用例,例如:

  • 信息检索:在给定一段输入文本的情况下,您可以使用嵌入来检索语义相似的文本。信息检索系统可支持各种应用,例如语义搜索、问题解答或摘要。
  • 分类:您可以使用嵌入来训练模型,以将文档进行分类。例如,如果要将用户评论分类为负面或正面,您可以使用嵌入服务获取每条评论的向量表示,以训练分类器。
  • 聚类:比较文本向量可以显示它们的相似或不同程度。此功能可用于训练聚类模型,将相似的文本或文档组合在一起,并检测数据中的异常情况。
  • 矢量数据库:您可以将生成的嵌入存储在矢量数据库中,以提高 NLP 应用的准确性和效率。请参阅以下教程,了解如何使用矢量数据库将文本提示转换为数字矢量。

Gemini 嵌入模型

Gemini API 提供了两个生成文本嵌入的模型:文本嵌入嵌入。文本嵌入是嵌入模型的更新版本,可提供小于 768 个维度的弹性嵌入大小。弹性嵌入可生成较小的输出维度,并且可以节省计算和存储费用,同时对性能略有损失。

将文本嵌入功能用于新项目或应用。仅当您无法将嵌入模型迁移到使用文本嵌入时,应用才应使用嵌入模型。

使用 Gemini API 生成嵌入

使用 embedContent 方法生成文本嵌入:

Python

result = genai.embed_content(
model="models/text-embedding-004",
content="What is the meaning of life?",
task_type="retrieval_document",
title="Embedding of single string")

# 1 input > 1 vector output
print(str(result['embedding'])[:50], '... TRIMMED]')

如需查看完整的可运行示例,请访问我们的入门教程

Go

ctx := context.Background()
// Access your API key as an environment variable (see our Getting Started tutorial)
client, err := genai.NewClient(ctx, option.WithAPIKey(os.Getenv("API_KEY")))
if err != nil {
log.Fatal(err)
}
defer client.Close()
// For embeddings, use the Text Embeddings model
em := client.EmbeddingModel("text-embedding-004")
res, err := em.EmbedContent(ctx, genai.Text("The quick brown fox jumps over the lazy dog."))

if err != nil {
panic(err)
}
fmt.Println(res.Embedding.Values)

如需查看完整的可运行示例,请访问我们的入门教程

Node.js

const { GoogleGenerativeAI } = require("@google/generative-ai");

// Access your API key as an environment variable (see our Getting Started tutorial)
const genAI = new GoogleGenerativeAI(process.env.API_KEY);

async function run() {
// For embeddings, use the Text Embeddings model
const model = genAI.getGenerativeModel({ model: "text-embedding-004"});

const text = "The quick brown fox jumps over the lazy dog."

const result = await model.embedContent(text);
const embedding = result.embedding;
console.log(embedding.values);
}

run();

如需查看完整的可运行示例,请访问我们的入门教程

Dart (Flutter)

final model = GenerativeModel(model: 'text-embedding-004', apiKey: apiKey);
final content = Content.text('The quick brown fox jumps over the lazy dog.');
final result = await model.embedContent(content);
print(result.embedding.values);

如需查看完整的可运行示例,请访问我们的入门教程

curl

curl "https://generativelanguage.googleapis.com/v1beta/models/text-embedding-004:embedContent?key=$GOOGLE_API_KEY" \
-H 'Content-Type: application/json' \
-d '{"model": "models/text-embedding-004",
    "content": {
    "parts":[{
    "text": "Hello world"}]}, }' 2> /dev/null | head

如需查看完整的可运行示例,请参阅我们的 GitHub 上的 REST 嵌入快速入门与 REST 实战宝典

后续步骤