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.
