BGE-M3 · Отправка запроса
Многоязычная модель эмбеддингов BAAI с размерностью 1024 для поиска документов на разных языках. Этот API возвращает плотные векторы без разреженных весов и векторов ColBERT. Специальный префикс инструкции для запроса не требуется.
Многоязычная модель эмбеддингов BAAI с размерностью 1024 для поиска документов на разных языках. Этот API возвращает плотные векторы без разреженных весов и векторов ColBERT. Специальный префикс инструкции для запроса не требуется.
Проверено 2026-10-02: активный маршрут — от $0.01 за миллион входных токенов. Это цена маршрута APIMaster, а не единая официальная цена поставщика; актуальная карточка модели имеет приоритет. Актуальная карточка модели
Отправка запроса
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);
Параметры и ограничения
Передавайте в input непустую строку или массив непустых строк. encoding_format: float возвращает числовой массив. Не передавайте messages, max_tokens или stream. Указанный для моделей предел — 8192 токена на текст; делите длинные документы и ограничивайте размер пакетов. Лимиты и токенизация могут зависеть от маршрута.
Для bge-m3 используйте полный плотный вектор размерности 1024 и не передавайте dimensions. В запросе указывайте bge-m3; response.model может содержать псевдоним модели у провайдера.
Чтение ответа
Получите data[i].embedding и сопоставьте вектор с исходным текстом через data[i].index. usage.prompt_tokens и usage.total_tokens показывают входные токены. Вектор не считается сгенерированным текстом и не тарифицируется как выходные токены. Кодирование base64 также проверено, но float удобнее для просмотра.
Проверены одиночный ввод, пакеты на китайском и английском, длина векторов и одинаковые результаты для повторяющегося ввода. Это проверка API, а не качества поиска на любом наборе данных.
Семантический поиск и RAG
Разбейте документы на фрагменты, создайте и сохраните их векторы. Преобразуйте запрос той же моделью с той же размерностью, отсортируйте фрагменты по косинусному сходству и передайте найденный текст отдельной чат-модели. Не смешивайте разные модели и размерности в одном индексе; при смене модели перестройте индекс.
Устранение ошибок
При 401 проверьте API-ключ. При 400 проверьте ID модели, непустой input и параметры. При 429 или тайм-ауте провайдера уменьшите параллелизм и повторите запрос с задержкой. Доступность маршрутов и актуальные цены указаны на странице моделей.
