Embeddings

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

เมธอด: models.embedContent

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

ปลายทาง

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

URL ใช้ไวยากรณ์การแปลง gRPC

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

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

URL ใช้ไวยากรณ์การแปลง gRPC

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

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

รายการตัวเลขทศนิยมที่แสดงการฝัง

ฟิลด์
values[] number

ค่าการฝัง

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

TaskType

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

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