Embeddings

Embedding คือการแสดงข้อความที่ป้อนในรูปแบบตัวเลข ซึ่งเปิดโอกาสให้มี Use Case ที่ไม่ซ้ำกันหลายอย่าง เช่น การจัดกลุ่ม การวัดความคล้ายคลึง และการดึงข้อมูล หากต้องการดูข้อมูลเบื้องต้น โปรดดูคำแนะนำเกี่ยวกับ Embedding

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

เมธอด: models.embedContent

สร้างเวกเตอร์การฝังข้อความจากอินพุต Content โดยใช้โมเดลการฝังของ Gemini ที่ระบุ

ปลายทาง

post https://generativelanguage.googleapis.com/v1beta/{model=models/*}:embedContent

พารามิเตอร์เส้นทาง

model string

ต้องระบุ ชื่อทรัพยากรของโมเดล ซึ่งจะใช้เป็นรหัสเพื่อให้โมเดลใช้

ชื่อนี้ควรตรงกับชื่อโมเดลที่เมธอด models.list แสดงผล

รูปแบบ: models/{model} มีรูปแบบเป็น models/{model}

เนื้อความของคำขอ

เนื้อหาของคำขอมีข้อมูลซึ่งมีโครงสร้างดังต่อไปนี้

ฟิลด์
content object (Content)

ต้องระบุ เนื้อหาที่จะฝัง ระบบจะนับเฉพาะฟิลด์ parts.text

taskType enum (TaskType)

ไม่บังคับ ประเภทงานที่ไม่บังคับที่จะใช้การฝัง ไม่รองรับในรุ่นก่อนหน้า (models/embedding-001)

title string

ไม่บังคับ ชื่อที่ไม่บังคับสำหรับข้อความ ใช้ได้เมื่อ TaskType เป็น RETRIEVAL_DOCUMENT เท่านั้น

หมายเหตุ: การระบุ title สำหรับ RETRIEVAL_DOCUMENT จะช่วยให้ได้การฝังที่มีคุณภาพดีขึ้นสำหรับการดึงข้อมูล

outputDimensionality integer

ไม่บังคับ มิติข้อมูลที่ลดลงสำหรับเอาต์พุตการฝัง (ไม่บังคับ) หากตั้งค่าไว้ ระบบจะตัดค่าที่มากเกินไปใน Embedding เอาต์พุตจากท้าย รองรับเฉพาะรุ่นใหม่กว่าตั้งแต่ปี 2024 เป็นต้นไป คุณตั้งค่านี้ไม่ได้หากใช้โมเดลก่อนหน้า (models/embedding-001)

ตัวอย่างคำขอ

Python

from google import genai
from google.genai import types

client = genai.Client()
text = "Hello World!"
result = client.models.embed_content(
    model="gemini-embedding-001",
    contents=text,
    config=types.EmbedContentConfig(output_dimensionality=10),
)
print(result.embeddings)

Node.js

// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });
const text = "Hello World!";
const result = await ai.models.embedContent({
  model: "gemini-embedding-001",
  contents: text,
  config: { outputDimensionality: 10 },
});
console.log(result.embeddings);

Go

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}

text := "Hello World!"
outputDim := int32(10)
contents := []*genai.Content{
	genai.NewContentFromText(text, genai.RoleUser),
}
result, err := client.Models.EmbedContent(ctx, "gemini-embedding-001", 
	contents, &genai.EmbedContentConfig{
		OutputDimensionality: &outputDim,
})
if err != nil {
	log.Fatal(err)
}

embeddings, err := json.MarshalIndent(result.Embeddings, "", "  ")
if err != nil {
	log.Fatal(err)
}
fmt.Println(string(embeddings))

เปลือกหอย

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-embedding-001:embedContent" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H 'Content-Type: application/json' \
-d '{"model": "models/gemini-embedding-001",
     "content": {
     "parts":[{
     "text": "What is the meaning of life?"}]}
    }'

