BazaarLinkBazaarLink
เข้าสู่ระบบ
เอกสารAPI ข้อมูลอ้างอิงSDK ข้อมูลอ้างอิงการใช้งาน AgentAI ทักษะ
สารบัญ

Embeddings

Embeddings

Embeddings คือการแทนค่าตัวเลขของข้อความที่จับความหมายเชิงความหมาย (semantic) — แปลงข้อความเป็นเวกเตอร์ (ชุดตัวเลข) ที่นำไปใช้กับงาน machine learning ได้หลากหลาย BazaarLink มี endpoint แบบรวมศูนย์ที่รองรับ OpenAI Embeddings API ให้คุณเรียกใช้โมเดล embedding จากหลายผู้ให้บริการผ่านอินเทอร์เฟซเดียว

response ของ embedding ใช้ request ID แบบ opaque ของ BazaarLink ที่ตรงกับ x-request-id ใช้ร่วมกับ GET /v1/generation response แบบ non-streaming จะส่ง ID เดียวกันใน x-generation-id ด้วย usage.cost คือจำนวนเงิน USD ที่เรียกเก็บจากลูกค้าสำหรับ request นี้ สถิติอาจพร้อมใช้งานหลังเสร็จสิ้นไม่กี่วินาที หากได้ 404 ให้ลองซ้ำช่วงสั้นๆ

Embeddings คืออะไร?

Embeddings แปลงข้อความเป็นเวกเตอร์มิติสูง โดยข้อความที่มีความหมายใกล้เคียงกันจะอยู่ใกล้กันในปริภูมิเวกเตอร์ — เช่น "cat" กับ "kitten" จะมี embedding ที่คล้ายกัน แต่ "cat" กับ "airplane" จะอยู่ห่างกันมาก การแทนค่าแบบเวกเตอร์นี้ทำให้เครื่องจักรเข้าใจความสัมพันธ์ระหว่างข้อความ ซึ่งเป็นรากฐานของแอปพลิเคชัน AI จำนวนมาก

กรณีการใช้งานทั่วไป

กรณีการใช้งาน
คำอธิบาย
RAG (รุ่นที่ดึงข้อมูลเพิ่ม)สร้างระบบที่ดึงบริบทที่เกี่ยวข้องจากฐานความรู้ก่อนสร้างคำตอบ — embeddings ช่วยหาเอกสารที่เกี่ยวข้องที่สุดเพื่อใส่ในบริบทของ LLM
การค้นหาเชิงความหมาย (Semantic Search)แปลงเอกสารและคำค้นหาเป็น embeddings แล้วหาเอกสารที่เกี่ยวข้องที่สุดด้วยความคล้ายคลึงของเวกเตอร์ — เข้าใจความหมายแทนที่จะจับคู่แค่คำสำคัญ ให้ผลลัพธ์ดีกว่าการค้นหาด้วยคำสำคัญ
ระบบแนะนำสร้าง embeddings สำหรับสินค้า บทความ วิดีโอ และความชอบของผู้ใช้เพื่อแนะนำรายการที่คล้ายกัน — การเปรียบเทียบเวกเตอร์หารายการที่เกี่ยวข้องเชิงความหมายได้แม้ไม่มีคำสำคัญร่วมกัน
การจัดกลุ่มและจำแนกประเภทจัดกลุ่มเอกสารที่คล้ายกันหรือจำแนกข้อความโดยวิเคราะห์รูปแบบ embedding — เอกสารที่มี embedding คล้ายกันมักอยู่หัวข้อหรือหมวดหมู่เดียวกัน
ตรวจจับเนื้อหาซ้ำหาเนื้อหาที่ซ้ำหรือใกล้เคียงกันโดยเปรียบเทียบความคล้ายคลึงของ embedding — ใช้ได้แม้เนื้อหาถูกเขียนใหม่ด้วยถ้อยคำต่างกัน
ตรวจจับความผิดปกติระบุเนื้อหาที่ผิดปกติหรือหลุดกรอบโดยหา embedding ที่เบี่ยงเบนไปจากรูปแบบทั่วไปของชุดข้อมูลอย่างมีนัยสำคัญ
POST/v1/embeddings
Note
หากแหล่ง upstream ไม่รองรับโมเดล embeddings ที่ร้องขอ คำขออาจลองใช้แหล่งอื่นที่พร้อมใช้งานได้ หากไม่มีแหล่งที่รองรับ คำขอจะได้รับข้อผิดพลาด

พารามิเตอร์

modelจำเป็น
string
โมเดล embedding ที่จะใช้ เช่น "openai/text-embedding-3-small"
inputจำเป็น
string | string[] | ContentItem[]
ข้อความที่จะแปลงเป็น embedding — สตริงเดียว, อาร์เรย์ของสตริงสำหรับเรียกแบบ batch ครั้งเดียว หรือ (สำหรับโมเดลที่รองรับ) อาร์เรย์ของรายการ {content:[...]} ที่ผสมส่วน text และ image_url
dimensions
integer
ขนาดเวกเตอร์ผลลัพธ์ที่ร้องขอ ใช้ได้เฉพาะกับโมเดลที่รองรับมิติแบบปรับได้ (เช่น ตระกูล OpenAI text-embedding-3) ส่งต่อไปยังผู้ให้บริการ upstream ตามเดิมและถูกละเว้นในโมเดลที่ไม่รองรับ
encoding_format
string
รูปแบบการเข้ารหัส embedding ที่ร้องขอ เช่น "float" หรือ "base64" ส่งต่อไปยังผู้ให้บริการ upstream ตามเดิม — การรองรับขึ้นอยู่กับโมเดล
provider
object
Unsupported. The entire object is ignored and removed before forwarding; it cannot select an upstream or price tier.

