การฝังใน Gemini API

บริการฝังใน Gemini API จะสร้างการฝังคำ วลี และประโยคที่ล้ำสมัย จากนั้น การฝังที่ได้จะใช้สำหรับงานการประมวลผลภาษาธรรมชาติ (NLP) เช่น การค้นหาความหมาย การแยกประเภทข้อความ และการจับกลุ่ม และอื่นๆ อีกมากมาย

หน้านี้อธิบายเกี่ยวกับการฝังไว้คร่าวๆ และไฮไลต์กรณีการใช้งานที่สำคัญบางประการสำหรับบริการการฝังเพื่อช่วยให้คุณเริ่มต้นใช้งานได้

การฝังคืออะไร

การฝังข้อความเป็นเทคนิคการประมวลผลภาษาธรรมชาติ (NLP) ที่จะแปลงข้อความเป็นพิกัดตัวเลข (เรียกว่าเวกเตอร์) ซึ่งสามารถพล็อตในพื้นที่ n มิติได้ วิธีนี้ช่วยให้คุณถือว่าข้อความต่างๆ เป็นข้อมูลเชิงสัมพันธ์สั้นๆ ที่เราจะนำไปฝึกโมเดลได้

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

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

กรณีการใช้งาน

การฝังข้อความมีการใช้ในกรณีการใช้งาน NLP ที่หลากหลาย เช่น

  • การดึงข้อมูล: คุณสามารถใช้การฝังเพื่อเรียกข้อความเชิงความหมายที่คล้ายกันจากข้อความอินพุตหนึ่งๆ ระบบเรียกข้อมูล เช่น การค้นหาความหมาย การตอบคำถาม หรือการสรุปรองรับแอปพลิเคชันต่างๆ ได้มากมาย
  • การแยกประเภท: คุณฝึกโมเดลโดยใช้การฝังเพื่อจำแนกเอกสารให้เป็นหมวดหมู่ได้ ตัวอย่างเช่น หากต้องการจัดประเภทความคิดเห็นของผู้ใช้เป็นความคิดเห็นเชิงลบหรือบวก คุณสามารถใช้บริการการฝังเพื่อดูการแสดงเวกเตอร์ของความคิดเห็นแต่ละรายการเพื่อฝึกตัวแยกประเภท
  • การจัดกลุ่ม: การเปรียบเทียบเวกเตอร์ของข้อความจะแสดงให้เห็นว่าเวกเตอร์เหล่านั้นมีความคล้ายคลึงหรือแตกต่างกันอย่างไร ฟีเจอร์นี้สามารถใช้เพื่อฝึกโมเดลคลัสเตอร์ที่จัดกลุ่มข้อความหรือเอกสารที่คล้ายกันไว้ด้วยกัน และเพื่อตรวจจับความผิดปกติในข้อมูล
  • ฐานข้อมูลเวกเตอร์: คุณจัดเก็บการฝังที่สร้างขึ้นในฐานข้อมูลเวกเตอร์เพื่อปรับปรุงความแม่นยำและประสิทธิภาพของแอปพลิเคชัน NLP ได้ ดูบทแนะนำต่อไปนี้เพื่อเรียนรู้วิธีใช้ฐานข้อมูลเวกเตอร์เพื่อแปลพรอมต์ข้อความเป็นเวกเตอร์ตัวเลข

Gemini ฝังโมเดล

Gemini API มี 2 โมเดลที่สร้างการฝังข้อความ ได้แก่ การฝังข้อความ และการฝัง การฝังข้อความเป็นเวอร์ชันอัปเดตของโมเดลการฝังที่มีการฝังแบบยืดหยุ่นในขนาดไม่เกิน 768 มิติ การฝังที่ยืดหยุ่นจะสร้างขนาดเอาต์พุตที่เล็กลงและอาจประหยัดค่าใช้จ่ายด้านการประมวลผลและการจัดเก็บโดยสูญเสียประสิทธิภาพเพียงเล็กน้อย

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

สร้างการฝังด้วย Gemini API

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

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

ไปที่บทแนะนำการเริ่มต้นใช้งาน เพื่อดูตัวอย่างทั้งหมดที่เรียกใช้ได้

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)

ไปที่บทแนะนำการเริ่มต้นใช้งานเพื่อดูตัวอย่างทั้งหมดที่เรียกใช้ได้

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

ไปที่บทแนะนำการเริ่มต้นใช้งาน เพื่อดูตัวอย่างทั้งหมดที่เรียกใช้ได้

ลูกดอก (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);

ไปที่บทแนะนำการเริ่มต้นใช้งาน เพื่อดูตัวอย่างทั้งหมดที่เรียกใช้ได้

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

ไปที่การฝังการเริ่มต้นอย่างรวดเร็วกับตำราอาหาร REST บน GitHub เพื่อดูตัวอย่างทั้งหมดที่เรียกใช้ได้

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

  • หากต้องการดูข้อมูลเพิ่มเติมเกี่ยวกับการฝัง โปรดไปที่โพสต์ของ Dale Markowitz ในบล็อก Google Cloud เพื่อดูข้อมูลเพิ่มเติม
  • หากพร้อมที่จะเริ่มพัฒนา คุณสามารถหาโค้ดที่เรียกใช้ได้ทั้งหมดใน การเริ่มต้นใช้งานอย่างรวดเร็วสำหรับ Python, Go, Node.js และ Dart (Flutter)