bidirlm-omni-2.5b-textonly GGUF
BidirLM-Omni 2.5B — text-only GGUF. Qwen3-derived bidirectional encoder, 2048-d shared embedding space, 90+ languages. The upstream model's audio + vision towers are NOT included in this file (use the bidirlm-omni-2.5b-GGUF variant for cross-modal embedding).
Note: text-only GGUF
The upstream model is omnimodal (text + image + audio). This GGUF contains
only the text path — the bidirectional Qwen3 body with mean pooling,
producing 2048-d embeddings in the model's shared cross-modal space.
For text → text similarity (semantic search, retrieval, clustering across
90+ languages), this GGUF is functionally complete and matches the upstream
reference at cosine ≥ 0.999.
For cross-modal queries (text ↔ image, text ↔ audio), use the
bidirlm-omni-2.5b-GGUF
variant — it includes the audio tower (text + audio cross-modal) and is
the recommended choice for omnimodal retrieval. The vision tower is not
yet supported by either GGUF.
Files
Parity vs HuggingFace reference
Cosine similarity vs the upstream sentence-transformers reference on a fixed
test set (text, jfk.wav for audio):
| Quant | Cosine |
|---|
| f16 | 0.9998 |
| q8_0 | 0.9991 |
| q6_k | 0.9939 |
| q5_k | 0.9831 |
| q4_k | 0.9374 |
Note: below the 0.99 retrieval-quality bar — text: q5_k (0.983), q4_k (0.937). Embeddings are still functionally usable (>0.9 = directionally correct for similarity ranking) but expect small differences in nearest-neighbor results vs the upstream f32 reference.
Quick Start
1# Download
2huggingface-cli download cstr/bidirlm-omni-2.5b-textonly-GGUF bidirlm-omni-2.5b-textonly-f16.gguf --local-dir .
3
4# Run with CrispEmbed
5./crispembed -m bidirlm-omni-2.5b-textonly-f16.gguf "Hello world"
6
7# Or with auto-download
8./crispembed -m bidirlm-omni-2.5b-textonly "Hello world"
Model Details
Verification
Verified bit-identical to HuggingFace sentence-transformers (cosine similarity >= 0.999 on test texts).
Usage with CrispEmbed
CrispEmbed is a lightweight C/C++ text embedding inference engine using ggml.
No Python runtime, no ONNX. Supports BERT, XLM-R, Qwen3, and Gemma3 architectures.
1# Build CrispEmbed
2git clone https://github.com/CrispStrobe/CrispEmbed
3cd CrispEmbed
4cmake -S . -B build && cmake --build build -j
5
6# Encode
7./build/crispembed -m bidirlm-omni-2.5b-textonly-f16.gguf "query text"
8
9# Server mode
10./build/crispembed-server -m bidirlm-omni-2.5b-textonly-f16.gguf --port 8080
11curl -X POST http://localhost:8080/v1/embeddings \
12 -d '{"input": ["Hello world"], "model": "bidirlm-omni-2.5b-textonly"}'
Credits
- Original model: BidirLM/BidirLM-Omni-2.5B-Embedding
- Inference engine: CrispEmbed (ggml-based)
- Conversion:
convert-decoder-embed-to-gguf.py
Provenance and EU AI Act Art. 53 note
- Upstream model: BidirLM/BidirLM-Omni-2.5B-Embedding — published by
BidirLM.
- Upstream licence:
apache-2.0. This repository redistributes under the same terms; it grants no rights the upstream licence does not.
- What was done here: format conversion and/or quantisation only (GGUF/GGML). No training, no fine-tuning, no merging, no distillation, no change to architecture, vocabulary or capability. Only the numeric representation of the upstream weights differs.
- Training data: documented — where it is documented at all — by the upstream provider; see the upstream model card. No training data was used, added or selected by this repository.
- Provider status: under Regulation (EU) 2024/1689 the upstream authors remain the provider of this model. Converting the serialisation format does not make this repository the provider of a new general-purpose AI model, and no such claim is made. Questions about training content, copyright policy or model capability belong upstream.