Embeddings

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

เมธอด: model.embedContent

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

ปลายทาง

โพสต์ 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

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

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

Python

import google.generativeai as genai

text = "Hello World!"
result = genai.embed_content(
    model="models/text-embedding-004", content=text, output_dimensionality=10
)
print(result["embedding"])

Node.js

// Make sure to include these imports:
// import { GoogleGenerativeAI } from "@google/generative-ai";
const genAI = new GoogleGenerativeAI(process.env.API_KEY);
const model = genAI.getGenerativeModel({
  model: "text-embedding-004",
});

const result = await model.embedContent("Hello world!");

console.log(result.embedding);

เปลือกหอย

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

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

การตอบกลับ EmbedContentRequest

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

ช่อง
embedding object (ContentEmbedding)

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

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

เมธอด: models.batchEmbedContents

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

ปลายทาง

โพสต์ https://generativelanguage.googleapis.com/v1beta/{model=models/*}:batchEmbedContents

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

model string

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

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

รูปแบบ: models/{model} จะอยู่ในรูปแบบ models/{model}

เนื้อหาของคำขอ

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

ช่อง
requests[] object (EmbedContentRequest)

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

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

Python

import google.generativeai as genai

texts = [
    "What is the meaning of life?",
    "How much wood would a woodchuck chuck?",
    "How does the brain work?",
]
result = genai.embed_content(
    model="models/text-embedding-004", content=texts, output_dimensionality=10
)
print(result)

Node.js

// Make sure to include these imports:
// import { GoogleGenerativeAI } from "@google/generative-ai";
const genAI = new GoogleGenerativeAI(process.env.API_KEY);
const model = genAI.getGenerativeModel({
  model: "text-embedding-004",
});

function textToRequest(text) {
  return { content: { role: "user", parts: [{ text }] } };
}

const result = await model.batchEmbedContents({
  requests: [
    textToRequest("What is the meaning of life?"),
    textToRequest("How much wood would a woodchuck chuck?"),
    textToRequest("How does the brain work?"),
  ],
});

console.log(result.embeddings);

เปลือกหอย

curl "https://generativelanguage.googleapis.com/v1beta/models/text-embedding-004:batchEmbedContents?key=$GOOGLE_API_KEY" \
-H 'Content-Type: application/json' \
-d '{"requests": [{
      "model": "models/text-embedding-004",
      "content": {
      "parts":[{
        "text": "What is the meaning of life?"}]}, },
      {
      "model": "models/text-embedding-004",
      "content": {
      "parts":[{
        "text": "How much wood would a woodchuck chuck?"}]}, },
      {
      "model": "models/text-embedding-004",
      "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

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

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

ContentEmbedding

รายการ Float ที่แสดงการฝัง

ช่อง
values[] number

ค่าที่ฝัง

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

TaskType

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

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