text-embedding-004
模型可为字词、短语和句子生成先进的嵌入。然后,生成的嵌入可用于语义搜索、文本分类、聚类等任务。如需详细了解嵌入,请参阅我们的研究论文。
什么是嵌入?
嵌入会捕获语义含义和上下文,这会导致具有相似含义的文本具有“更接近”的嵌入。例如,“我带狗去看兽医”和“我带猫去看兽医”这两个句子的嵌入在矢量空间中彼此接近,因为它们描述的背景相似。
您可以使用嵌入来比较不同的文本,并了解它们之间的关系。例如,如果文本“cat”和“dog”的嵌入相近,则可以推断这两个词在含义或上下文方面相似。这支持各种常见 AI 应用场景。
生成嵌入
使用 embedContent
方法生成文本嵌入:
Python
import google.generativeai as genai
import os
genai.configure(api_key=os.environ["GEMINI_API_KEY"])
result = genai.embed_content(
model="models/text-embedding-004",
content="What is the meaning of life?")
print(str(result['embedding']))
Node.js
const { GoogleGenerativeAI } = require("@google/generative-ai");
const genAI = new GoogleGenerativeAI(process.env.GEMINI_API_KEY);
const model = genAI.getGenerativeModel({ model: "text-embedding-004"});
async function run() {
const result = await model.embedContent("What is the meaning of life?");
console.log(result.embedding.values);
}
run();
curl
curl "https://generativelanguage.googleapis.com/v1beta/models/text-embedding-004:embedContent?key=$GEMINI_API_KEY" \
-H 'Content-Type: application/json' \
-d '{"model": "models/text-embedding-004",
"content": {
"parts":[{
"text": "What is the meaning of life?"}]}
}'
Go
ctx := context.Background()
client, err := genai.NewClient(ctx, option.WithAPIKey(os.Getenv("GEMINI_API_KEY")))
if err != nil {
log.Fatal(err)
}
defer client.Close()
em := client.EmbeddingModel("text-embedding-004")
res, err := em.EmbedContent(ctx, genai.Text("What is the meaning of life?"))
if err != nil {
panic(err)
}
fmt.Println(res.Embedding.Values)
使用场景
文本嵌入可用于各种常见的 AI 用例,例如:
信息检索:您可以使用嵌入,根据一段输入文本检索语义相似的文本。
聚类:比较一组嵌入有助于发现隐藏的趋势。
向量数据库:在将不同的嵌入用例投入生产环境后,通常会将嵌入存储在向量数据库中。
分类:您可以使用嵌入训练模型,将文档分类到不同的类别。
Gemini 嵌入模型
Gemini API 提供了两个用于生成文本嵌入的模型:
文本嵌入是嵌入模型的更新版本,可提供小于 768 维的弹性嵌入大小。弹性嵌入会生成较小的输出维度,并且可能会在性能略有下降的情况下节省计算和存储费用。
将文本嵌入用于新项目或应用。