Endpointy
Embeddingi
POST /embeddings: zamień tekst na wektory do wyszukiwania semantycznego, klasteryzacji i RAG, w formacie zgodnym z OpenAI.
Wypróbuj w playgroundZamień tekst na wektory do wyszukiwania semantycznego, klasteryzacji, deduplikacji i generowania wspomaganego wyszukiwaniem (RAG). Endpoint ma taki sam kształt jak POST /embeddings z OpenAI, więc client.embeddings.create(...) działa bez zmian.
POST https://api14.com/api/v1/embeddings
Żądanie
| Parametr | Typ | Wymagany | Opis |
|---|---|---|---|
model | string | tak | Identyfikator modelu embeddingów, np. openai/text-embedding-3-small. |
input | string or string[] | tak | Tekst do osadzenia. Przekaż tablicę, aby osadzić wiele wejść w jednym żądaniu. |
dimensions | integer | nie | Rozmiar wektora wyjściowego, dla modeli obsługujących skracanie (np. text-embedding-3-*). |
encoding_format | string | nie | float (domyślnie) lub base64. |
user | string | nie | Własny identyfikator użytkownika końcowego, przekazywany dalej do dostawcy. |
provider | object | nie | Preferencje routingu dostawców. Zobacz Routing dostawców. |
Przykład
import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://api14.com/api/v1",
apiKey: process.env.API14_API_KEY,
});
const result = await client.embeddings.create({
"model": "openai/text-embedding-3-small",
"input": [
"The quick brown fox",
"Lorem ipsum"
]
});
console.log(result.data.map((d) => d.embedding.length));
Odpowiedź
{
"object": "list",
"data": [
{ "object": "embedding", "index": 0, "embedding": [0.0023, -0.0091, 0.0154, "..."] }
],
"model": "openai/text-embedding-3-small",
"usage": { "prompt_tokens": 8, "total_tokens": 8, "cost": 0.00000016 }
}
data[i].index odpowiada pozycji wejścia w Twojej tablicy input.
Wybór modelu
Wyświetl modele embeddingów wraz z cenami, bez klucza API:
curl https://api14.com/api/v1/embeddings/models
# or, with categories and our prices:
curl "https://api14.com/api/v1/models?category=embeddings"
Wektorów z różnych modeli nie można ze sobą porównywać. Zapisuj identyfikator modelu obok każdego wektora i osadź korpus ponownie, gdy zmieniasz model.
Cennik
Embeddingi są rozliczane za token wejściowy według ceny podanej przy modelu, wyświetlanej jako "$ / 1M tokenów". Koszt każdego żądania jest zwracany w usage.cost (USD) i pobierany z Twojego salda. Zobacz Ceny i rozliczenia.
Wskazówki
- Grupuj wejścia: jedno żądanie ze 100 ciągami jest szybsze i liczy się jako jedno żądanie względem Twojego limitu zapytań.
- Utrzymuj każde wejście poniżej długości kontekstu modelu; dłuższy tekst jest odrzucany przez dostawcę.
- Normalizuj wektory (większość modeli zwraca już wektory jednostkowe) i używaj podobieństwa cosinusowego.
Błędy
| Status | Kod | Kiedy |
|---|---|---|
| 400 | model_required / invalid_json | Brak model lub ciało nie jest obiektem JSON. |
| 401 | invalid_api_key | Brak klucza lub klucz jest nieprawidłowy. |
| 402 | insufficient_balance | Twoje saldo w USD wynosi 0 USD. |
| 403 | model_not_allowed | Lista dozwolonych modeli klucza wyklucza ten model. |
| 404 | model_not_found | Nieznany lub wyłączony identyfikator modelu. |
| 429 | rate_limited | Przekroczono limit zapytań na minutę. |
Pełna lista: Błędy.