APIMaster.ai

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 или тайм-ауте провайдера уменьшите параллелизм и повторите запрос с задержкой. Доступность маршрутов и актуальные цены указаны на странице моделей.

Далее и источники