Embedding di Gemini API

Layanan penyematan di Gemini API menghasilkan embedding yang canggih untuk kata, frasa, dan kalimat. Embeddings yang dihasilkan kemudian dapat digunakan untuk tugas-tugas natural language processing (NLP), seperti penelusuran semantik, klasifikasi teks, dan pengelompokan.

Halaman ini menjelaskan secara singkat penyematan dan menyoroti beberapa kasus penggunaan utama untuk layanan penyematan guna membantu Anda memulai.

Apa yang dimaksud dengan embedding?

Embedding teks adalah teknik natural language processing (NLP) yang mengonversi teks menjadi koordinat numerik (disebut vektor) yang dapat dipetakan dalam ruang n dimensi. Pendekatan ini memungkinkan Anda memperlakukan potongan teks sebagai bit data relasional, yang kemudian dapat kita latih modelnya.

Embedding menangkap makna dan konteks semantik yang menghasilkan embeddings yang lebih dekat dalam teks dengan makna serupa. Misalnya, kalimat "Saya membawa saya ke dokter hewan" dan "Saya membawa kucing saya ke dokter hewan" akan memiliki embedding yang berdekatan satu sama lain di ruang vektor karena keduanya menggambarkan konteks yang serupa.

Anda dapat menggunakan embeddings untuk membandingkan berbagai teks dan memahami keterkaitannya. Misalnya, jika embedding teks "cat" dan "dog" berdekatan, Anda dapat menyimpulkan bahwa kata-kata ini memiliki arti atau konteks yang serupa, atau keduanya. Kemampuan ini memungkinkan berbagai kasus penggunaan yang dijelaskan di bagian berikutnya.

Kasus penggunaan

Embedding teks digunakan dalam berbagai kasus penggunaan NLP, seperti:

  • Pengambilan informasi: Anda dapat menggunakan penyematan untuk mengambil teks yang mirip secara semantik berdasarkan bagian teks input. Berbagai aplikasi dapat didukung oleh sistem pengambilan informasi seperti penelusuran semantik, menjawab pertanyaan, atau perangkuman.
  • Klasifikasi: Anda dapat melatih model menggunakan embeddings untuk mengklasifikasikan dokumen ke dalam kategori. Misalnya, jika ingin mengklasifikasikan komentar pengguna sebagai negatif atau positif, Anda dapat menggunakan layanan embedding untuk mendapatkan representasi vektor setiap komentar guna melatih pengklasifikasi.
  • Pengelompokan: Membandingkan vektor teks dapat menunjukkan seberapa mirip atau berbedanya teks tersebut. Fitur ini dapat digunakan untuk melatih model pengelompokan yang mengelompokkan teks atau dokumen yang mirip dan untuk mendeteksi anomali dalam data Anda.
  • Database vektor: Anda dapat menyimpan embeddings yang dihasilkan dalam database vektor untuk meningkatkan akurasi dan efisiensi aplikasi NLP Anda. Lihat tutorial berikut untuk mempelajari cara menggunakan database vektor untuk menerjemahkan perintah teks menjadi vektor numerik.

Model embedding Gemini

Gemini API menawarkan dua model yang menghasilkan embedding teks: Teks Embedding dan Embeddings. Embedding Teks adalah versi terbaru dari model Embedding yang menawarkan ukuran penyematan elastis di bawah 768 dimensi. Embedding elastis menghasilkan dimensi output yang lebih kecil serta berpotensi menghemat biaya komputasi dan penyimpanan dengan sedikit penurunan performa.

Gunakan Embedding Teks untuk proyek atau aplikasi baru. Aplikasi Anda sebaiknya hanya menggunakan model Penyematan jika Anda tidak dapat memigrasikannya untuk menggunakan Embedding Teks.

Membuat penyematan dengan Gemini API

Gunakan metode embedContent untuk menghasilkan embedding teks:

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

Buka tutorial memulai kami untuk melihat contoh lengkap yang dapat dijalankan.

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)

Buka tutorial memulai kami untuk melihat contoh lengkap yang dapat dijalankan.

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

Buka tutorial memulai kami untuk melihat contoh lengkap yang dapat dijalankan.

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

Buka tutorial memulai kami untuk melihat contoh lengkap yang dapat dijalankan.

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

Buka Panduan Memulai Penyematan dengan REST di GitHub untuk mengetahui contoh lengkap yang dapat dijalankan.

Langkah selanjutnya