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 获取完整的可运行示例。
后续步骤
- 如果您想了解关于嵌入的更多信息,请访问 Dale Markowitz 在 Google Cloud 博客 。
- 如果您已准备好开始开发,可以在 Google Cloud 帮助中心 Python 快速入门, Go, Node.js 和 Dart (Flutter)。