Skip to main content

bge-m3-lite

CPU inference for BAAI/bge-m3 with onnxruntime as the only dependency. All three BGE-M3 outputs are supported and match the official PyTorch implementation (FlagEmbedding) to fp32 precision:

output shape notes
dense_vecs (n, 1024) CLS pooling, L2-normalised
lexical_weights list[dict[str, float]] token-id → weight, max-pooled, specials removed
colbert_vecs list[(len-1, 1024)] per-token vectors without <s>, L2-normalised

Everything except the transformer forward pass is implemented in this package from scratch: the XLM-RoBERTa tokenizer (SentencePiece unigram model, the nmt_nfkc precompiled charsmap, Unicode grapheme segmentation), the torch-free loader for the sparse / ColBERT heads, the model downloader and the pooling.

Platforms: Apple Silicon, Linux ARM64, Linux x86_64 (Python 3.11+).

Install

uv add bge-m3-lite        # or: pip install bge-m3-lite

Use

from bge_m3_lite import BGEM3Embedder

embedder = BGEM3Embedder()  # first call downloads ~2.3 GB into ~/.cache/bge-m3-lite
out = embedder.encode(
    ["What is BGE M3?", "BGE M3 是一個多語言嵌入模型。"],
    return_dense=True,
    return_sparse=True,
    return_colbert_vecs=True,
)
out["dense_vecs"].shape  # (2, 1024)
out["lexical_weights"][0]  # {'4865': 0.08, '83': 0.08, ...}
out["colbert_vecs"][0].shape  # (7, 1024)

embedder.convert_id_to_token(out["lexical_weights"][0])
embedder.compute_lexical_matching_score(lw_query, lw_passage)
embedder.colbert_score(q_vecs, p_vecs)

Passing a single string returns unwrapped values, like FlagEmbedding. BGEM3Embedder(precision="int8") loads a 4× smaller quantised backbone (see docs/quantization.md for the accuracy trade-off).

CLI

bge-m3-lite download                     # pre-fetch the model files
bge-m3-lite info                         # cache state
echo "hello" | bge-m3-lite encode --sparse --colbert --tokens

Environment variables

variable effect
BGE_M3_LITE_CACHE cache directory (default ~/.cache/bge-m3-lite/BAAI--bge-m3)
HF_ENDPOINT Hugging Face mirror, e.g. https://hf-mirror.com
BGE_M3_LITE_OFFLINE=1 never download, fail if files are missing
BGE_M3_LITE_THREADS onnxruntime intra-op threads (default: physical cores)

Model files are pinned to a specific Hugging Face revision and verified by SHA-256 after download.

Development

See AGENTS.md and docs/ (architecture, tokenizer, verification, development).

Status

v0.0.2: fp32 with exact parity with FlagEmbedding, plus an opt-in int8 backbone.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

bge_m3_lite-0.0.2.tar.gz (29.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

bge_m3_lite-0.0.2-py3-none-any.whl (32.5 kB view details)

Uploaded Python 3

File details

Details for the file bge_m3_lite-0.0.2.tar.gz.

File metadata

  • Download URL: bge_m3_lite-0.0.2.tar.gz
  • Upload date:
  • Size: 29.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for bge_m3_lite-0.0.2.tar.gz
Algorithm Hash digest
SHA256 0cd86cbfc767e6738d252089eca9519db377dcc6a91a3ce8a76ebe579a46fe82
MD5 b391e80ae1dfa7f0214748ee48a7ab24
BLAKE2b-256 55cb7795826350dbc3fd8db74040c21dcd43c1e1ee40ccfbc8a7d52d756fef62

See more details on using hashes here.

File details

Details for the file bge_m3_lite-0.0.2-py3-none-any.whl.

File metadata

  • Download URL: bge_m3_lite-0.0.2-py3-none-any.whl
  • Upload date:
  • Size: 32.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for bge_m3_lite-0.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 31cf3bd01a0c656f3afd69a5569c62ef03e1fbe39909ad1499db0c742db8d486
MD5 2b6d0d1d17d40f5a4f696a7482c06e0d
BLAKE2b-256 ab85c15be0eeafaaea932a0289254c2187b896aa87a2f7dce15d4169f28d7ccc

See more details on using hashes here.

Release history Release notifications | RSS feed

0.6.2

2 files

0.6.1

2 files

0.6.0

2 files

0.5.2

2 files

0.5.1

2 files

0.5.0

2 files

0.4.0

2 files

0.3.1

2 files

0.3.0

2 files

0.2.0

2 files

0.1.0

2 files

This release

0.0.2 This release

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page