Models/ BAAI

BGE-M3 embeddings, one SDK call, 100+ languages

BGE-M3 is the open embedding model that made multilingual retrieval boring: one model covering 100+ languages, inputs up to 8K tokens, strong on both semantic similarity and retrieval benchmarks. It serves here through the standard /v1/embeddings endpoint.

  • 100+ languages
  • 8K-token inputs
  • $0.013 per 1M tokens
  • OpenAI SDK compatible

Per token, nothing else.

Input / 1M tokens

$0.013

Embeddings meter input tokens only. Undercuts OpenAI text-embedding-3-small ($0.020/1M).

openrelay/bge-m3

Full catalog on the inference pricing page. Deposit $5 to get $10.

embed.py · cross-lingual pairs, one spacepython
from openai import OpenAI

client = OpenAI(
    base_url="https://inference.openrelay.inc/v1",
    api_key="vl_••••••••",          # same SDK, new base URL
)

resp = client.embeddings.create(
    model="openrelay/bge-m3",
    input=["¿Cómo cancelo mi suscripción?",
           "How do I cancel my subscription?"],
)
vectors = [d.embedding for d in resp.data]

The spec sheet.

What the model is, what it takes in, and the surface it serves on.

Model id
openrelay/bge-m3
Type
Text embedding model (dense retrieval vectors)
Languages
100+, one shared vector space
Input
Up to 8K tokens per text; batching multiple inputs per call supported
Endpoint
POST /v1/embeddings (input-only metering)
Serving
Self-hosted by OpenRelay on dedicated GPU capacity

Where BGE-M3 earns its place.

What this model is actually for, versus the rest of the catalog.

One model for every language you will meet

Queries in Spanish matching documents in English, support tickets in twelve languages in one index: BGE-M3 embeds them into one vector space, which removes the per-language model zoo entirely.

8K inputs mean fewer, better chunks

Most embedding models cap at 512 tokens and force aggressive chunking. Embedding whole sections or small documents keeps context in the vector and cuts index size.

Open weights under an API price that reflects it

$0.013 per 1M tokens undercuts OpenAI's cheapest embedding rate, and because the model is open, your index is portable: re-embed nowhere, self-host later, nothing proprietary in the vectors.

BGE-M3, answered.

Is there a hosted BGE-M3 API?

Yes. BGE-M3 serves at inference.openrelay.inc/v1/embeddings, OpenAI-SDK-compatible: client.embeddings.create with model openrelay/bge-m3. No self-hosting and no TEI container to run.

What does the BGE-M3 API cost?

$0.013 per 1M input tokens; embeddings meter input only. Embedding a million typical 300-token documents costs about $3.90. OpenAI's text-embedding-3-small is $0.020 per 1M for comparison.

How does BGE-M3 compare to OpenAI embeddings?

BGE-M3's calling cards are multilingual strength across 100+ languages and 8K-token inputs, and it benchmarks competitively with proprietary models on retrieval. Being open-weight, it also keeps your index portable. Run your own retrieval eval on a few hundred queries; embedding both sides costs cents.

Can I batch-embed a large corpus?

Send multiple inputs per embeddings call and parallelize; at $0.013 per 1M tokens a full re-index is usually a single-digit-dollar event. The asynchronous Batch API currently accepts chat completions endpoints, so embeddings run through the realtime endpoint.

First request in five lines.

Point the OpenAI SDK at inference.openrelay.inc/v1 and run BGE-M3 per token. No contract, no minimums.