APIMaster.ai

text-embedding-3-small · Wysyłanie żądania

Model embeddingów OpenAI z domyślnie 1536 wymiarami do wyszukiwania semantycznego i indeksowania baz wiedzy. W APIMaster przetestowano również 512 wymiarów przez dimensions.

Model embeddingów OpenAI z domyślnie 1536 wymiarami do wyszukiwania semantycznego i indeksowania baz wiedzy. W APIMaster przetestowano również 512 wymiarów przez dimensions.

Sprawdzono 2026-10-02: aktywna trasa od $0.02 za milion tokenów wejściowych. To cena trasy APIMaster, nie uniwersalny oficjalny cennik dostawcy; aktualna karta modelu jest rozstrzygająca. Aktualna karta modelu

Wysyłanie żądania

POST /v1/embeddings · model: text-embedding-3-small

cURL

export APIMASTER_API_KEY="YOUR_APIMASTER_API_KEY"
curl --fail-with-body "https://apimaster.ai/v1/embeddings" \
  -H "Authorization: Bearer $APIMASTER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model": "text-embedding-3-small", "input": "Semantic search retrieves related documents.", "encoding_format": "float"}'

Python · OpenAI SDK

pip install openai
import os
from openai import OpenAI

client = OpenAI(
    api_key=os.environ["APIMASTER_API_KEY"],
    base_url="https://apimaster.ai/v1",
)
result = client.embeddings.create(
    model="text-embedding-3-small",
    input=["Semantic search retrieves related documents.", "猫在窗边休息。"],
    encoding_format="float",
)
for item in result.data:
    print(item.index, len(item.embedding))  # 1536
print(result.usage.prompt_tokens)

JavaScript · Node.js

const response = await fetch("https://apimaster.ai/v1/embeddings", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.APIMASTER_API_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    model: "text-embedding-3-small",
    input: ["Semantic search retrieves related documents.", "猫在窗边休息。"],
    encoding_format: "float",
  }),
});
if (!response.ok) throw new Error(`HTTP ${response.status}`);
const result = await response.json();
console.log(result.data.map((item) => [item.index, item.embedding.length]));
console.log(result.usage.prompt_tokens);

Parametry i limity

input powinien zawierać niepusty tekst lub tablicę niepustych tekstów. encoding_format: float zwraca tablicę liczb. Nie wysyłaj messages, max_tokens ani stream. Referencyjny limit modelu to 8192 tokeny na tekst; dziel długie dokumenty i stosuj małe partie. Limity i tokenizacja mogą zależeć od trasy.

dimensions opisano tutaj tylko dla text-embedding-3-small: domyślnie 1536 lub 512 w sprawdzonym przykładzie. Dokumenty i zapytania muszą używać tego samego wymiaru.

Zmniejszenie wymiaru

compact = client.embeddings.create(
    model="text-embedding-3-small",
    input="Semantic search retrieves related documents.",
    encoding_format="float",
    dimensions=512,
)
print(len(compact.data[0].embedding))  # 512

Odczyt odpowiedzi

Odczytaj data[i].embedding i przypisz wektor do wejścia przez data[i].index. usage.prompt_tokens i usage.total_tokens wskazują użycie wejścia. Wektory nie są rozliczane jak tokeny wygenerowanego tekstu. Sprawdzono także base64, lecz float łatwiej analizować.

Testy na żywo potwierdziły pojedynczy tekst, partie chińskie/angielskie, długości wektorów i spójność powtarzanego wejścia. Sprawdzają działanie API, nie jakość wyszukiwania na każdym zbiorze danych.

Wyszukiwanie semantyczne i RAG

Podziel dokumenty na fragmenty, wygeneruj i zapisz ich wektory. Osadź zapytanie tym samym modelem i wymiarem, uporządkuj wyniki według podobieństwa kosinusowego i przekaż tekst oddzielnemu modelowi czatu. Nie mieszaj modeli ani wymiarów w jednym indeksie; przebuduj indeks po zmianie modelu.

Rozwiązywanie problemów

Przy 401 sprawdź klucz API. Przy 400 sprawdź ID modelu, niepusty input i parametry. Przy 429 lub przekroczeniu czasu dostawcy zmniejsz współbieżność i ponawiaj z rosnącym opóźnieniem. Dostępność i aktualne ceny znajdziesz na rynku modeli.

Dalsze kroki i źródła