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

请参阅我们的“嵌入快速入门:REST 实战宝典” GitHub 获取完整的可运行示例。

后续步骤