{
  "aboutHtml": "<p>Gemini Embedding 2 เป็นโมเดลเอ็มเบดดิงมัลติโมดัลของ Google สำหรับแทนข้อความ ภาพ วิดีโอ เสียง และ PDF เป็นตัวเลข แปลงชนิดสื่อต่างกันเข้าพื้นที่ร่วม เพื่อให้แอปพลิเคชันเปรียบเทียบความหมายข้ามสื่อได้ ผลคือเวกเตอร์ตัวเลขที่มีประโยชน์ต่อการค้นหาเชิงความหมาย ค้นคืนเอกสาร แนะนำ จำแนก หรือจัดกลุ่ม ไม่ใช่คำตอบเป็นข้อความหรือไฟล์สื่อที่สร้างขึ้น Google ระบุขอบเขตเชิงความหมายในมากกว่า 100 ภาษา</p><p>สำหรับฐานความรู้ สร้างเวกเตอร์ให้ย่อหน้าต้นฉบับ เปรียบเทียบคำค้นผู้ใช้กับเวกเตอร์ แล้วค้นคืนข้อมูลที่เกี่ยวข้อง โมเดลข้อความแยกต่างหากจึงแต่งคำตอบด้วยต้นฉบับเหล่านั้นได้ สำหรับคอลเล็กชันสื่อ คำอธิบายข้อความค้นภาพหรือวิดีโอที่เกี่ยวข้องได้ และภาพใช้เป็นคำค้นได้ด้วย รักษาความสัมพันธ์ของแต่ละเวกเตอร์กับเนื้อหาต้นฉบับ รวมการอ้างหน้าเอกสารหรือคลิป เพื่อให้ตรวจผลค้นคืนและแสดงในบริบทเดิม</p><p>ขีดจำกัดอินพุตรวมคือ 8,192 โทเคน คู่มือรุ่นเสถียรอนุญาตภาพ PNG หรือ JPEG สูงสุดหกภาพ เสียง MP3 หรือ WAV สูงสุด 180 วินาที และวิดีโอ MP4 หรือ MOV สูงสุด 120 วินาที codec วิดีโอตามเอกสารคือ H264, H265, AV1 และ VP9 การประมวลผลวิดีโอใช้เฟรมสูงสุด 32 เฟรม คลิปไม่เกิน 32 วินาทีสุ่มหนึ่งเฟรมต่อวินาที คลิปยาวกว่านั้นสุ่มอย่างสม่ำเสมอให้ได้ 32 เฟรม ไม่ประมวลผลแทร็กเสียงในอินพุตวิดีโอนั้น หากเสียงสำคัญต่อการค้นคืน ให้เอ็มเบดเสียงแยก</p><p>อินพุต PDF รับหนึ่งไฟล์สูงสุดหกหน้า Google แนะนำหนึ่งหน้าต่อ PDF เพื่อคุณภาพดีที่สุด แบ่งต้นฉบับใหญ่เป็นหน้าหรือส่วนที่มีความหมายและรักษาความสัมพันธ์กับเอกสารเดิม เลือกข้อความตัดตอนที่แทนสิ่งควรค้นคืน แทนการรวมข้อมูลไม่เกี่ยวข้องเพียงเพราะพอดีขีดจำกัด คำขอผสมสื่อยังใช้ขอบโทเคนร่วม แต่ละหน้า PDF ใช้ 258 โทเคนภาพเพิ่มเติมจากโทเคนข้อความที่ดึงออก ในเวิร์กโฟลว์ตามเอกสาร Google เนื้อหาที่เกินขีดจำกัดร่วม 8,192 โทเคนถูกตัดโดยไม่มีข้อผิดพลาด</p><p>มิติเอาต์พุตเลือกได้ยืดหยุ่นจาก 128 ถึง 3,072 โดยเริ่มต้น 3,072 และแนะนำขนาด 768, 1,536 และ 3,072 โมเดลใช้ Matryoshka Representation Learning ทำให้ส่วนต้นของเวกเตอร์ยังมีประโยชน์เมื่อมิติเล็กลง คู่มือระบุ normalization อัตโนมัติทั้งเวกเตอร์เริ่มต้นและแบบสั้น เลือกมิติสม่ำเสมอสำหรับระเบียนและคำค้นที่แอปพลิเคชันเปรียบเทียบ ขนาดที่ขอเปลี่ยนตัวแทนเชิงตัวเลข ไม่ใช่เนื้อหาต้นฉบับเอง</p><p>สำหรับงานข้อความเท่านั้น ให้ใส่จุดประสงค์ในข้อความแทนฟิลด์ task_type แบบเก่า Google แยกการค้นคืนไม่สมมาตรจากการเปรียบเทียบสมมาตร คำค้นใช้ “task: search result | query: {content}” ส่วนเอกสารต้นฉบับใช้ “title: {title} | text: {content}” หากไม่มีชื่อให้ใช้ “title: none” งานถามตอบ ตรวจข้อเท็จจริง และค้นคืนโค้ดมีคำนำหน้าคำค้นของตน สำหรับจำแนก จัดกลุ่ม หรือความคล้ายประโยค ให้ใช้รูปแบบงานเดียวกันสม่ำเสมอทั้งสองด้าน คู่มือโดยทั่วไปแนะนำไม่เพิ่มคำนำหน้างานให้ส่วนข้อความของตัวแทนมัลติโมดัลที่รวมกัน</p><p>โครงสร้างอินพุตกำหนดว่าผลแทนวัตถุรวมหนึ่งชิ้นหรือรายการแยกกัน หลายส่วนที่ให้ร่วมกันสร้างเอ็มเบดดิงรวม ส่วนออบเจ็กต์ Content ที่แยกสร้างเอ็มเบดดิงแยกสำหรับแต่ละรายการ โพสต์ที่มีข้อความและภาพใช้ตัวแทนรวมเพื่อเก็บความสัมพันธ์ได้ ระเบียนที่ต้องค้นได้อิสระควรแยกกัน ทางเลือกนี้มีผลต่อหน่วยค้นคืน หนึ่งเวกเตอร์สำหรับโพสต์ทั้งหมดต่างจากหนึ่งตัวต่อแต่ละย่อหน้าหรือภาพ</p><p>คู่มือระบุว่าเวกเตอร์จาก Gemini Embedding 001 และ Gemini Embedding 2 อยู่ในพื้นที่ที่เข้ากันไม่ได้และเปรียบเทียบตรงไม่ได้ คอลเล็กชันที่ย้ายจากโมเดลเก่าต้องเอ็มเบดใหม่สำหรับพื้นที่ใหม่ รักษาการเลือกโมเดลและมิติให้สอดคล้องกับเวกเตอร์ที่เปรียบเทียบ และเก็บข้อความกับสื่อต้นฉบับแยกจากดัชนีเชิงตัวเลข ความคล้ายเอ็มเบดดิงเป็นสัญญาณค้นคืน ไม่ใช่คำอธิบายข้อเท็จจริงว่าเหตุใดเอกสารตอบคำถามผู้ใช้</p><p>สำหรับแคตตาล็อกจริง เอ็มเบดภาพสินค้าร่วมกับคำอธิบายที่อนุมัติเมื่อควรค้นคู่ข้อมูลเป็นวัตถุเดียว สำหรับคอลเล็กชันเอกสาร เอ็มเบดย่อหน้าที่เจาะจงและเปรียบเทียบกับคำค้นที่จัดรูปแบบตามจุดประสงค์ แล้วแสดงย่อหน้าต้นฉบับกับผลค้นหา สำหรับเสียงหรือวิดีโอ เลือกช่วงที่อธิบายเหตุการณ์ที่ต้องค้นและรักษาช่วงเวลาเดิม สิ่งส่งมอบที่มีประโยชน์คือตัวแทนเชิงตัวเลขที่ผูกกับหลักฐานต้นฉบับสำหรับขั้นตอนค้นหาหรือวิเคราะห์ถัดไปของแอปพลิเคชัน</p>",
  "aboutText": "Gemini Embedding 2 เป็นโมเดลเอ็มเบดดิงมัลติโมดัลของ Google สำหรับแทนข้อความ ภาพ วิดีโอ เสียง และ PDF เป็นตัวเลข แปลงชนิดสื่อต่างกันเข้าพื้นที่ร่วม เพื่อให้แอปพลิเคชันเปรียบเทียบความหมายข้ามสื่อได้ ผลคือเวกเตอร์ตัวเลขที่มีประโยชน์ต่อการค้นหาเชิงความหมาย ค้นคืนเอกสาร แนะนำ จำแนก หรือจัดกลุ่ม ไม่ใช่คำตอบเป็นข้อความหรือไฟล์สื่อที่สร้างขึ้น Google ระบุขอบเขตเชิงความหมายในมากกว่า 100 ภาษา\n\nสำหรับฐานความรู้ สร้างเวกเตอร์ให้ย่อหน้าต้นฉบับ เปรียบเทียบคำค้นผู้ใช้กับเวกเตอร์ แล้วค้นคืนข้อมูลที่เกี่ยวข้อง โมเดลข้อความแยกต่างหากจึงแต่งคำตอบด้วยต้นฉบับเหล่านั้นได้ สำหรับคอลเล็กชันสื่อ คำอธิบายข้อความค้นภาพหรือวิดีโอที่เกี่ยวข้องได้ และภาพใช้เป็นคำค้นได้ด้วย รักษาความสัมพันธ์ของแต่ละเวกเตอร์กับเนื้อหาต้นฉบับ รวมการอ้างหน้าเอกสารหรือคลิป เพื่อให้ตรวจผลค้นคืนและแสดงในบริบทเดิม\n\nขีดจำกัดอินพุตรวมคือ 8,192 โทเคน คู่มือรุ่นเสถียรอนุญาตภาพ PNG หรือ JPEG สูงสุดหกภาพ เสียง MP3 หรือ WAV สูงสุด 180 วินาที และวิดีโอ MP4 หรือ MOV สูงสุด 120 วินาที codec วิดีโอตามเอกสารคือ H264, H265, AV1 และ VP9 การประมวลผลวิดีโอใช้เฟรมสูงสุด 32 เฟรม คลิปไม่เกิน 32 วินาทีสุ่มหนึ่งเฟรมต่อวินาที คลิปยาวกว่านั้นสุ่มอย่างสม่ำเสมอให้ได้ 32 เฟรม ไม่ประมวลผลแทร็กเสียงในอินพุตวิดีโอนั้น หากเสียงสำคัญต่อการค้นคืน ให้เอ็มเบดเสียงแยก\n\nอินพุต PDF รับหนึ่งไฟล์สูงสุดหกหน้า Google แนะนำหนึ่งหน้าต่อ PDF เพื่อคุณภาพดีที่สุด แบ่งต้นฉบับใหญ่เป็นหน้าหรือส่วนที่มีความหมายและรักษาความสัมพันธ์กับเอกสารเดิม เลือกข้อความตัดตอนที่แทนสิ่งควรค้นคืน แทนการรวมข้อมูลไม่เกี่ยวข้องเพียงเพราะพอดีขีดจำกัด คำขอผสมสื่อยังใช้ขอบโทเคนร่วม แต่ละหน้า PDF ใช้ 258 โทเคนภาพเพิ่มเติมจากโทเคนข้อความที่ดึงออก ในเวิร์กโฟลว์ตามเอกสาร Google เนื้อหาที่เกินขีดจำกัดร่วม 8,192 โทเคนถูกตัดโดยไม่มีข้อผิดพลาด\n\nมิติเอาต์พุตเลือกได้ยืดหยุ่นจาก 128 ถึง 3,072 โดยเริ่มต้น 3,072 และแนะนำขนาด 768, 1,536 และ 3,072 โมเดลใช้ Matryoshka Representation Learning ทำให้ส่วนต้นของเวกเตอร์ยังมีประโยชน์เมื่อมิติเล็กลง คู่มือระบุ normalization อัตโนมัติทั้งเวกเตอร์เริ่มต้นและแบบสั้น เลือกมิติสม่ำเสมอสำหรับระเบียนและคำค้นที่แอปพลิเคชันเปรียบเทียบ ขนาดที่ขอเปลี่ยนตัวแทนเชิงตัวเลข ไม่ใช่เนื้อหาต้นฉบับเอง\n\nสำหรับงานข้อความเท่านั้น ให้ใส่จุดประสงค์ในข้อความแทนฟิลด์ task_type แบบเก่า Google แยกการค้นคืนไม่สมมาตรจากการเปรียบเทียบสมมาตร คำค้นใช้ “task: search result | query: {content}” ส่วนเอกสารต้นฉบับใช้ “title: {title} | text: {content}” หากไม่มีชื่อให้ใช้ “title: none” งานถามตอบ ตรวจข้อเท็จจริง และค้นคืนโค้ดมีคำนำหน้าคำค้นของตน สำหรับจำแนก จัดกลุ่ม หรือความคล้ายประโยค ให้ใช้รูปแบบงานเดียวกันสม่ำเสมอทั้งสองด้าน คู่มือโดยทั่วไปแนะนำไม่เพิ่มคำนำหน้างานให้ส่วนข้อความของตัวแทนมัลติโมดัลที่รวมกัน\n\nโครงสร้างอินพุตกำหนดว่าผลแทนวัตถุรวมหนึ่งชิ้นหรือรายการแยกกัน หลายส่วนที่ให้ร่วมกันสร้างเอ็มเบดดิงรวม ส่วนออบเจ็กต์ Content ที่แยกสร้างเอ็มเบดดิงแยกสำหรับแต่ละรายการ โพสต์ที่มีข้อความและภาพใช้ตัวแทนรวมเพื่อเก็บความสัมพันธ์ได้ ระเบียนที่ต้องค้นได้อิสระควรแยกกัน ทางเลือกนี้มีผลต่อหน่วยค้นคืน หนึ่งเวกเตอร์สำหรับโพสต์ทั้งหมดต่างจากหนึ่งตัวต่อแต่ละย่อหน้าหรือภาพ\n\nคู่มือระบุว่าเวกเตอร์จาก Gemini Embedding 001 และ Gemini Embedding 2 อยู่ในพื้นที่ที่เข้ากันไม่ได้และเปรียบเทียบตรงไม่ได้ คอลเล็กชันที่ย้ายจากโมเดลเก่าต้องเอ็มเบดใหม่สำหรับพื้นที่ใหม่ รักษาการเลือกโมเดลและมิติให้สอดคล้องกับเวกเตอร์ที่เปรียบเทียบ และเก็บข้อความกับสื่อต้นฉบับแยกจากดัชนีเชิงตัวเลข ความคล้ายเอ็มเบดดิงเป็นสัญญาณค้นคืน ไม่ใช่คำอธิบายข้อเท็จจริงว่าเหตุใดเอกสารตอบคำถามผู้ใช้\n\nสำหรับแคตตาล็อกจริง เอ็มเบดภาพสินค้าร่วมกับคำอธิบายที่อนุมัติเมื่อควรค้นคู่ข้อมูลเป็นวัตถุเดียว สำหรับคอลเล็กชันเอกสาร เอ็มเบดย่อหน้าที่เจาะจงและเปรียบเทียบกับคำค้นที่จัดรูปแบบตามจุดประสงค์ แล้วแสดงย่อหน้าต้นฉบับกับผลค้นหา สำหรับเสียงหรือวิดีโอ เลือกช่วงที่อธิบายเหตุการณ์ที่ต้องค้นและรักษาช่วงเวลาเดิม สิ่งส่งมอบที่มีประโยชน์คือตัวแทนเชิงตัวเลขที่ผูกกับหลักฐานต้นฉบับสำหรับขั้นตอนค้นหาหรือวิเคราะห์ถัดไปของแอปพลิเคชัน",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "1cdcf2275b99bf11ee027a2e337b15af3d0750563cde8fe7b3bb4d05432dccb7",
    "module_sha256": "ee9dc1c50b1e6a8fb7fa062030fcb4646b9aaaeb08be513b723a5a92a7290f06",
    "raw_model_unchanged": true,
    "schema": "ailoot-native-model-editorial-v1"
  },
  "locale": "th",
  "methods": [
    {
      "html": "<div class=\"sheet-head\"><span class=\"mav\" aria-hidden=\"true\">G</span><h2 id=\"sheet-title\">Google: Gemini Embedding 2</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"ปิด\">×</button></div><div class=\"idline\"><span>Google /</span><code>google/gemini-embedding-2</code><button type=\"button\" id=\"copy-id\">คัดลอก ID</button></div><nav class=\"card-jump-nav\" aria-label=\"ส่วนต่าง ๆ ของการ์ดโมเดล\"><button type=\"button\" data-card-jump=\"overview\">เริ่มต้น</button><button type=\"button\" data-card-jump=\"methods\">อินพุตและเมธอด</button><button type=\"button\" data-card-jump=\"pricing\">ราคา</button><button type=\"button\" data-card-jump=\"examples\">ตัวอย่าง</button><button type=\"button\" data-card-jump=\"results\">ผลลัพธ์</button><button type=\"button\" data-card-jump=\"aliases\">ชื่ออื่น</button></nav><div class=\"card-method-tabs\" role=\"tablist\" aria-label=\"เมธอด API\"><button type=\"button\" role=\"tab\" tabindex=\"0\" aria-controls=\"card-method-content\" aria-selected=\"true\" id=\"card-method-tab-0\" data-card-method=\"Ultra|embeddings|/v1/embeddings|google%2Fgemini-embedding-2\">เอ็มเบดดิง</button></div><div id=\"card-method-content\" role=\"tabpanel\" aria-labelledby=\"card-method-tab-0\"><section class=\"card-section\" data-card-section=\"overview\"><h3 tabindex=\"-1\">เริ่มต้น</h3><p class=\"mdesc-full\">Gemini Embedding 2 แปลงข้อความ ภาพ เสียง วิดีโอ และ PDF เข้าสู่พื้นที่เชิงตัวเลขร่วม เวกเตอร์รองรับการค้นหาข้ามชนิดสื่อ การค้นคืน จำแนก และจัดกลุ่ม พร้อมมิติยืดหยุ่นและขีดจำกัดอินพุต 8,192 โทเคน</p><dl class=\"card-io\" data-card-io><div><dt>อินพุตที่รองรับ</dt><dd>ข้อความ · token_ids</dd></div><div><dt>ผลลัพธ์</dt><dd>embedding</dd></div></dl><details class=\"card-about\"><summary>เกี่ยวกับโมเดล</summary><p class=\"note-s\" data-model-method-boundary>คำอธิบายนี้ครอบคลุมความสามารถของโมเดล อินพุต เอาต์พุต และตัวเลือกที่ใช้ได้ใน Ailoot แสดงด้านล่างตามเมธอดที่เลือก</p><div class=\"mabout\" id=\"m-about\"><p>Gemini Embedding 2 เป็นโมเดลเอ็มเบดดิงมัลติโมดัลของ Google สำหรับแทนข้อความ ภาพ วิดีโอ เสียง และ PDF เป็นตัวเลข แปลงชนิดสื่อต่างกันเข้าพื้นที่ร่วม เพื่อให้แอปพลิเคชันเปรียบเทียบความหมายข้ามสื่อได้ ผลคือเวกเตอร์ตัวเลขที่มีประโยชน์ต่อการค้นหาเชิงความหมาย ค้นคืนเอกสาร แนะนำ จำแนก หรือจัดกลุ่ม ไม่ใช่คำตอบเป็นข้อความหรือไฟล์สื่อที่สร้างขึ้น Google ระบุขอบเขตเชิงความหมายในมากกว่า 100 ภาษา</p><p>สำหรับฐานความรู้ สร้างเวกเตอร์ให้ย่อหน้าต้นฉบับ เปรียบเทียบคำค้นผู้ใช้กับเวกเตอร์ แล้วค้นคืนข้อมูลที่เกี่ยวข้อง โมเดลข้อความแยกต่างหากจึงแต่งคำตอบด้วยต้นฉบับเหล่านั้นได้ สำหรับคอลเล็กชันสื่อ คำอธิบายข้อความค้นภาพหรือวิดีโอที่เกี่ยวข้องได้ และภาพใช้เป็นคำค้นได้ด้วย รักษาความสัมพันธ์ของแต่ละเวกเตอร์กับเนื้อหาต้นฉบับ รวมการอ้างหน้าเอกสารหรือคลิป เพื่อให้ตรวจผลค้นคืนและแสดงในบริบทเดิม</p><p>ขีดจำกัดอินพุตรวมคือ 8,192 โทเคน คู่มือรุ่นเสถียรอนุญาตภาพ PNG หรือ JPEG สูงสุดหกภาพ เสียง MP3 หรือ WAV สูงสุด 180 วินาที และวิดีโอ MP4 หรือ MOV สูงสุด 120 วินาที codec วิดีโอตามเอกสารคือ H264, H265, AV1 และ VP9 การประมวลผลวิดีโอใช้เฟรมสูงสุด 32 เฟรม คลิปไม่เกิน 32 วินาทีสุ่มหนึ่งเฟรมต่อวินาที คลิปยาวกว่านั้นสุ่มอย่างสม่ำเสมอให้ได้ 32 เฟรม ไม่ประมวลผลแทร็กเสียงในอินพุตวิดีโอนั้น หากเสียงสำคัญต่อการค้นคืน ให้เอ็มเบดเสียงแยก</p><p>อินพุต PDF รับหนึ่งไฟล์สูงสุดหกหน้า Google แนะนำหนึ่งหน้าต่อ PDF เพื่อคุณภาพดีที่สุด แบ่งต้นฉบับใหญ่เป็นหน้าหรือส่วนที่มีความหมายและรักษาความสัมพันธ์กับเอกสารเดิม เลือกข้อความตัดตอนที่แทนสิ่งควรค้นคืน แทนการรวมข้อมูลไม่เกี่ยวข้องเพียงเพราะพอดีขีดจำกัด คำขอผสมสื่อยังใช้ขอบโทเคนร่วม แต่ละหน้า PDF ใช้ 258 โทเคนภาพเพิ่มเติมจากโทเคนข้อความที่ดึงออก ในเวิร์กโฟลว์ตามเอกสาร Google เนื้อหาที่เกินขีดจำกัดร่วม 8,192 โทเคนถูกตัดโดยไม่มีข้อผิดพลาด</p><p>มิติเอาต์พุตเลือกได้ยืดหยุ่นจาก 128 ถึง 3,072 โดยเริ่มต้น 3,072 และแนะนำขนาด 768, 1,536 และ 3,072 โมเดลใช้ Matryoshka Representation Learning ทำให้ส่วนต้นของเวกเตอร์ยังมีประโยชน์เมื่อมิติเล็กลง คู่มือระบุ normalization อัตโนมัติทั้งเวกเตอร์เริ่มต้นและแบบสั้น เลือกมิติสม่ำเสมอสำหรับระเบียนและคำค้นที่แอปพลิเคชันเปรียบเทียบ ขนาดที่ขอเปลี่ยนตัวแทนเชิงตัวเลข ไม่ใช่เนื้อหาต้นฉบับเอง</p><p>สำหรับงานข้อความเท่านั้น ให้ใส่จุดประสงค์ในข้อความแทนฟิลด์ task_type แบบเก่า Google แยกการค้นคืนไม่สมมาตรจากการเปรียบเทียบสมมาตร คำค้นใช้ “task: search result | query: {content}” ส่วนเอกสารต้นฉบับใช้ “title: {title} | text: {content}” หากไม่มีชื่อให้ใช้ “title: none” งานถามตอบ ตรวจข้อเท็จจริง และค้นคืนโค้ดมีคำนำหน้าคำค้นของตน สำหรับจำแนก จัดกลุ่ม หรือความคล้ายประโยค ให้ใช้รูปแบบงานเดียวกันสม่ำเสมอทั้งสองด้าน คู่มือโดยทั่วไปแนะนำไม่เพิ่มคำนำหน้างานให้ส่วนข้อความของตัวแทนมัลติโมดัลที่รวมกัน</p><p>โครงสร้างอินพุตกำหนดว่าผลแทนวัตถุรวมหนึ่งชิ้นหรือรายการแยกกัน หลายส่วนที่ให้ร่วมกันสร้างเอ็มเบดดิงรวม ส่วนออบเจ็กต์ Content ที่แยกสร้างเอ็มเบดดิงแยกสำหรับแต่ละรายการ โพสต์ที่มีข้อความและภาพใช้ตัวแทนรวมเพื่อเก็บความสัมพันธ์ได้ ระเบียนที่ต้องค้นได้อิสระควรแยกกัน ทางเลือกนี้มีผลต่อหน่วยค้นคืน หนึ่งเวกเตอร์สำหรับโพสต์ทั้งหมดต่างจากหนึ่งตัวต่อแต่ละย่อหน้าหรือภาพ</p><p>คู่มือระบุว่าเวกเตอร์จาก Gemini Embedding 001 และ Gemini Embedding 2 อยู่ในพื้นที่ที่เข้ากันไม่ได้และเปรียบเทียบตรงไม่ได้ คอลเล็กชันที่ย้ายจากโมเดลเก่าต้องเอ็มเบดใหม่สำหรับพื้นที่ใหม่ รักษาการเลือกโมเดลและมิติให้สอดคล้องกับเวกเตอร์ที่เปรียบเทียบ และเก็บข้อความกับสื่อต้นฉบับแยกจากดัชนีเชิงตัวเลข ความคล้ายเอ็มเบดดิงเป็นสัญญาณค้นคืน ไม่ใช่คำอธิบายข้อเท็จจริงว่าเหตุใดเอกสารตอบคำถามผู้ใช้</p><p>สำหรับแคตตาล็อกจริง เอ็มเบดภาพสินค้าร่วมกับคำอธิบายที่อนุมัติเมื่อควรค้นคู่ข้อมูลเป็นวัตถุเดียว สำหรับคอลเล็กชันเอกสาร เอ็มเบดย่อหน้าที่เจาะจงและเปรียบเทียบกับคำค้นที่จัดรูปแบบตามจุดประสงค์ แล้วแสดงย่อหน้าต้นฉบับกับผลค้นหา สำหรับเสียงหรือวิดีโอ เลือกช่วงที่อธิบายเหตุการณ์ที่ต้องค้นและรักษาช่วงเวลาเดิม สิ่งส่งมอบที่มีประโยชน์คือตัวแทนเชิงตัวเลขที่ผูกกับหลักฐานต้นฉบับสำหรับขั้นตอนค้นหาหรือวิเคราะห์ถัดไปของแอปพลิเคชัน</p></div></details></section><section class=\"card-section\" data-card-section=\"methods\"><h3 tabindex=\"-1\">ใช้งานได้ใน Ailoot · อินพุตและเมธอด</h3><details class=\"card-method\" open><summary><b>Ailoot Ultra · เอ็มเบดดิง</b> <code>POST /v1/embeddings</code></summary><dl class=\"method-capabilities\"><div><dt>ขาเข้า</dt><dd><code>text</code>, <code>token_ids</code></dd></div><div><dt>ขาออก</dt><dd><code>embedding</code></dd></div><div><dt>บริบท</dt><dd>8,192 tokens</dd></div><div><dt>รูปแบบเอาต์พุต</dt><dd>json</dd></div></dl><div class=\"tw\" data-card-parameters data-typed-parameters><table><thead><tr><th>ฟิลด์</th><th>ประเภท</th><th>ข้อกำหนด</th><th>ค่าและข้อจำกัด</th><th>ค่าเริ่มต้น</th></tr></thead><tbody><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"ฟิลด์\" scope=\"row\"><span class=\"card-cell-label\">ฟิลด์</span><code class=\"card-field-name\">model</code></th><td data-cell-label=\"ประเภท\" data-field-type><span class=\"card-cell-label\">ประเภท</span><code>string</code></td><td data-cell-label=\"ข้อกำหนด\"><span class=\"card-cell-label\">ข้อกำหนด</span>จำเป็น</td><td data-cell-label=\"ค่าและข้อจำกัด\"><span class=\"card-cell-label\">ค่าและข้อจำกัด</span><div>google/gemini-embedding-2</div></td><td data-cell-label=\"ค่าเริ่มต้น\" data-default=\"unspecified\"><span class=\"card-cell-label\">ค่าเริ่มต้น</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"ฟิลด์\" scope=\"row\"><span class=\"card-cell-label\">ฟิลด์</span><code class=\"card-field-name\">input</code></th><td data-cell-label=\"ประเภท\" data-field-type><span class=\"card-cell-label\">ประเภท</span><code>string|string[]|integer[]|integer[][]</code></td><td data-cell-label=\"ข้อกำหนด\"><span class=\"card-cell-label\">ข้อกำหนด</span>จำเป็น</td><td data-cell-label=\"ค่าและข้อจำกัด\"><span class=\"card-cell-label\">ค่าและข้อจำกัด</span><div>จำนวนรายการขั้นต่ำ: 1</div><div>เงื่อนไข: ชุดข้อมูลต้องไม่ว่างและประกอบด้วยข้อมูลชนิดเดียวกัน ID โทเคนต้องเป็นจำนวนเต็มที่ไม่ติดลบ</div><div>โควตาอินพุต: สูงสุด: 8,192 · หน่วยข้อความ: ไบต์ UTF8 · หน่วยโทเค็น: องค์ประกอบในอาร์เรย์โทเค็น</div></td><td data-cell-label=\"ค่าเริ่มต้น\" data-default=\"unspecified\"><span class=\"card-cell-label\">ค่าเริ่มต้น</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"ฟิลด์\" scope=\"row\"><span class=\"card-cell-label\">ฟิลด์</span><code class=\"card-field-name\">encoding_format</code></th><td data-cell-label=\"ประเภท\" data-field-type><span class=\"card-cell-label\">ประเภท</span><code>string</code></td><td data-cell-label=\"ข้อกำหนด\"><span class=\"card-cell-label\">ข้อกำหนด</span>ไม่บังคับ</td><td data-cell-label=\"ค่าและข้อจำกัด\"><span class=\"card-cell-label\">ค่าและข้อจำกัด</span><div>float</div></td><td data-cell-label=\"ค่าเริ่มต้น\" data-default=\"known\"><span class=\"card-cell-label\">ค่าเริ่มต้น</span>float</td></tr><tr data-parameter-availability=\"unsupported\"><th data-cell-label=\"ฟิลด์\" scope=\"row\"><span class=\"card-cell-label\">ฟิลด์</span><code class=\"card-field-name\">dimensions</code></th><td data-cell-label=\"ประเภท\" data-field-type><span class=\"card-cell-label\">ประเภท</span><code>integer</code></td><td data-cell-label=\"ข้อกำหนด\"><span class=\"card-cell-label\">ข้อกำหนด</span>ไม่รองรับ</td><td data-cell-label=\"ค่าและข้อจำกัด\"><span class=\"card-cell-label\">ค่าและข้อจำกัด</span><div>ขั้นต่ำ: 1</div></td><td data-cell-label=\"ค่าเริ่มต้น\" data-default=\"unspecified\"><span class=\"card-cell-label\">ค่าเริ่มต้น</span>—</td></tr><tr data-parameter-availability=\"pass_through_metadata\"><th data-cell-label=\"ฟิลด์\" scope=\"row\"><span class=\"card-cell-label\">ฟิลด์</span><code class=\"card-field-name\">user</code></th><td data-cell-label=\"ประเภท\" data-field-type><span class=\"card-cell-label\">ประเภท</span><code>json_value</code></td><td data-cell-label=\"ข้อกำหนด\"><span class=\"card-cell-label\">ข้อกำหนด</span>ไม่บังคับ</td><td data-cell-label=\"ค่าและข้อจำกัด\"><span class=\"card-cell-label\">ค่าและข้อจำกัด</span><div>เงื่อนไข: ต้นฉบับอนุญาตฟิลด์เมทาดาทา JSON นี้ โดยความหมายที่แน่นอนในระบบต้นทางขึ้นอยู่กับแต่ละโมเดล</div></td><td data-cell-label=\"ค่าเริ่มต้น\" data-default=\"unspecified\"><span class=\"card-cell-label\">ค่าเริ่มต้น</span>—</td></tr><tr data-parameter-availability=\"pass_through_metadata\"><th data-cell-label=\"ฟิลด์\" scope=\"row\"><span class=\"card-cell-label\">ฟิลด์</span><code class=\"card-field-name\">session_id</code></th><td data-cell-label=\"ประเภท\" data-field-type><span class=\"card-cell-label\">ประเภท</span><code>json_value</code></td><td data-cell-label=\"ข้อกำหนด\"><span class=\"card-cell-label\">ข้อกำหนด</span>ไม่บังคับ</td><td data-cell-label=\"ค่าและข้อจำกัด\"><span class=\"card-cell-label\">ค่าและข้อจำกัด</span><div>เงื่อนไข: ต้นฉบับอนุญาตฟิลด์เมทาดาทา JSON นี้ โดยความหมายที่แน่นอนในระบบต้นทางขึ้นอยู่กับแต่ละโมเดล</div></td><td data-cell-label=\"ค่าเริ่มต้น\" data-default=\"unspecified\"><span class=\"card-cell-label\">ค่าเริ่มต้น</span>—</td></tr><tr data-parameter-availability=\"pass_through_metadata\"><th data-cell-label=\"ฟิลด์\" scope=\"row\"><span class=\"card-cell-label\">ฟิลด์</span><code class=\"card-field-name\">trace</code></th><td data-cell-label=\"ประเภท\" data-field-type><span class=\"card-cell-label\">ประเภท</span><code>json_value</code></td><td data-cell-label=\"ข้อกำหนด\"><span class=\"card-cell-label\">ข้อกำหนด</span>ไม่บังคับ</td><td data-cell-label=\"ค่าและข้อจำกัด\"><span class=\"card-cell-label\">ค่าและข้อจำกัด</span><div>เงื่อนไข: ต้นฉบับอนุญาตฟิลด์เมทาดาทา JSON นี้ โดยความหมายที่แน่นอนในระบบต้นทางขึ้นอยู่กับแต่ละโมเดล</div></td><td data-cell-label=\"ค่าเริ่มต้น\" data-default=\"unspecified\"><span class=\"card-cell-label\">ค่าเริ่มต้น</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"ฟิลด์\" scope=\"row\"><span class=\"card-cell-label\">ฟิลด์</span><code class=\"card-field-name\">provider</code></th><td data-cell-label=\"ประเภท\" data-field-type><span class=\"card-cell-label\">ประเภท</span><code>object</code></td><td data-cell-label=\"ข้อกำหนด\"><span class=\"card-cell-label\">ข้อกำหนด</span>ไม่บังคับ</td><td data-cell-label=\"ค่าและข้อจำกัด\"><span class=\"card-cell-label\">ค่าและข้อจำกัด</span><div>เงื่อนไข: provider.options ถูกปฏิเสธ</div></td><td data-cell-label=\"ค่าเริ่มต้น\" data-default=\"unspecified\"><span class=\"card-cell-label\">ค่าเริ่มต้น</span>—</td></tr></tbody></table></div><details class=\"card-about\" data-material-combinations><summary>ชุดผสมของสื่ออินพุต</summary><p class=\"note-s\"><b>text_to_embedding</b></p></details><details class=\"note-s\" data-method-contract><summary>พารามิเตอร์และวงจรการทำงานของเมธอด</summary><div class=\"tw\" data-card-table=\"contract\"><table><thead><tr><th>พารามิเตอร์</th><th>ข้อกำหนด</th></tr></thead><tbody><tr><th data-cell-label=\"พารามิเตอร์\" scope=\"row\"><span class=\"card-cell-label\">พารามิเตอร์</span><code>content_type</code></th><td data-cell-label=\"ข้อกำหนด\"><span class=\"card-cell-label\">ข้อกำหนด</span>application/json</td></tr><tr><th data-cell-label=\"พารามิเตอร์\" scope=\"row\"><span class=\"card-cell-label\">พารามิเตอร์</span><code>required</code></th><td data-cell-label=\"ข้อกำหนด\"><span class=\"card-cell-label\">ข้อกำหนด</span>model, input</td></tr><tr><th data-cell-label=\"พารามิเตอร์\" scope=\"row\"><span class=\"card-cell-label\">พารามิเตอร์</span><code>input_shapes</code></th><td data-cell-label=\"ข้อกำหนด\"><span class=\"card-cell-label\">ข้อกำหนด</span>string, string[], nonnegative_integer_token_array, nonnegative_integer_token_array[]</td></tr><tr><th data-cell-label=\"พารามิเตอร์\" scope=\"row\"><span class=\"card-cell-label\">พารามิเตอร์</span><code>encoding_format</code></th><td data-cell-label=\"ข้อกำหนด\"><span class=\"card-cell-label\">ข้อกำหนด</span>float</td></tr><tr><th data-cell-label=\"พารามิเตอร์\" scope=\"row\"><span class=\"card-cell-label\">พารามิเตอร์</span><code>dimensions_override</code></th><td data-cell-label=\"ข้อกำหนด\"><span class=\"card-cell-label\">ข้อกำหนด</span>false</td></tr><tr><th data-cell-label=\"พารามิเตอร์\" scope=\"row\"><span class=\"card-cell-label\">พารามิเตอร์</span><code>max_input_budget_units</code></th><td data-cell-label=\"ข้อกำหนด\"><span class=\"card-cell-label\">ข้อกำหนด</span>8192</td></tr><tr><th data-cell-label=\"พารามิเตอร์\" scope=\"row\"><span class=\"card-cell-label\">พารามิเตอร์</span><code>multimodal_objects</code></th><td data-cell-label=\"ข้อกำหนด\"><span class=\"card-cell-label\">ข้อกำหนด</span>false</td></tr><tr><th data-cell-label=\"พารามิเตอร์\" scope=\"row\"><span class=\"card-cell-label\">พารามิเตอร์</span><code>material_types</code></th><td data-cell-label=\"ข้อกำหนด\"><span class=\"card-cell-label\">ข้อกำหนด</span>text, token_ids</td></tr></tbody></table></div><p>วงจรการทำงาน: <code>synchronous_json</code></p><p class=\"note-s\">เก็บดัชนีและจำนวนมิติของเวกเตอร์ทุกรายการ</p><p class=\"note-s\">ชื่อโมเดลที่สื่อว่ารองรับข้อมูลหลายรูปแบบไม่ได้ทำให้สามารถส่งออบเจ็กต์รูปภาพผ่านเส้นทางเฉพาะนี้ได้</p></details></details></section><section class=\"card-section\" data-card-section=\"pricing\"><h3 tabindex=\"-1\">ราคา</h3><div data-native-semantic-method=\"v1\" data-tariff-reference-only><p class=\"note-s\" data-rate-support-note>ข้อมูลอัตราราคาไม่ได้เพิ่มตัวเลือกคำขอ พารามิเตอร์ที่รองรับระบุไว้สำหรับเมธอดที่เลือก</p><dl data-price-conditions><dt>โหมดรวดเร็ว</dt><dd>อัตรามาตรฐาน <span class=\"note-s\">เมื่อเลือกโหมดรวดเร็ว</span></dd><dt>โหมดยืดหยุ่น</dt><dd>อัตรามาตรฐาน <span class=\"note-s\">เมื่อเลือกโหมด flex</span></dd><dt>ระดับการใช้เหตุผลสูงสุด</dt><dd>อัตรามาตรฐาน <span class=\"note-s\">เมื่อใช้การปรับตามค่าเริ่มต้น (default) สำหรับระดับการใช้เหตุผลสูงสุด</span></dd></dl></div><div data-declared-tariff-pricing><h4>อัตราค่าบริการ Ailoot</h4><h4>ราคาตามการตั้งค่า</h4><div class=\"tw\" data-pricing-profiles><table><thead><tr><th>การตั้งค่า</th><th>ตารางอัตราค่าบริการ</th><th>ค่าบริการ</th></tr></thead><tbody><tr><th data-cell-label=\"การตั้งค่า\" scope=\"row\"><span class=\"card-cell-label\">การตั้งค่า</span>อัตราราคาพื้นฐานของโทเคน</th><td data-cell-label=\"ตารางอัตราค่าบริการ\"><span class=\"card-cell-label\">ตารางอัตราค่าบริการ</span>อัตราพื้นฐาน</td><td data-cell-label=\"ค่าบริการ\"><span class=\"card-cell-label\">ค่าบริการ</span><div><span>ขาเข้า · โทเค็นอินพุต</span> <b>$0.0004</b> <span class=\"price-unit\">/ 1K โทเค็น</span></div><div><span>ขาออก · โทเค็นเอาต์พุต</span> <b>$0</b> <span class=\"price-unit\">/ 1K โทเค็น</span></div><div><span>ขาเข้า · การอ่านแคช</span> <b>—</b> <span class=\"price-unit\">/ 1K โทเค็น</span></div><div><span>ขาเข้า · การเขียนแคช</span> <b>—</b> <span class=\"price-unit\">/ 1K โทเค็น</span></div><div><span>ขาเข้า · การเขียนแคช, 1 ชั่วโมง</span> <b>—</b> <span class=\"price-unit\">/ 1K โทเค็น</span></div></td></tr></tbody></table></div></div><p class=\"note-s\">Ailoot กันยอดเงินประมาณการไว้ก่อนส่งคำขอ หลังได้ผลลัพธ์ จะคิดค่าบริการสุดท้ายตามการใช้งานที่วัดได้ การคิดค่าบริการแบบสตรีมใช้บันทึกการใช้งานสุดท้าย <a href=\"/docs/th/billing/reserve/\">วิธีกันยอดเงินและคิดค่าบริการสุดท้าย →</a></p></section><section class=\"card-section\" data-card-section=\"examples\"><h3 tabindex=\"-1\">ตัวอย่างคำขอ</h3><h4>Ailoot Ultra · เอ็มเบดดิง</h4><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"ตัวเลือกโค้ด\"><button class=\"cg-tab\" id=\"model-code-1487-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1487-panel-0\" aria-selected=\"true\" tabindex=\"0\">curl</button><button class=\"cg-tab\" id=\"model-code-1487-tab-1\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1487-panel-1\" aria-selected=\"false\" tabindex=\"-1\">Python SDK</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"คัดลอกโค้ด\"><svg class=\"cp\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><rect x=\"5.25\" y=\"5.25\" width=\"8.5\" height=\"8.5\" rx=\"1.75\"/><path d=\"M10.75 5.25V3.5a1.25 1.25 0 0 0-1.25-1.25H3.5A1.25 1.25 0 0 0 2.25 3.5v6a1.25 1.25 0 0 0 1.25 1.25h1.75\"/></svg><svg class=\"ok\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><path d=\"m3 8.5 3.25 3.25L13 5\"/></svg></button></div></div><div class=\"cg-body\"><div class=\"cg-pane\" id=\"model-code-1487-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1487-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\npython3 - &lt;&lt;&#39;PY_REQUEST&#39;\nimport json,os\nfrom pathlib import Path\np=json.loads(&#39;{&quot;model&quot;: &quot;google/gemini-embedding-2&quot;, &quot;input&quot;: [&quot;First document&quot;, &quot;Second document&quot;]}&#39;)\n\nPath(&quot;request.json&quot;).write_text(json.dumps(p,ensure_ascii=False))\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/embeddings \\\n  -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; -H &#39;Content-Type: application/json&#39; \\\n  --data-binary @request.json -D response-headers.txt -o result.json\npython3 - &lt;&lt;&#39;PY_RESULT&#39;\nimport json\nfrom pathlib import Path\nr=json.loads(Path(&quot;result.json&quot;).read_text())\nfor x in r.get(&quot;data&quot;,[]): print(json.dumps({&quot;index&quot;:x.get(&quot;index&quot;),&quot;embedding&quot;:x.get(&quot;embedding&quot;)}))\nPY_RESULT\n</code></pre></div><div class=\"cg-pane\" id=\"model-code-1487-panel-1\" role=\"tabpanel\" aria-labelledby=\"model-code-1487-tab-1\" hidden><pre data-lang=\"python\"><code>from openai import OpenAI\nimport os\n\nclient=OpenAI(base_url=&quot;https://api.ailoot.ai/v1&quot;,api_key=os.environ[&quot;AILOOT_API_KEY&quot;],max_retries=0)\nresult=client.embeddings.create(model=&#39;google/gemini-embedding-2&#39;,input=[&quot;First document&quot;,&quot;Second document&quot;])\nprint(result)\nfor item in result.data:print(item.index,item.embedding)\n</code></pre></div></div></div></section><section class=\"card-section\" data-card-section=\"results\"><h3 tabindex=\"-1\">รับและบันทึกผลลัพธ์</h3><h4>Ailoot Ultra · เอ็มเบดดิง</h4><p class=\"note-s\">json</p><div class=\"card-result-process\" data-all-results><h5>เก็บผลลัพธ์ที่เสร็จสมบูรณ์ทั้งหมด</h5><p class=\"note-s\">เก็บทุกการตอบกลับ ไฟล์ และส่วนเนื้อหาที่ส่งกลับมาอย่างครบถ้วน</p><p class=\"note-s\">เก็บเวกเตอร์ทุกรายการพร้อมดัชนีของแต่ละรายการ จำนวนเวกเตอร์ต้องเท่ากับจำนวนข้อมูลนำเข้า และจำนวนมิติต้องสอดคล้องกัน</p></div><div class=\"card-result-process\" data-unknown-recovery><h5>เมื่อต้องตรวจสอบการตอบกลับต้นฉบับ</h5><p class=\"note-s\">ไม่มีการเพิ่มจุดเชื่อมต่อสำหรับงานสร้างเวกเตอร์ตัวแทนข้อมูล</p></div><details class=\"card-about\" data-output-fields><summary>ฟิลด์การตอบกลับ</summary><div class=\"tw\" data-card-table=\"output\"><table><thead><tr><th>ฟิลด์</th><th>ประเภท</th></tr></thead><tbody><tr><th data-cell-label=\"ฟิลด์\" scope=\"row\"><span class=\"card-cell-label\">ฟิลด์</span><code class=\"card-field-name\">object</code></th><td data-cell-label=\"ประเภท\" data-field-type><span class=\"card-cell-label\">ประเภท</span>string</td></tr><tr><th data-cell-label=\"ฟิลด์\" scope=\"row\"><span class=\"card-cell-label\">ฟิลด์</span><code class=\"card-field-name\">model</code></th><td data-cell-label=\"ประเภท\" data-field-type><span class=\"card-cell-label\">ประเภท</span>string</td></tr><tr><th data-cell-label=\"ฟิลด์\" scope=\"row\"><span class=\"card-cell-label\">ฟิลด์</span><code class=\"card-field-name\">data[].index</code></th><td data-cell-label=\"ประเภท\" data-field-type><span class=\"card-cell-label\">ประเภท</span>integer</td></tr><tr><th data-cell-label=\"ฟิลด์\" scope=\"row\"><span class=\"card-cell-label\">ฟิลด์</span><code class=\"card-field-name\">data[].embedding</code></th><td data-cell-label=\"ประเภท\" data-field-type><span class=\"card-cell-label\">ประเภท</span>finite float[]</td></tr><tr><th data-cell-label=\"ฟิลด์\" scope=\"row\"><span class=\"card-cell-label\">ฟิลด์</span><code class=\"card-field-name\">usage</code></th><td data-cell-label=\"ประเภท\" data-field-type><span class=\"card-cell-label\">ประเภท</span>object</td></tr></tbody></table></div></details><details class=\"card-about\" data-method-errors><summary>ข้อผิดพลาดและขั้นตอนถัดไป</summary><div class=\"tw\" data-card-table=\"errors\"><table><thead><tr><th>การตอบกลับ</th><th>เงื่อนไข</th><th>ขั้นตอนถัดไป</th></tr></thead><tbody><tr><th data-cell-label=\"การตอบกลับ\" scope=\"row\"><span class=\"card-cell-label\">การตอบกลับ</span>400 · <code>invalid_request_error</code></th><td data-cell-label=\"เงื่อนไข\"><span class=\"card-cell-label\">เงื่อนไข</span>ฟิลด์จำเป็น รูปแบบการแทนข้อมูล หรือค่าพารามิเตอร์ไม่ถูกต้อง</td><td data-cell-label=\"ขั้นตอนถัดไป\"><span class=\"card-cell-label\">ขั้นตอนถัดไป</span>แก้ฟิลด์ที่ระบุก่อนส่งคำขอสร้างครั้งใหม่</td></tr></tbody></table></div></details></section><section class=\"card-section\" data-card-section=\"aliases\"><h3 tabindex=\"-1\">ชื่ออื่น</h3><h4>ชื่ออื่นของโมเดล</h4><p class=\"note-s\"><span data-model-alias-route=\"Ultra\"><b>Ailoot Ultra</b> <a href=\"#m=google%2Fgemini-embedding-2&amp;route=Ultra&amp;caller=google%2Fgemini-embedding-2&amp;fmt=embeddings\"><code>google/gemini-embedding-2</code></a></span></p><h4>ชื่อพาธเมธอดอื่น</h4><p class=\"note-s\">ใช้พาธเมธอดที่แสดงด้านบน</p><h4>ID ที่เกี่ยวข้องสำหรับเรียกใช้โมเดล</h4><p class=\"note-s\"><a href=\"#m=google%2Fgemini-embedding-2&amp;route=Ultra&amp;caller=google%2Fgemini-embedding-2&amp;fmt=embeddings\"><code>google/gemini-embedding-2</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "google/gemini-embedding-2",
        "fmt": "embeddings",
        "http": "POST",
        "path": "/v1/embeddings",
        "request_model_id": "google/gemini-embedding-2",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|embeddings|/v1/embeddings|google%2Fgemini-embedding-2",
      "ordinal": 0,
      "rawMethod": {
        "available": null,
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Keep every vector with its index. Vector count must equal input count; dimensions must be consistent.",
            "errors": [
              {
                "code": null,
                "condition": "ฟิลด์จำเป็น รูปแบบการแทนข้อมูล หรือค่าพารามิเตอร์ไม่ถูกต้อง",
                "http_status": 400,
                "recovery": "แก้ฟิลด์ที่ระบุก่อนส่งคำขอสร้างครั้งใหม่",
                "type": "invalid_request_error"
              }
            ],
            "hints": [],
            "ignored_fields": [],
            "lifecycle": {
              "create": {
                "http": "POST",
                "path": "/v1/embeddings"
              },
              "job_read": null,
              "mode": "synchronous_json",
              "unknown": "ไม่มีการเพิ่มจุดเชื่อมต่อสำหรับงานสร้างเวกเตอร์ตัวแทนข้อมูล"
            },
            "material_combinations": [
              {
                "alternatives": [
                  "string",
                  "string[]",
                  "nonnegative_integer_token_array",
                  "nonnegative_integer_token_array[]"
                ],
                "mode": "text_to_embedding"
              }
            ],
            "operation_modes": [
              "single_embedding",
              "batched_embeddings"
            ],
            "outputs": {
              "all_results": "เก็บเวกเตอร์ทุกรายการพร้อมดัชนีของแต่ละรายการ จำนวนเวกเตอร์ต้องเท่ากับจำนวนข้อมูลนำเข้า และจำนวนมิติต้องสอดคล้องกัน",
              "default_dimensions": null,
              "family": "embedding",
              "fields": [
                {
                  "description": null,
                  "name": "object",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "model",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "data[].index",
                  "type": "integer"
                },
                {
                  "description": null,
                  "name": "data[].embedding",
                  "type": "finite float[]"
                },
                {
                  "description": null,
                  "name": "usage",
                  "type": "object"
                }
              ],
              "format": "json"
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "google/gemini-embedding-2"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "budget": {
                  "maximum": 8192,
                  "text_unit": "ไบต์ UTF8",
                  "token_unit": "องค์ประกอบในอาร์เรย์โทเค็น"
                },
                "conditions": "ชุดข้อมูลต้องไม่ว่างและประกอบด้วยข้อมูลชนิดเดียวกัน ID โทเคนต้องเป็นจำนวนเต็มที่ไม่ติดลบ",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "min_items": 1,
                "name": "input",
                "required": true,
                "type": "string|string[]|integer[]|integer[][]"
              },
              {
                "availability": "source_interface",
                "default": "float",
                "default_known": true,
                "enum": [
                  "float"
                ],
                "enum_known": true,
                "name": "encoding_format",
                "required": false,
                "type": "string"
              },
              {
                "availability": "unsupported",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "minimum": 1,
                "name": "dimensions",
                "required": false,
                "type": "integer"
              },
              {
                "availability": "pass_through_metadata",
                "conditions": "ต้นฉบับอนุญาตฟิลด์เมทาดาทา JSON นี้ โดยความหมายที่แน่นอนในระบบต้นทางขึ้นอยู่กับแต่ละโมเดล",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "user",
                "required": false,
                "type": "json_value"
              },
              {
                "availability": "pass_through_metadata",
                "conditions": "ต้นฉบับอนุญาตฟิลด์เมทาดาทา JSON นี้ โดยความหมายที่แน่นอนในระบบต้นทางขึ้นอยู่กับแต่ละโมเดล",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "session_id",
                "required": false,
                "type": "json_value"
              },
              {
                "availability": "pass_through_metadata",
                "conditions": "ต้นฉบับอนุญาตฟิลด์เมทาดาทา JSON นี้ โดยความหมายที่แน่นอนในระบบต้นทางขึ้นอยู่กับแต่ละโมเดล",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "trace",
                "required": false,
                "type": "json_value"
              },
              {
                "availability": "source_interface",
                "conditions": "provider.options ถูกปฏิเสธ",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "provider",
                "required": false,
                "type": "object"
              }
            ],
            "profile_binding": "Exact existing Ailoot model and method; interface constraints below do not assert provider qualification.",
            "unsupported": [
              "mixed input kinds",
              "empty input",
              "image/audio/file objects",
              "encoding_format=base64",
              "dimensions override"
            ]
          },
          "hints": [
            "เก็บดัชนีและจำนวนมิติของเวกเตอร์ทุกรายการ",
            "ชื่อโมเดลที่สื่อว่ารองรับข้อมูลหลายรูปแบบไม่ได้ทำให้สามารถส่งออบเจ็กต์รูปภาพผ่านเส้นทางเฉพาะนี้ได้"
          ],
          "input": {
            "content_type": "application/json",
            "dimensions_override": false,
            "encoding_format": [
              "float"
            ],
            "input_shapes": [
              "string",
              "string[]",
              "nonnegative_integer_token_array",
              "nonnegative_integer_token_array[]"
            ],
            "material_types": [
              "text",
              "token_ids"
            ],
            "max_input_budget_units": 8192,
            "multimodal_objects": false,
            "required": [
              "model",
              "input"
            ]
          },
          "lifecycle": {
            "mode": "synchronous_json",
            "unknown": "no embedding job endpoint inferred"
          },
          "manufacturer_capability": null,
          "method": {
            "http": "POST",
            "path": "/v1/embeddings"
          },
          "method_aliases": [],
          "operation_modes": [
            "text_to_embedding"
          ],
          "output": {
            "default_dimensions": null,
            "family": "embedding",
            "format": "json",
            "http_success": 200,
            "vectors": "one dense float vector per input; indices/model/usage validated"
          }
        },
        "ctx": 8192,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "อัตราราคาพื้นฐานของโทเคน",
            "units": [
              {
                "amount": "0.0004000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.0000004",
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": "0",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": "0",
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\np=json.loads('{\"model\": \"google/gemini-embedding-2\", \"input\": [\"First document\", \"Second document\"]}')\n\nPath(\"request.json\").write_text(json.dumps(p,ensure_ascii=False))\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/embeddings \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -H 'Content-Type: application/json' \\\n  --data-binary @request.json -D response-headers.txt -o result.json\npython3 - <<'PY_RESULT'\nimport json\nfrom pathlib import Path\nr=json.loads(Path(\"result.json\").read_text())\nfor x in r.get(\"data\",[]): print(json.dumps({\"index\":x.get(\"index\"),\"embedding\":x.get(\"embedding\")}))\nPY_RESULT\n",
            "label": "curl · retained exact creation",
            "language": "bash"
          },
          {
            "code": "from openai import OpenAI\nimport os\n\nclient=OpenAI(base_url=\"https://api.ailoot.ai/v1\",api_key=os.environ[\"AILOOT_API_KEY\"],max_retries=0)\nresult=client.embeddings.create(model='google/gemini-embedding-2',input=[\"First document\",\"Second document\"])\nprint(result)\nfor item in result.data:print(item.index,item.embedding)\n",
            "label": "Python SDK · all vectors",
            "language": "python"
          }
        ],
        "family": "openai",
        "fast_multiplier": 1,
        "flex_multiplier": 1,
        "fmt": "embeddings",
        "hints": [
          "Keep every vector index and dimension.",
          "Multimodal model name does not admit image objects on this exact path."
        ],
        "http": "POST",
        "in": 0.4,
        "input": [
          "text",
          "token_ids"
        ],
        "label": "Эмбеддинги",
        "max_out": null,
        "max_reasoning_effort_multiplier": 1,
        "method_aliases": [],
        "out": 0,
        "output": [
          "embedding"
        ],
        "path": "/v1/embeddings",
        "price_conditions": [
          {
            "label": "โหมดรวดเร็ว",
            "value": "อัตรามาตรฐาน",
            "when": "เมื่อเลือกโหมดรวดเร็ว"
          },
          {
            "label": "โหมดยืดหยุ่น",
            "value": "อัตรามาตรฐาน",
            "when": "เมื่อเลือกโหมด flex"
          },
          {
            "label": "ระดับการใช้เหตุผลสูงสุด",
            "value": "อัตรามาตรฐาน",
            "when": "เมื่อใช้การปรับตามค่าเริ่มต้น (default) สำหรับระดับการใช้เหตุผลสูงสุด"
          }
        ],
        "pricing": {
          "billing_mode": "token",
          "image_input_price": null,
          "image_output_price": null,
          "per_request_price": null
        },
        "pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": "0.0004000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.0000004",
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": "0",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": "0",
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          }
        ],
        "request_model_id": "google/gemini-embedding-2",
        "route_label": "Ultra",
        "status_reads": [],
        "tiers": [],
        "units": [
          {
            "amount": "0.0004000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": "0.0000004",
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": "0",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": "0",
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_read_price",
            "label": "Cache read",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "cached_input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "cached_input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_price",
            "label": "Cache write",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "generic_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "generic_cache_creation_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_1h_price",
            "label": "Cache write, 1 hour",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "one_hour_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "one_hour_cache_creation_token"
          }
        ]
      }
    }
  ],
  "model_id": "google/gemini-embedding-2",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "df1ea2f3c3fd6586d2ff86a832febed2da30789d24d960d3e5b2ea6f5602cd2f",
    "input_html_sha256": "726c70e62fda0c7d2ad95eb9e141b997b76c86208e92791c38c29afb6d98c322",
    "private_audit_sha256": "67084fd660907a6dd5478e7a4bc44fcf025c3ef819c0ef2ecc525321446def68",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/th/google-gemini-embedding-2/",
    "description": "Gemini Embedding 2 แปลงข้อความ ภาพ เสียง วิดีโอ และ PDF เข้าสู่พื้นที่เชิงตัวเลขร่วม เวกเตอร์รองรับการค้นหาข้ามชนิดสื่อ การค้นคืน จำแนก และจัดกลุ่ม พร้อมมิติยืดหยุ่นและขีดจำกัดอินพุต 8,192 โทเคน",
    "locale": "th",
    "md_url": "https://ailoot.ai/models/th/google-gemini-embedding-2/index.md",
    "title": "Google: Gemini Embedding 2 — Ailoot",
    "url": "https://ailoot.ai/models/th/google-gemini-embedding-2/"
  },
  "rawModel": {
    "about": "Gemini Embedding 2 เป็นโมเดลเอ็มเบดดิงมัลติโมดัลของ Google สำหรับแทนข้อความ ภาพ วิดีโอ เสียง และ PDF เป็นตัวเลข แปลงชนิดสื่อต่างกันเข้าพื้นที่ร่วม เพื่อให้แอปพลิเคชันเปรียบเทียบความหมายข้ามสื่อได้ ผลคือเวกเตอร์ตัวเลขที่มีประโยชน์ต่อการค้นหาเชิงความหมาย ค้นคืนเอกสาร แนะนำ จำแนก หรือจัดกลุ่ม ไม่ใช่คำตอบเป็นข้อความหรือไฟล์สื่อที่สร้างขึ้น Google ระบุขอบเขตเชิงความหมายในมากกว่า 100 ภาษา\n\nสำหรับฐานความรู้ สร้างเวกเตอร์ให้ย่อหน้าต้นฉบับ เปรียบเทียบคำค้นผู้ใช้กับเวกเตอร์ แล้วค้นคืนข้อมูลที่เกี่ยวข้อง โมเดลข้อความแยกต่างหากจึงแต่งคำตอบด้วยต้นฉบับเหล่านั้นได้ สำหรับคอลเล็กชันสื่อ คำอธิบายข้อความค้นภาพหรือวิดีโอที่เกี่ยวข้องได้ และภาพใช้เป็นคำค้นได้ด้วย รักษาความสัมพันธ์ของแต่ละเวกเตอร์กับเนื้อหาต้นฉบับ รวมการอ้างหน้าเอกสารหรือคลิป เพื่อให้ตรวจผลค้นคืนและแสดงในบริบทเดิม\n\nขีดจำกัดอินพุตรวมคือ 8,192 โทเคน คู่มือรุ่นเสถียรอนุญาตภาพ PNG หรือ JPEG สูงสุดหกภาพ เสียง MP3 หรือ WAV สูงสุด 180 วินาที และวิดีโอ MP4 หรือ MOV สูงสุด 120 วินาที codec วิดีโอตามเอกสารคือ H264, H265, AV1 และ VP9 การประมวลผลวิดีโอใช้เฟรมสูงสุด 32 เฟรม คลิปไม่เกิน 32 วินาทีสุ่มหนึ่งเฟรมต่อวินาที คลิปยาวกว่านั้นสุ่มอย่างสม่ำเสมอให้ได้ 32 เฟรม ไม่ประมวลผลแทร็กเสียงในอินพุตวิดีโอนั้น หากเสียงสำคัญต่อการค้นคืน ให้เอ็มเบดเสียงแยก\n\nอินพุต PDF รับหนึ่งไฟล์สูงสุดหกหน้า Google แนะนำหนึ่งหน้าต่อ PDF เพื่อคุณภาพดีที่สุด แบ่งต้นฉบับใหญ่เป็นหน้าหรือส่วนที่มีความหมายและรักษาความสัมพันธ์กับเอกสารเดิม เลือกข้อความตัดตอนที่แทนสิ่งควรค้นคืน แทนการรวมข้อมูลไม่เกี่ยวข้องเพียงเพราะพอดีขีดจำกัด คำขอผสมสื่อยังใช้ขอบโทเคนร่วม แต่ละหน้า PDF ใช้ 258 โทเคนภาพเพิ่มเติมจากโทเคนข้อความที่ดึงออก ในเวิร์กโฟลว์ตามเอกสาร Google เนื้อหาที่เกินขีดจำกัดร่วม 8,192 โทเคนถูกตัดโดยไม่มีข้อผิดพลาด\n\nมิติเอาต์พุตเลือกได้ยืดหยุ่นจาก 128 ถึง 3,072 โดยเริ่มต้น 3,072 และแนะนำขนาด 768, 1,536 และ 3,072 โมเดลใช้ Matryoshka Representation Learning ทำให้ส่วนต้นของเวกเตอร์ยังมีประโยชน์เมื่อมิติเล็กลง คู่มือระบุ normalization อัตโนมัติทั้งเวกเตอร์เริ่มต้นและแบบสั้น เลือกมิติสม่ำเสมอสำหรับระเบียนและคำค้นที่แอปพลิเคชันเปรียบเทียบ ขนาดที่ขอเปลี่ยนตัวแทนเชิงตัวเลข ไม่ใช่เนื้อหาต้นฉบับเอง\n\nสำหรับงานข้อความเท่านั้น ให้ใส่จุดประสงค์ในข้อความแทนฟิลด์ task_type แบบเก่า Google แยกการค้นคืนไม่สมมาตรจากการเปรียบเทียบสมมาตร คำค้นใช้ “task: search result | query: {content}” ส่วนเอกสารต้นฉบับใช้ “title: {title} | text: {content}” หากไม่มีชื่อให้ใช้ “title: none” งานถามตอบ ตรวจข้อเท็จจริง และค้นคืนโค้ดมีคำนำหน้าคำค้นของตน สำหรับจำแนก จัดกลุ่ม หรือความคล้ายประโยค ให้ใช้รูปแบบงานเดียวกันสม่ำเสมอทั้งสองด้าน คู่มือโดยทั่วไปแนะนำไม่เพิ่มคำนำหน้างานให้ส่วนข้อความของตัวแทนมัลติโมดัลที่รวมกัน\n\nโครงสร้างอินพุตกำหนดว่าผลแทนวัตถุรวมหนึ่งชิ้นหรือรายการแยกกัน หลายส่วนที่ให้ร่วมกันสร้างเอ็มเบดดิงรวม ส่วนออบเจ็กต์ Content ที่แยกสร้างเอ็มเบดดิงแยกสำหรับแต่ละรายการ โพสต์ที่มีข้อความและภาพใช้ตัวแทนรวมเพื่อเก็บความสัมพันธ์ได้ ระเบียนที่ต้องค้นได้อิสระควรแยกกัน ทางเลือกนี้มีผลต่อหน่วยค้นคืน หนึ่งเวกเตอร์สำหรับโพสต์ทั้งหมดต่างจากหนึ่งตัวต่อแต่ละย่อหน้าหรือภาพ\n\nคู่มือระบุว่าเวกเตอร์จาก Gemini Embedding 001 และ Gemini Embedding 2 อยู่ในพื้นที่ที่เข้ากันไม่ได้และเปรียบเทียบตรงไม่ได้ คอลเล็กชันที่ย้ายจากโมเดลเก่าต้องเอ็มเบดใหม่สำหรับพื้นที่ใหม่ รักษาการเลือกโมเดลและมิติให้สอดคล้องกับเวกเตอร์ที่เปรียบเทียบ และเก็บข้อความกับสื่อต้นฉบับแยกจากดัชนีเชิงตัวเลข ความคล้ายเอ็มเบดดิงเป็นสัญญาณค้นคืน ไม่ใช่คำอธิบายข้อเท็จจริงว่าเหตุใดเอกสารตอบคำถามผู้ใช้\n\nสำหรับแคตตาล็อกจริง เอ็มเบดภาพสินค้าร่วมกับคำอธิบายที่อนุมัติเมื่อควรค้นคู่ข้อมูลเป็นวัตถุเดียว สำหรับคอลเล็กชันเอกสาร เอ็มเบดย่อหน้าที่เจาะจงและเปรียบเทียบกับคำค้นที่จัดรูปแบบตามจุดประสงค์ แล้วแสดงย่อหน้าต้นฉบับกับผลค้นหา สำหรับเสียงหรือวิดีโอ เลือกช่วงที่อธิบายเหตุการณ์ที่ต้องค้นและรักษาช่วงเวลาเดิม สิ่งส่งมอบที่มีประโยชน์คือตัวแทนเชิงตัวเลขที่ผูกกับหลักฐานต้นฉบับสำหรับขั้นตอนค้นหาหรือวิเคราะห์ถัดไปของแอปพลิเคชัน",
    "alias_of": null,
    "aliases": [],
    "author": "Google",
    "available": null,
    "canonical_model": "google/gemini-embedding-2",
    "capabilities": {
      "context_length": 8192,
      "manufacturer_input": [
        "text",
        "image",
        "file",
        "audio",
        "video"
      ],
      "manufacturer_output": [
        "embeddings"
      ]
    },
    "card_routes": [
      {
        "label": "Ultra",
        "rates": [
          {
            "amount": "0.0004000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": "0.0000004",
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": "0",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": "0",
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          }
        ],
        "summary": "ดูราคาตามการกำหนดค่าแบบครบถ้วนในรายละเอียด"
      }
    ],
    "ctx": 8192,
    "entity_type": "model",
    "formats": [
      "embeddings"
    ],
    "id": "google/gemini-embedding-2",
    "input": [
      "text",
      "token_ids"
    ],
    "kind": "embedding",
    "max_out": null,
    "methods": [
      {
        "available": null,
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Keep every vector with its index. Vector count must equal input count; dimensions must be consistent.",
            "errors": [
              {
                "code": null,
                "condition": "ฟิลด์จำเป็น รูปแบบการแทนข้อมูล หรือค่าพารามิเตอร์ไม่ถูกต้อง",
                "http_status": 400,
                "recovery": "แก้ฟิลด์ที่ระบุก่อนส่งคำขอสร้างครั้งใหม่",
                "type": "invalid_request_error"
              }
            ],
            "hints": [],
            "ignored_fields": [],
            "lifecycle": {
              "create": {
                "http": "POST",
                "path": "/v1/embeddings"
              },
              "job_read": null,
              "mode": "synchronous_json",
              "unknown": "ไม่มีการเพิ่มจุดเชื่อมต่อสำหรับงานสร้างเวกเตอร์ตัวแทนข้อมูล"
            },
            "material_combinations": [
              {
                "alternatives": [
                  "string",
                  "string[]",
                  "nonnegative_integer_token_array",
                  "nonnegative_integer_token_array[]"
                ],
                "mode": "text_to_embedding"
              }
            ],
            "operation_modes": [
              "single_embedding",
              "batched_embeddings"
            ],
            "outputs": {
              "all_results": "เก็บเวกเตอร์ทุกรายการพร้อมดัชนีของแต่ละรายการ จำนวนเวกเตอร์ต้องเท่ากับจำนวนข้อมูลนำเข้า และจำนวนมิติต้องสอดคล้องกัน",
              "default_dimensions": null,
              "family": "embedding",
              "fields": [
                {
                  "description": null,
                  "name": "object",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "model",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "data[].index",
                  "type": "integer"
                },
                {
                  "description": null,
                  "name": "data[].embedding",
                  "type": "finite float[]"
                },
                {
                  "description": null,
                  "name": "usage",
                  "type": "object"
                }
              ],
              "format": "json"
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "google/gemini-embedding-2"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "budget": {
                  "maximum": 8192,
                  "text_unit": "ไบต์ UTF8",
                  "token_unit": "องค์ประกอบในอาร์เรย์โทเค็น"
                },
                "conditions": "ชุดข้อมูลต้องไม่ว่างและประกอบด้วยข้อมูลชนิดเดียวกัน ID โทเคนต้องเป็นจำนวนเต็มที่ไม่ติดลบ",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "min_items": 1,
                "name": "input",
                "required": true,
                "type": "string|string[]|integer[]|integer[][]"
              },
              {
                "availability": "source_interface",
                "default": "float",
                "default_known": true,
                "enum": [
                  "float"
                ],
                "enum_known": true,
                "name": "encoding_format",
                "required": false,
                "type": "string"
              },
              {
                "availability": "unsupported",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "minimum": 1,
                "name": "dimensions",
                "required": false,
                "type": "integer"
              },
              {
                "availability": "pass_through_metadata",
                "conditions": "ต้นฉบับอนุญาตฟิลด์เมทาดาทา JSON นี้ โดยความหมายที่แน่นอนในระบบต้นทางขึ้นอยู่กับแต่ละโมเดล",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "user",
                "required": false,
                "type": "json_value"
              },
              {
                "availability": "pass_through_metadata",
                "conditions": "ต้นฉบับอนุญาตฟิลด์เมทาดาทา JSON นี้ โดยความหมายที่แน่นอนในระบบต้นทางขึ้นอยู่กับแต่ละโมเดล",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "session_id",
                "required": false,
                "type": "json_value"
              },
              {
                "availability": "pass_through_metadata",
                "conditions": "ต้นฉบับอนุญาตฟิลด์เมทาดาทา JSON นี้ โดยความหมายที่แน่นอนในระบบต้นทางขึ้นอยู่กับแต่ละโมเดล",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "trace",
                "required": false,
                "type": "json_value"
              },
              {
                "availability": "source_interface",
                "conditions": "provider.options ถูกปฏิเสธ",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "provider",
                "required": false,
                "type": "object"
              }
            ],
            "profile_binding": "Exact existing Ailoot model and method; interface constraints below do not assert provider qualification.",
            "unsupported": [
              "mixed input kinds",
              "empty input",
              "image/audio/file objects",
              "encoding_format=base64",
              "dimensions override"
            ]
          },
          "hints": [
            "เก็บดัชนีและจำนวนมิติของเวกเตอร์ทุกรายการ",
            "ชื่อโมเดลที่สื่อว่ารองรับข้อมูลหลายรูปแบบไม่ได้ทำให้สามารถส่งออบเจ็กต์รูปภาพผ่านเส้นทางเฉพาะนี้ได้"
          ],
          "input": {
            "content_type": "application/json",
            "dimensions_override": false,
            "encoding_format": [
              "float"
            ],
            "input_shapes": [
              "string",
              "string[]",
              "nonnegative_integer_token_array",
              "nonnegative_integer_token_array[]"
            ],
            "material_types": [
              "text",
              "token_ids"
            ],
            "max_input_budget_units": 8192,
            "multimodal_objects": false,
            "required": [
              "model",
              "input"
            ]
          },
          "lifecycle": {
            "mode": "synchronous_json",
            "unknown": "no embedding job endpoint inferred"
          },
          "manufacturer_capability": null,
          "method": {
            "http": "POST",
            "path": "/v1/embeddings"
          },
          "method_aliases": [],
          "operation_modes": [
            "text_to_embedding"
          ],
          "output": {
            "default_dimensions": null,
            "family": "embedding",
            "format": "json",
            "http_success": 200,
            "vectors": "one dense float vector per input; indices/model/usage validated"
          }
        },
        "ctx": 8192,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "อัตราราคาพื้นฐานของโทเคน",
            "units": [
              {
                "amount": "0.0004000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.0000004",
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": "0",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": "0",
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\np=json.loads('{\"model\": \"google/gemini-embedding-2\", \"input\": [\"First document\", \"Second document\"]}')\n\nPath(\"request.json\").write_text(json.dumps(p,ensure_ascii=False))\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/embeddings \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -H 'Content-Type: application/json' \\\n  --data-binary @request.json -D response-headers.txt -o result.json\npython3 - <<'PY_RESULT'\nimport json\nfrom pathlib import Path\nr=json.loads(Path(\"result.json\").read_text())\nfor x in r.get(\"data\",[]): print(json.dumps({\"index\":x.get(\"index\"),\"embedding\":x.get(\"embedding\")}))\nPY_RESULT\n",
            "label": "curl · retained exact creation",
            "language": "bash"
          },
          {
            "code": "from openai import OpenAI\nimport os\n\nclient=OpenAI(base_url=\"https://api.ailoot.ai/v1\",api_key=os.environ[\"AILOOT_API_KEY\"],max_retries=0)\nresult=client.embeddings.create(model='google/gemini-embedding-2',input=[\"First document\",\"Second document\"])\nprint(result)\nfor item in result.data:print(item.index,item.embedding)\n",
            "label": "Python SDK · all vectors",
            "language": "python"
          }
        ],
        "family": "openai",
        "fast_multiplier": 1,
        "flex_multiplier": 1,
        "fmt": "embeddings",
        "hints": [
          "Keep every vector index and dimension.",
          "Multimodal model name does not admit image objects on this exact path."
        ],
        "http": "POST",
        "in": 0.4,
        "input": [
          "text",
          "token_ids"
        ],
        "label": "Эмбеддинги",
        "max_out": null,
        "max_reasoning_effort_multiplier": 1,
        "method_aliases": [],
        "out": 0,
        "output": [
          "embedding"
        ],
        "path": "/v1/embeddings",
        "price_conditions": [
          {
            "label": "โหมดรวดเร็ว",
            "value": "อัตรามาตรฐาน",
            "when": "เมื่อเลือกโหมดรวดเร็ว"
          },
          {
            "label": "โหมดยืดหยุ่น",
            "value": "อัตรามาตรฐาน",
            "when": "เมื่อเลือกโหมด flex"
          },
          {
            "label": "ระดับการใช้เหตุผลสูงสุด",
            "value": "อัตรามาตรฐาน",
            "when": "เมื่อใช้การปรับตามค่าเริ่มต้น (default) สำหรับระดับการใช้เหตุผลสูงสุด"
          }
        ],
        "pricing": {
          "billing_mode": "token",
          "image_input_price": null,
          "image_output_price": null,
          "per_request_price": null
        },
        "pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": "0.0004000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.0000004",
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": "0",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": "0",
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          }
        ],
        "request_model_id": "google/gemini-embedding-2",
        "route_label": "Ultra",
        "status_reads": [],
        "tiers": [],
        "units": [
          {
            "amount": "0.0004000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": "0.0000004",
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": "0",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": "0",
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_read_price",
            "label": "Cache read",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "cached_input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "cached_input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_price",
            "label": "Cache write",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "generic_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "generic_cache_creation_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_1h_price",
            "label": "Cache write, 1 hour",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "one_hour_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "one_hour_cache_creation_token"
          }
        ]
      }
    ],
    "model_aliases": [
      {
        "canonical_model_id": "google/gemini-embedding-2",
        "request_model_id": "google/gemini-embedding-2",
        "route_label": "Ultra"
      }
    ],
    "name": "Google: Gemini Embedding 2",
    "price": {
      "in": 0.4,
      "in_label": null,
      "out": 0,
      "out_label": null,
      "scope_label": "Token rates",
      "sort_in": 0.4,
      "sort_out": 0,
      "varies": false
    },
    "pricing_profiles": [
      {
        "dimensions": {
          "regime": "base"
        },
        "label": "Эмбеддинги · Base token rates",
        "units": [
          {
            "amount": "0.0004000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": "0.0000004",
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": "0",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": "0",
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_read_price",
            "label": "Cache read",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "cached_input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "cached_input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_price",
            "label": "Cache write",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "generic_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "generic_cache_creation_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_1h_price",
            "label": "Cache write, 1 hour",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "one_hour_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "one_hour_cache_creation_token"
          }
        ]
      }
    ],
    "public_id": "google/gemini-embedding-2",
    "short": "Gemini Embedding 2 แปลงข้อความ ภาพ เสียง วิดีโอ และ PDF เข้าสู่พื้นที่เชิงตัวเลขร่วม เวกเตอร์รองรับการค้นหาข้ามชนิดสื่อ การค้นคืน จำแนก และจัดกลุ่ม พร้อมมิติยืดหยุ่นและขีดจำกัดอินพุต 8,192 โทเคน"
  },
  "renderer_schema": {
    "method_order": "Original DTO methods order; every exact route/format/path/caller survives.",
    "prices": "Original public DTO fields and original native display HTML; no flattened or normalized offers."
  },
  "representation": "exact-public-dto-and-native-renderer-html",
  "representationNotes": {
    "current_reference": {
      "about_json_pointer": "/aboutHtml",
      "methods": [
        {
          "contract_json_pointer": "/methods/0/rawMethod/contract",
          "html_json_pointer": "/methods/0/html",
          "method_ordinal": 0
        }
      ],
      "role": "current-semantic-reference"
    },
    "raw_input": {
      "examples_role": "historical-input-not-current-ready-examples",
      "json_pointers": [
        "/rawModel",
        "/methods/0/rawMethod"
      ],
      "role": "historical-owner-input"
    },
    "schema": "ailoot-native-model-representations-v1"
  },
  "schema": "ailoot-static-model-facts-v1",
  "schema_version": 1,
  "shortText": "Gemini Embedding 2 แปลงข้อความ ภาพ เสียง วิดีโอ และ PDF เข้าสู่พื้นที่เชิงตัวเลขร่วม เวกเตอร์รองรับการค้นหาข้ามชนิดสื่อ การค้นคืน จำแนก และจัดกลุ่ม พร้อมมิติยืดหยุ่นและขีดจำกัดอินพุต 8,192 โทเคน",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "39b5540a00aaaaeaf9e61759296e5653146d355cc026b2a68e8dbe3a4e7fa8a9",
    "renderer_sha256": "890edb706fafafdd4f598bb324acf65fada58918b0911b97eb80e68be2ef65d9"
  },
  "sourceRevision": "721a52354ef96c8e04c87375129ec3d36ab811db084aa8f55eb22c7daed957e0"
}
