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:
Pengambilan informasi: Anda dapat menggunakan embedding untuk mengambil teks yang mirip secara semantik dengan teks input.
Pengelompokan: Membandingkan grup penyematan dapat membantu mengidentifikasi tren tersembunyi.
Database vektor: Saat Anda menerapkan berbagai kasus penggunaan penyematan ke produksi, menyimpan penyematan dalam database vektor adalah hal yang umum.
Klasifikasi: Anda dapat melatih model menggunakan penyematan untuk mengklasifikasikan dokumen ke dalam kategori.
Menyematkan model
Gemini API menawarkan tiga model yang menghasilkan penyematan teks: