การฝัง

Gemini API รองรับโมเดลการฝังหลายรูปแบบที่สร้างการฝังสําหรับคํา วลี โค้ด และประโยค จากนั้นจึงนําการฝังที่ได้ไปใช้ในงานต่างๆ เช่น การค้นหาเชิงความหมาย การแยกประเภทข้อความ และการจัดกลุ่ม เป็นต้น

องค์ประกอบคืออะไร

การฝังคือการแสดงข้อความ (หรือสื่อรูปแบบอื่นๆ) เป็นตัวเลขซึ่งบันทึกความสัมพันธ์ระหว่างอินพุต การฝังข้อความทํางานโดยการแปลงข้อความเป็นอาร์เรย์ของตัวเลขทศนิยมที่เรียกว่าเวกเตอร์ เวกเตอร์เหล่านี้ออกแบบมาเพื่อจับความหมายของข้อความ ความยาวของอาร์เรย์การฝังเรียกว่ามิติข้อมูลของเวกเตอร์ ข้อความหนึ่งๆ อาจแสดงด้วยเวกเตอร์ที่มีมิติข้อมูลหลายร้อยรายการ

ข้อมูลดังกล่าวจะบันทึกความหมายเชิงอรรถศาสตร์และบริบท ซึ่งส่งผลให้ข้อความที่มีความหมายคล้ายกันมีข้อมูล "ใกล้เคียงกัน" มากขึ้น เช่น ประโยค "ฉันพาหมาไปหาหมอ" และ "ฉันพาแมวไปหาหมอ" จะมีการฝังที่ใกล้เคียงกันในพื้นที่เวกเตอร์

คุณสามารถใช้การฝังเพื่อเปรียบเทียบข้อความต่างๆ และทําความเข้าใจความเชื่อมโยงของข้อความเหล่านั้น เช่น หากการฝังของข้อความ "แมว" และ "สุนัข" อยู่ใกล้กัน คุณจะอนุมานได้ว่าคําเหล่านี้มีความหมาย บริบท หรือทั้ง 2 อย่างคล้ายกัน ซึ่งช่วยให้มีUse Case ทั่วไปของ AI ที่หลากหลาย

สร้างการฝัง

ใช้เมธอด embedContent เพื่อสร้างการฝังข้อความ

PythonJavaScriptGoREST
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 จะไม่จดจําความสัมพันธ์ของคําถามและคําตอบดังกล่าวโดยอัตโนมัติ

ประเภทงานช่วยให้คุณสร้างการฝังที่เพิ่มประสิทธิภาพแล้วสำหรับงานเฉพาะ ซึ่งจะช่วยประหยัดเวลาและค่าใช้จ่าย รวมถึงปรับปรุงประสิทธิภาพ

PythonJavaScriptREST
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 รูปแบบที่สร้างการฝังข้อความ ดังนี้

ขั้นตอนถัดไป

ดูโน้ตบุ๊กเริ่มต้นใช้งานการฝัง