เนื้อหาการตอบกลับ

การตอบกลับ EmbedContentRequest

หากทำสำเร็จ เนื้อหาการตอบกลับจะมีข้อมูลซึ่งมีโครงสร้างดังต่อไปนี้

ฟิลด์
embedding object (ContentEmbedding)

เอาต์พุตเท่านั้น การฝังที่สร้างขึ้นจากเนื้อหาอินพุต

การแสดง JSON
{
  "embedding": {
    object (ContentEmbedding)
  }
}

เมธอด: models.batchEmbedContents

สร้างเวกเตอร์การฝังหลายรายการจากอินพุต Content ซึ่งประกอบด้วยสตริงกลุ่มหนึ่งที่แสดงเป็นออบเจ็กต์ EmbedContentRequest

ปลายทาง

post https://generativelanguage.googleapis.com/v1beta/{model=models/*}:batchEmbedContents

พารามิเตอร์เส้นทาง

model string

ต้องระบุ ชื่อทรัพยากรของโมเดล ซึ่งจะใช้เป็นรหัสเพื่อให้โมเดลใช้

ชื่อนี้ควรตรงกับชื่อโมเดลที่เมธอด models.list แสดงผล

รูปแบบ: models/{model} มีรูปแบบเป็น models/{model}

เนื้อความของคำขอ

เนื้อหาของคำขอมีข้อมูลซึ่งมีโครงสร้างดังต่อไปนี้

ฟิลด์
requests[] object (EmbedContentRequest)

ต้องระบุ ฝังคำขอสำหรับกลุ่ม โมเดลในคำขอแต่ละรายการต้องตรงกับโมเดลที่ระบุ BatchEmbedContentsRequest.model

ตัวอย่างคำขอ

Python

from google import genai
from google.genai import types

client = genai.Client()
texts = [
    "What is the meaning of life?",
    "How much wood would a woodchuck chuck?",
    "How does the brain work?",
]
result = client.models.embed_content(
    model="gemini-embedding-001",
    contents=texts,
    config=types.EmbedContentConfig(output_dimensionality=10),
)
print(result.embeddings)

Node.js

// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });
const texts = [
  "What is the meaning of life?",
  "How much wood would a woodchuck chuck?",
  "How does the brain work?",
];
const result = await ai.models.embedContent({
  model: "gemini-embedding-001",
  contents: texts,
  config: { outputDimensionality: 10 },
});
console.log(result.embeddings);

Go

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}

contents := []*genai.Content{
	genai.NewContentFromText("What is the meaning of life?", genai.RoleUser),
	genai.NewContentFromText("How much wood would a woodchuck chuck?", genai.RoleUser),
	genai.NewContentFromText("How does the brain work?", genai.RoleUser),
}

outputDim := int32(10)
result, err := client.Models.EmbedContent(ctx, "gemini-embedding-001", contents, &genai.EmbedContentConfig{
	OutputDimensionality: &outputDim,
})
if err != nil {
	log.Fatal(err)
}

embeddings, err := json.MarshalIndent(result.Embeddings, "", "  ")
if err != nil {
	log.Fatal(err)
}
fmt.Println(string(embeddings))

เปลือกหอย

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-embedding-001:batchEmbedContents" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H 'Content-Type: application/json' \
-d '{"requests": [{
      "model": "models/gemini-embedding-001",
      "content": {
      "parts":[{
        "text": "What is the meaning of life?"}]}, },
      {
      "model": "models/gemini-embedding-001",
      "content": {
      "parts":[{
        "text": "How much wood would a woodchuck chuck?"}]}, },
      {
      "model": "models/gemini-embedding-001",
      "content": {
      "parts":[{
        "text": "How does the brain work?"}]}, }, ]}' 2> /dev/null | grep -C 5 values

เนื้อหาการตอบกลับ

คำตอบสำหรับ BatchEmbedContentsRequest

