Tekstas įeina, vektoriai išeina.
Su OpenAI suderinamas embeddingų API, paremtas bge-m3 modeliu. Nukreipkite bet kurį OpenAI klientą į šį adresą, siųskite tekstų paketą ir atgausite vektorius. Jūsų raktas turi savo limitus ir savo tokenų biudžetą.
https://embed.letas.lt01 Greita pradžia
Viena užklausa, vienas vektorius. Įrašykite raktą, kurį jums išdavė operatorius.
curl https://embed.letas.lt/v1/embeddings \
-H "Authorization: Bearer sk-rag-…" \
-H "Content-Type: application/json" \
-d '{"model":"bge-m3","input":"labas rytas"}'02 Paketinis apdorojimas
Siųskite masyvą ir apdorosite iki 25 tekstų viena užklausa — daug greičiau nei po vieną. Viršijus limitą užklausa atmetama su 400, o ne tyliai apkarpoma.
curl https://embed.letas.lt/v1/embeddings \
-H "Authorization: Bearer sk-rag-…" \
-H "Content-Type: application/json" \
-d '{"model":"bge-m3","input":["pirmas tekstas","antras tekstas","trečias tekstas"]}'Vektoriai grįžta ta pačia tvarka, kuria juos išsiuntėte, todėl galite iš karto priskirti juos savo įrašams.
03 Natyvus Ollama adresas
Jei jūsų klientas kalba su Ollama, o ne su OpenAI, naudokite /api/embed. Tas pats raktas, tie patys limitai, tie patys paketai — skiriasi tik atsakymo struktūra.
curl https://embed.letas.lt/api/embed \
-H "Authorization: Bearer sk-rag-…" \
-H "Content-Type: application/json" \
-d '{"model":"bge-m3","input":["pirmas tekstas","antras tekstas"]}'04 Su OpenAI SDK
Atskiro kliento nereikia — pakeiskite bazinį adresą ir dirbkite toliau.
from openai import OpenAI
client = OpenAI(base_url="https://embed.letas.lt/v1", api_key="sk-rag-…")
vektoriai = client.embeddings.create(
model="bge-m3",
input=["pirmas tekstas", "antras tekstas"],
)
print(len(vektoriai.data), "vektoriai")05 Ką leidžia jūsų raktas
Tai numatytieji limitai naujam raktui; jūsų gali skirtis — juos nustato operatorius kiekvienam raktui atskirai. Kiekvienas atsakymas raktui su biudžetu turi X-Token-Budget-Remaining antraštę, todėl savo sunaudojimą matote patys, nieko neklausdami.
06 Kai serveris apkrautas
Užklausos rikiuojamos į eilę, o ne atmetamos. Esant apkrovai jūsų užklausa laukia laisvos vietos, o ne krenta su klaida — staigus srautas virsta ilgesniu atsakymo laiku, o ne klaidų lavina, todėl kartoti užklausų nereikia. Niekas nelieka pamirštas: ilgiau laukusi užklausa praleidžiama pirmiau už aukštesnio prioriteto srautą.
07 Ką reiškia atsakymų kodai
| Kodas | Reikšmė | Ką daryti |
|---|---|---|
| 200 | Vektoriai grąžinti | — |
| 400 | Netaisyklingas JSON arba per daug tekstų viename pakete | Pataisykite užklausą |
| 401 | Rakto nėra, jis neteisingas arba atšauktas | Patikrinkite raktą |
| 402 | Tokenų biudžetas išnaudotas | Palaukite mėnesio atnaujinimo arba paprašykite papildyti |
| 429 | Per daug užklausų per minutę | Kartokite po Retry-After antraštėje nurodyto laiko |
| 502 | Embeddingų serveris nepasiekiamas | Pakartokite netrukus |
| 503 | Užklausa nutraukta belaukiant eilėje | Pakartokite |
Klaidos grąžinamos OpenAI formatu ({"error":{"message","type"}}), todėl OpenAI SDK apdoroja jas įprastu būdu.
08 Kaip gauti raktą
Raktus išduoda operatorius — savitarnos registracijos nėra. Parašykite mums ir trumpai nurodykite, kiek maždaug tekstų planuojate apdoroti, kad paketo, dažnio ir biudžeto limitai būtų nustatyti prasmingai.
Raktą laikykite paslaptyje: saugoma tik jo maiša (hash), todėl pamesto rakto atkurti neįmanoma — tik išduoti naują.
09 Nesate tikri, ar jums to reikia?
Parašėme išsamų straipsnį apie tai, kas yra embeddingai, kada jų verta imtis, kada tikrai neverta, ir ką daryti su asmens duomenimis pagal BDAR.