Embeddings

Gemini API mendukung beberapa model penyematan yang menghasilkan penyematan untuk kata, frasa, kode, dan kalimat. Embedding yang dihasilkan kemudian dapat digunakan untuk tugas seperti penelusuran semantik, klasifikasi teks, dan pengelompokan, di antara banyak lainnya.

Apa itu embedding?

Embedding adalah representasi numerik teks (atau format media lainnya) yang menangkap hubungan antar-input. Embedding teks berfungsi dengan mengonversi teks menjadi array bilangan floating point, yang disebut vektor. Vektor ini dirancang untuk menangkap makna teks. Panjang array penyematan disebut dimensi vektor. Bagian teks dapat direpresentasikan oleh vektor yang berisi ratusan dimensi.

Embedding menangkap makna dan konteks semantik, yang menghasilkan teks dengan makna serupa yang memiliki penyematan "lebih dekat". Misalnya kalimat "Saya ambil anjingku ke dokter hewan" dan "Aku membawa kucingku ke dokter hewan" akan memiliki embeddings itu saling berdekatan dalam ruang vektor.

Anda dapat menggunakan penyematan untuk membandingkan berbagai teks dan memahami hubungannya. Misalnya, jika penyematan teks "kucing" dan "" berdekatan, Anda dapat menyimpulkan bahwa kata-kata ini memiliki arti, konteks, atau keduanya yang mirip. Hal ini memungkinkan berbagai kasus penggunaan AI umum.

Membuat embedding

Gunakan metode embedContent untuk membuat embedding teks:

from google import genai

client = genai.Client(api_key="GEMINI_API_KEY")

result = client.models.embed_content(
        model="gemini-embedding-exp-03-07",
        contents="What is the meaning of life?")

print(result.embeddings)
import { GoogleGenAI } from "@google/genai";

async function main() {

    const ai = new GoogleGenAI({ apiKey: "GEMINI_API_KEY" });

    const response = await ai.models.embedContent({
        model: 'gemini-embedding-exp-03-07',
        contents: 'What is the meaning of life?',
    });

    console.log(response.embeddings);
}

main();
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("gemini-embedding-exp-03-07")
res, err := em.EmbedContent(ctx, genai.Text("What is the meaning of life?"))

if err != nil {
    panic(err)
}
fmt.Println(res.Embedding.Values)
curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-embedding-exp-03-07:embedContent?key=$GEMINI_API_KEY" \
-H 'Content-Type: application/json' \
-d '{"model": "models/gemini-embedding-exp-03-07",
     "content": {
     "parts":[{
     "text": "What is the meaning of life?"}]}
    }'

Anda juga dapat membuat penyematan untuk beberapa bagian sekaligus dengan meneruskannya sebagai daftar string.

Jenis tugas

Saat membuat sistem Retrieval Augmented Generation (RAG), desain umum adalah menggunakan penyematan teks untuk melakukan penelusuran kemiripan. Dalam beberapa kasus, hal ini dapat menyebabkan penurunan kualitas, karena pertanyaan dan jawabannya tidak mirip secara semantik. Misalnya, pertanyaan seperti "Kenapa langit berwarna biru?" dan jawabannya "Penyebaran sinar matahari menyebabkan warna biru", memiliki makna yang sangat berbeda sebagai pernyataan, yang berarti bahwa sistem RAG tidak akan otomatis mengenali hubungannya.

Jenis tugas memungkinkan Anda membuat penyematan yang dioptimalkan untuk tugas tertentu, sehingga menghemat waktu dan biaya serta meningkatkan performa.

from google import genai
from google.genai import types

client = genai.Client(api_key="GEMINI_API_KEY")

result = client.models.embed_content(
        model="gemini-embedding-exp-03-07",
        contents="What is the meaning of life?",
        config=types.EmbedContentConfig(task_type="SEMANTIC_SIMILARITY")
)
print(result.embeddings)
import { GoogleGenAI } from "@google/genai";

async function main() {

    const ai = new GoogleGenAI({ apiKey: "GEMINI_API_KEY" });

    const response = await ai.models.embedContent({
        model: 'gemini-embedding-exp-03-07',
        contents: 'What is the meaning of life?',
        config: {
            taskType: "SEMANTIC_SIMILARITY",
        }
    });

    console.log(response.embeddings);
}

main();
curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-embedding-exp-03-07:embedContent?key=$GEMINI_API_KEY" \
-H 'Content-Type: application/json' \
-d '{"model": "models/gemini-embedding-exp-03-07",
     "content": {
     "parts":[{
     "text": "What is the meaning of life?"}]},
     "taskType": "SEMANTIC_SIMILARITY"
    }'

Jenis tugas yang didukung

Jenis tugas Deskripsi
SEMANTIC_SIMILARITY Digunakan untuk membuat embedding yang dioptimalkan untuk menilai kesamaan teks.
CLASSIFICATION Digunakan untuk membuat penyematan yang dioptimalkan untuk mengklasifikasikan teks sesuai dengan label preset.
CLUSTERING Digunakan untuk membuat embedding yang dioptimalkan untuk mengelompokkan teks berdasarkan kemiripan.
RETRIEVAL_DOCUMENT, RETRIEVAL_QUERY, QUESTION_ANSWERING, dan FACT_VERIFICATION Digunakan untuk membuat penyematan yang dioptimalkan untuk penelusuran dokumen atau pengambilan informasi.
CODE_RETRIEVAL_QUERY Digunakan untuk mengambil blok kode berdasarkan kueri bahasa alami, seperti mengurutkan array atau membalik linked list. Penyematan blok kode dihitung menggunakan RETRIEVAL_DOCUMENT.

Kasus penggunaan

Embedding teks digunakan dalam berbagai kasus penggunaan AI umum, seperti:

Menyematkan model

Gemini API menawarkan tiga model yang menghasilkan penyematan teks:

Langkah berikutnya

Lihat notebook panduan memulai penyematan.