หากทำสำเร็จ เนื้อหาการตอบกลับจะมีข้อมูลซึ่งมีโครงสร้างดังต่อไปนี้

ฟิลด์
embeddings[] object (ContentEmbedding)

เอาต์พุตเท่านั้น การฝังสำหรับคำขอแต่ละรายการตามลำดับเดียวกับที่ระบุในคำขอแบบกลุ่ม

การแสดง JSON
{
  "embeddings": [
    {
      object (ContentEmbedding)
    }
  ]
}

EmbedContentRequest

คำขอที่มี Content สำหรับโมเดลที่จะฝัง

ฟิลด์
model string

ต้องระบุ ชื่อทรัพยากรของโมเดล ซึ่งจะใช้เป็นรหัสเพื่อให้โมเดลใช้

ชื่อนี้ควรตรงกับชื่อโมเดลที่เมธอด models.list แสดงผล

รูปแบบ: models/{model}

content object (Content)

ต้องระบุ เนื้อหาที่จะฝัง ระบบจะนับเฉพาะฟิลด์ parts.text

taskType enum (TaskType)

ไม่บังคับ ประเภทงานที่ไม่บังคับที่จะใช้การฝัง ไม่รองรับในรุ่นก่อนหน้า (models/embedding-001)

title string

ไม่บังคับ ชื่อที่ไม่บังคับสำหรับข้อความ ใช้ได้เมื่อ TaskType เป็น RETRIEVAL_DOCUMENT เท่านั้น

หมายเหตุ: การระบุ title สำหรับ RETRIEVAL_DOCUMENT จะช่วยให้ได้การฝังที่มีคุณภาพดีขึ้นสำหรับการดึงข้อมูล

outputDimensionality integer

ไม่บังคับ มิติข้อมูลที่ลดลงสำหรับเอาต์พุตการฝัง (ไม่บังคับ) หากตั้งค่าไว้ ระบบจะตัดค่าที่มากเกินไปใน Embedding เอาต์พุตจากท้าย รองรับเฉพาะรุ่นใหม่กว่าตั้งแต่ปี 2024 เป็นต้นไป คุณตั้งค่านี้ไม่ได้หากใช้โมเดลก่อนหน้า (models/embedding-001)

การแสดง JSON
{
  "model": string,
  "content": {
    object (Content)
  },
  "taskType": enum (TaskType),
  "title": string,
  "outputDimensionality": integer
}

ContentEmbedding

รายการของจำนวนทศนิยมที่แสดงถึงการฝัง

ฟิลด์
values[] number

ค่าการฝัง

การแสดง JSON
{
  "values": [
    number
  ]
}

TaskType

ประเภทงานที่จะใช้การฝัง

Enum
TASK_TYPE_UNSPECIFIED ค่าที่ไม่ได้ตั้งค่า ซึ่งจะใช้ค่าเริ่มต้นเป็นค่า enum อื่นๆ
RETRIEVAL_QUERY ระบุว่าข้อความที่ระบุคือการค้นหาในการตั้งค่าการค้นหา/การดึงข้อมูล
RETRIEVAL_DOCUMENT ระบุว่าข้อความที่ระบุคือเอกสารจากคลังข้อความที่กำลังค้นหา
SEMANTIC_SIMILARITY ระบุว่าจะใช้ข้อความที่ระบุสำหรับ STS
CLASSIFICATION ระบุว่าระบบจะจัดประเภทข้อความที่ระบุ
CLUSTERING ระบุว่าจะใช้การฝังสำหรับการจัดกลุ่ม
QUESTION_ANSWERING ระบุว่าจะใช้ข้อความที่ระบุสำหรับการตอบคำถาม
FACT_VERIFICATION ระบุว่าจะใช้ข้อความที่ระบุเพื่อยืนยันข้อเท็จจริง
CODE_RETRIEVAL_QUERY ระบุว่าจะใช้ข้อความที่ระบุสำหรับการดึงข้อมูลโค้ด