Lewati ke konten
kenari.

Embeddings

Ubah teks menjadi vektor untuk pencarian, pengelompokan, dan retrieval. Endpoint ini kompatibel dengan OpenAI Embeddings API, jadi SDK resmi OpenAI cukup diarahkan ke base URL yang baru.

POST /v1/embeddings

Endpoint ini hanya melayani model embedding. Kalau dipanggil dengan model chat, hasilnya 400. Lihat model embedding yang sedang tersedia lewat panggilan publik yang tidak butuh key:

Terminal window
curl "https://kenari.id/v1/models?modality=embedding"

GET /v1/models tanpa parameter tidak mendaftar model embedding, rerank, moderasi, atau System One. Panggilan itu mendaftar model chat, gambar, suara, transkripsi, dan video. Contoh di bawah memakai bge-m3. Ganti dengan id mana pun yang dikembalikan panggilan di atas. Harga ada di Model & harga.

FieldTipeWajibKeterangan
modelstringyaId model embedding.
inputstring atau array stringyaSatu teks, atau beberapa teks dalam satu request. Array harus berisi minimal satu teks, dan setiap teks harus berupa string yang punya isi selain spasi. Maksimum 2.048 teks dan 1 MiB teks secara total.

Field OpenAI lain, seperti encoding_format, diteruskan ke provider. Apakah field itu berpengaruh bergantung pada modelnya.

Response mengikuti bentuk OpenAI. Vektor pada contoh dipersingkat supaya mudah dibaca. Vektor sebenarnya punya jauh lebih banyak nilai. object bernilai "list", model adalah id yang kamu minta, dan data berisi satu entri per input dengan urutan yang sama, lengkap dengan index dan vektor embedding. Objek usage hanya muncul kalau provider melaporkan jumlah token.

{
"object": "list",
"model": "bge-m3",
"data": [
{ "object": "embedding", "index": 0, "embedding": [0.0123, -0.0456] }
]
}
Terminal window
curl https://kenari.id/v1/embeddings \
-H "Authorization: Bearer $KENARI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "bge-m3",
"input": "kucing duduk di atas karpet"
}'
import os
from openai import OpenAI
client = OpenAI(
base_url="https://kenari.id/v1",
api_key=os.environ["KENARI_API_KEY"],
)
result = client.embeddings.create(
model="bge-m3",
input="kucing duduk di atas karpet",
)
print(result.data[0].embedding[:5])
import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://kenari.id/v1",
apiKey: process.env.KENARI_API_KEY,
});
const result = await client.embeddings.create({
model: "bge-m3",
input: "kucing duduk di atas karpet",
});
console.log(result.data[0].embedding.slice(0, 5));

Embeddings ditagih per token input. kenari memperkirakan jumlah token dari teks yang kamu kirim, jadi biayanya tidak bergantung pada angka yang dilaporkan provider. Lihat Cara penagihan untuk saldo dan dimensi harga.

StatusKodeKapan
400bad_requestmodel tidak dikenal atau bukan model embedding, input tidak ada, berupa array kosong, atau berisi item kosong, hanya spasi, atau bukan string, atau request melewati batas 2.048 teks atau 1 MiB.
400model_not_foundModelnya terdaftar tetapi saat ini tidak ada provider yang melayaninya. Coba lagi nanti.
503upstream_error, all_providers_failedTidak ada provider yang mengembalikan response yang bisa dipakai. Kamu tidak ditagih. Coba lagi.

Kalau model bukan model embedding, pesan error menyebutkan id embedding yang tersedia. Kode error lainnya ada di Error.