Gemini API รองรับโมเดลการฝังหลายรูปแบบที่สร้างการฝังสําหรับคํา วลี โค้ด และประโยค จากนั้นจึงนําการฝังที่ได้ไปใช้ในงานต่างๆ เช่น การค้นหาเชิงความหมาย การแยกประเภทข้อความ และการจัดกลุ่ม เป็นต้น
องค์ประกอบคืออะไร
การฝังคือการแสดงข้อความ (หรือสื่อรูปแบบอื่นๆ) เป็นตัวเลขซึ่งบันทึกความสัมพันธ์ระหว่างอินพุต การฝังข้อความทํางานโดยการแปลงข้อความเป็นอาร์เรย์ของตัวเลขทศนิยมที่เรียกว่าเวกเตอร์ เวกเตอร์เหล่านี้ออกแบบมาเพื่อจับความหมายของข้อความ ความยาวของอาร์เรย์การฝังเรียกว่ามิติข้อมูลของเวกเตอร์ ข้อความหนึ่งๆ อาจแสดงด้วยเวกเตอร์ที่มีมิติข้อมูลหลายร้อยรายการ
ข้อมูลดังกล่าวจะบันทึกความหมายเชิงอรรถศาสตร์และบริบท ซึ่งส่งผลให้ข้อความที่มีความหมายคล้ายกันมีข้อมูล "ใกล้เคียงกัน" มากขึ้น เช่น ประโยค "ฉันพาหมาไปหาหมอ" และ "ฉันพาแมวไปหาหมอ" จะมีการฝังที่ใกล้เคียงกันในพื้นที่เวกเตอร์
คุณสามารถใช้การฝังเพื่อเปรียบเทียบข้อความต่างๆ และทําความเข้าใจความเชื่อมโยงของข้อความเหล่านั้น เช่น หากการฝังของข้อความ "แมว" และ "สุนัข" อยู่ใกล้กัน คุณจะอนุมานได้ว่าคําเหล่านี้มีความหมาย บริบท หรือทั้ง 2 อย่างคล้ายกัน ซึ่งช่วยให้มีUse Case ทั่วไปของ AI ที่หลากหลาย
สร้างการฝัง
ใช้เมธอด embedContent
เพื่อสร้างการฝังข้อความ
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?"}]}
}'
นอกจากนี้ คุณยังสร้างการฝังสำหรับหลายกลุ่มพร้อมกันได้โดยส่งเป็นรายการสตริง
ประเภทงาน
เมื่อสร้างระบบการสร้างที่เพิ่มการดึงข้อมูล (RAG) การออกแบบที่พบบ่อยคือการใช้การฝังข้อความเพื่อทำการค้นหาแบบคล้ายกัน ในบางกรณี การดำเนินการนี้อาจทำให้คุณภาพลดลงเนื่องจากคำถามและคำตอบไม่คล้ายกันทางความหมาย ตัวอย่างเช่น คำถามอย่าง "ทําไมท้องฟ้าถึงเป็นสีฟ้า" และคําตอบว่า "การกระจัดกระจายของแสงแดดทําให้ท้องฟ้าเป็นสีฟ้า" มีความหมายที่แตกต่างกันอย่างชัดเจนเมื่อใช้เป็นข้อความ ซึ่งหมายความว่าระบบ RAG จะไม่จดจําความสัมพันธ์ของคําถามและคําตอบดังกล่าวโดยอัตโนมัติ
ประเภทงานช่วยให้คุณสร้างการฝังที่เพิ่มประสิทธิภาพแล้วสำหรับงานเฉพาะ ซึ่งจะช่วยประหยัดเวลาและค่าใช้จ่าย รวมถึงปรับปรุงประสิทธิภาพ
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"
}'
ประเภทงานที่รองรับ
ประเภทงาน | คำอธิบาย |
---|---|
SEMANTIC_SIMILARITY |
ใช้ในการสร้างการฝังที่เพิ่มประสิทธิภาพเพื่อประเมินความคล้ายคลึงของข้อความ |
CLASSIFICATION |
ใช้ในการสร้างการฝังที่เพิ่มประสิทธิภาพเพื่อจัดประเภทข้อความตามป้ายกำกับที่กำหนดไว้ล่วงหน้า |
CLUSTERING |
ใช้ในการสร้างการฝังที่ได้รับการเพิ่มประสิทธิภาพเพื่อจัดกลุ่มข้อความตามลักษณะที่คล้ายกัน |
RETRIEVAL_DOCUMENT , RETRIEVAL_QUERY , QUESTION_ANSWERING และ FACT_VERIFICATION |
ใช้ในการสร้างการฝังที่เพิ่มประสิทธิภาพสำหรับการค้นหาเอกสารหรือการดึงข้อมูล |
CODE_RETRIEVAL_QUERY |
ใช้เพื่อดึงข้อมูลโค้ดบล็อกตามการค้นหาด้วยภาษาธรรมชาติ เช่น จัดเรียงอาร์เรย์หรือลิงก์ลิสต์ย้อนกลับ ระบบจะคํานวณการฝังบล็อกโค้ดโดยใช้ RETRIEVAL_DOCUMENT |
กรณีการใช้งาน
การใช้การฝังข้อความมีอยู่ใน Use Case ทั่วไปของ AI หลายรายการ เช่น
การดึงข้อมูล: คุณสามารถใช้การฝังเพื่อดึงข้อความที่คล้ายกันตามความหมายจากข้อความอินพุตได้
การจัดกลุ่ม: การเปรียบเทียบกลุ่มของข้อมูลเชิงลึกที่ฝังจะช่วยระบุแนวโน้มที่ซ่อนอยู่
ฐานข้อมูลเวกเตอร์: เมื่อนํากรณีการใช้งานการฝังที่แตกต่างกันไปใช้กับเวอร์ชันที่ใช้งานจริง การเก็บการฝังไว้ในฐานข้อมูลเวกเตอร์เป็นแนวทางปฏิบัติทั่วไป
การจัดประเภท: คุณสามารถฝึกโมเดลโดยใช้การฝังเพื่อจัดประเภทเอกสารเป็นหมวดหมู่ได้
การฝังโมเดล
Gemini API มีโมเดล 3 รูปแบบที่สร้างการฝังข้อความ ดังนี้