คำขอพื้นฐาน

from openai import OpenAI

client = OpenAI(
    base_url="https://api.bazaarlink.ai/v1",
    api_key="sk-bl-YOUR_API_KEY",
)

response = client.embeddings.create(
    model="openai/text-embedding-3-small",
    input="The quick brown fox jumps over the lazy dog",
)

print(response.data[0].embedding)  # 1536-dimensional vector

การประมวลผลแบบ Batch

ส่งอาร์เรย์ของสตริงเพื่อแปลงข้อความหลายรายการเป็น embedding ในคำขอเดียว — ถูกกว่าและเร็วกว่าการเรียกทีละข้อความ

response = client.embeddings.create(
    model="openai/text-embedding-3-small",
    input=[
        "Machine learning is a subset of artificial intelligence",
        "Deep learning uses neural networks with multiple layers",
        "Natural language processing enables computers to understand text",
    ],
)

for i, item in enumerate(response.data):
    print(f"Embedding {i}: {len(item.embedding)} dimensions")

อินพุตหลายรูปแบบ (รูปภาพ + ข้อความ)

โมเดลที่รองรับอินพุตรูปภาพ (output_modalities มี "embeddings" และ inputModalities มี "image") รับรายการอินพุตรูปแบบ {content:[{type:"text",...}, {type:"image_url",...}]} ทำให้คุณแปลงรูปภาพเดี่ยว ๆ หรือร่วมกับข้อความเป็น embedding ได้

ขึ้นอยู่กับโมเดล
มีเพียงบางโมเดล embedding เท่านั้นที่รับอินพุตรูปภาพ — ตรวจสอบโมดัลิตีที่โมเดลรองรับในหน้า Models ก่อนส่งเนื้อหา image_url โมเดลที่รองรับเฉพาะข้อความจะปฏิเสธรูปแบบนี้
import requests

response = requests.post(
    "https://api.bazaarlink.ai/v1/embeddings",
    headers={
        "Authorization": "Bearer sk-bl-YOUR_API_KEY",
        "Content-Type": "application/json",
    },
    json={
        "model": "google/gemini-embedding-2-preview",
        "input": [{
            "content": [
                {"type": "text", "text": "A scenic boardwalk through a green meadow"},
                {"type": "image_url", "image_url": {"url": "https://example.com/boardwalk.jpg"}},
            ]
        }],
        "encoding_format": "float",
    },
)

embedding = response.json()["data"][0]["embedding"]
print(f"Embedding dimension: {len(embedding)}")

การค้นหาโมเดล Embedding

ไม่มี endpoint สำหรับแสดงรายการโมเดล embedding โดยเฉพาะ — เรียก GET /v1/models แล้วกรองฝั่งไคลเอนต์หารายการที่ output_modalities มี "embeddings" หรือดูที่หน้า Models

ข้อจำกัด

  • ไม่รองรับ streaming — embeddings จะถูกส่งกลับเป็นการตอบสนองแบบสมบูรณ์เสมอ ต่างจาก chat completions
  • แต่ละโมเดลมีความยาวอินพุตสูงสุด ข้อความที่เกินขีดจำกัดจะถูกตัดหรือปฏิเสธที่ upstream
  • embeddings สำหรับอินพุตเดียวกันมีความแน่นอน (deterministic) — ไม่มี temperature หรือความสุ่มเข้ามาเกี่ยวข้อง

แนวทางปฏิบัติที่ดี

  • เลือกโมเดลตามความสมดุลระหว่างความเร็ว/คุณภาพ/ต้นทุน — โมเดลขนาดเล็ก (เช่น qwen/qwen3-embedding-4b) ถูกกว่าและเร็วกว่า ส่วนโมเดลขนาดใหญ่ (เช่น openai/text-embedding-3-large) มักให้ผลลัพธ์แม่นยำกว่า
  • รวมข้อความหลายรายการไว้ในคำขอเดียวแทนการเรียกทีละข้อความ — ลดจำนวนรอบการเรียกและ overhead
  • แคชผลลัพธ์ไว้ — embedding ของอินพุตเดียวกันจะไม่เปลี่ยนแปลง ควรเก็บไว้แทนการสร้างใหม่
  • เปรียบเทียบด้วย cosine similarity แทน Euclidean distance — ไม่ขึ้นกับสเกลและเหมาะกับเวกเตอร์มิติสูงกว่า
  • ระวังความยาว context ของแต่ละโมเดล — เอกสารยาวอาจต้องแบ่งเป็นส่วน (chunking) ก่อนแปลงเป็น embedding
Support
Hi! How can we help you?
Send a message and we'll get back to you soon.
Embeddings | BazaarLink