嵌入 Gemini API

Gemini API 中的嵌入服務可產生最先進的嵌入服務,用於字詞、詞組和語句。產生的嵌入隨後可以用於自然語言處理 (NLP) 工作,例如語意搜尋、文字分類和分群等。

本頁會簡要介紹嵌入,並重點介紹嵌入服務的一些重要用途,協助您快速上手。

什麼是嵌入?

文字嵌入是一種自然語言處理 (NLP) 技術,可將文字轉換為數值座標 (稱為「向量」),並以 ND 空間繪製。這個方法可讓您將一段文字視為關聯資料的位元,以便我們訓練模型。

嵌入會擷取語意含義和背景資訊,產生具有類似意義的文字具有更近的嵌入。舉例來說,「I take mydog to the vet」和「I do my cat to the vet」這兩個句子在向量空間中都描述了類似的情境,因此兩者的嵌入方式非常接近。

您可以使用嵌入來比較不同的文字,並瞭解這些文字之間的關係。舉例來說,如果「cat」和「dog」文字的嵌入相近,您可以推論出這些字詞的含意和情境都很相似,或兩者皆是。此功能允許各式各樣的用途,下一節會說明。

用途

文字嵌入可用於多種自然語言處理用途,例如:

  • 資訊擷取:您可以使用嵌入功能,在輸入文字時擷取語意相似的文字。資訊檢索系統支援各種應用程式,例如語意搜尋、回答問題或摘要等。
  • 分類:您可以使用嵌入來訓練模型,將文件分類。舉例來說,如果您想將使用者留言分類為負面或正面,則可以透過嵌入服務取得每個註解的向量表示法,以便訓練分類器。
  • 分群:比較文字向量可顯示兩者的相似度或不同。您可以使用這項功能訓練分群模型,將類似的文字或文件分組,並偵測資料中的異常狀況。
  • 向量資料庫:您可以將產生的嵌入儲存在向量資料庫,提高自然語言處理應用程式的準確度和效率。請參閱以下教學課程,瞭解如何使用向量資料庫,將文字提示翻譯成數值向量。

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]')

如需完整的可執行範例,請參閱我們的入門教學課程

查看

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();

如需完整的可執行範例,請參閱我們的入門教學課程

飛鏢 (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 教戰手冊

後續步驟