APIMaster.ai

BGE-M3 · Wysyłanie żądania

Wielojęzyczny model BAAI z 1024 wymiarami do wyszukiwania dokumentów. API zwraca gęste wektory, bez rzadkich wag ani wektorów ColBERT. Specjalny prefiks instrukcji dla zapytań nie jest potrzebny.

Wielojęzyczny model BAAI z 1024 wymiarami do wyszukiwania dokumentów. API zwraca gęste wektory, bez rzadkich wag ani wektorów ColBERT. Specjalny prefiks instrukcji dla zapytań nie jest potrzebny.

Sprawdzono 2026-10-02: aktywna trasa od $0.01 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: bge-m3

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": "bge-m3", "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="bge-m3",
    input=["Semantic search retrieves related documents.", "猫在窗边休息。"],
    encoding_format="float",
)
for item in result.data:
    print(item.index, len(item.embedding))  # 1024
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: "bge-m3",
    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.

Dla bge-m3 używaj pełnego gęstego wektora o 1024 wymiarach i pomiń dimensions. W żądaniu podaj bge-m3; response.model może zawierać alias dostawcy.

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