| --- |
| license: other |
| license_name: lfm-1.0 |
| license_link: https://huggingface.co/LiquidAI/LFM2.5-350M/blob/main/LICENSE |
| base_model: LiquidAI/LFM2.5-ColBERT-350M |
| tags: |
| - colbert |
| - retrieval |
| - multi-vector |
| - late-interaction |
| - gguf |
| - crispembed |
| - ggml |
| language: |
| - en |
| - es |
| - de |
| - fr |
| - it |
| - pt |
| - ar |
| - sv |
| - "no" |
| - ja |
| - ko |
| --- |
| |
| # LFM2.5-ColBERT-350M — CrispEmbed GGUF |
|
|
| CrispEmbed-native GGUF quantizations of [LiquidAI/LFM2.5-ColBERT-350M](https://huggingface.co/LiquidAI/LFM2.5-ColBERT-350M). |
|
|
| Multi-vector (ColBERT-style) retrieval: per-token embeddings projected to 128 dimensions, L2-normalized. Uses late interaction (MaxSim) scoring for fine-grained token-level matching. |
|
|
| **Format note:** These GGUFs use CrispEmbed's internal tensor naming (`lfm.*` prefix, arch=`lfm2`). They include the `colbert.projection.weight` tensor from the `1_Dense` module. **Not** compatible with llama.cpp. |
|
|
| ## Model variants |
|
|
| | File | Quant | Size | ColBERT cos vs F32 | |
| |------|-------|------|--------------------| |
| | `lfm2-colbert-f32.gguf` | F32 | 677 MB | 0.999995 | |
| | `lfm2-colbert-q8_0.gguf` | Q8_0 | 361 MB | 0.998 | |
| | `lfm2-colbert-q5_k.gguf` | Q5_K | 258 MB | 0.977 | |
| | `lfm2-colbert-q4_k.gguf` | Q4_K | 224 MB | 0.959 | |
| |
| ## Architecture |
| |
| - **Backbone**: LFM2.5-350M bidirectional hybrid (16 layers: 10 ShortConv + 6 GQA attention, 1024-dim hidden, SwiGLU FFN) |
| - **ColBERT head**: Linear(1024, 128) + L2 normalize per token |
| - **Scoring**: MaxSim — max over doc tokens of cosine similarity per query token, summed |
| - **Parameters**: 350M + 128K projection head |
| - **Languages**: EN, ES, DE, FR, IT, PT, AR, SV, NO, JA, KO (11 languages) |
| - **Task prefixes**: `"query: "` for queries, `"document: "` for passages |
| |
| ## Usage |
| |
| ```bash |
| # ColBERT multi-vector encode |
| ./crispembed -m lfm2-colbert-q8_0.gguf --colbert "query: what is deep learning?" |
|
|
| # JSON output (per-token vectors) |
| ./crispembed -m lfm2-colbert-q8_0.gguf --colbert --json "query: machine learning" |
| |
| # Server |
| ./crispembed-server --embed lfm2-colbert-q8_0.gguf --port 8080 |
| curl -X POST http://localhost:8080/colbert/score \ |
| -d '{"query": "what is deep learning?", "documents": ["Deep learning is a subset of ML", "The weather is nice"]}' |
| ``` |
| |
| ```python |
| from crispembed import CrispVit |
|
|
| model = CrispVit("lfm2-colbert-q8_0.gguf") |
| assert model.has_colbert |
|
|
| # Encode multi-vector representations |
| query_vecs = model.encode_multivec("query: what is deep learning?") # (n_tokens, 128) |
| doc_vecs = model.encode_multivec("document: Deep learning uses neural networks") |
| |
| # MaxSim scoring |
| score = model.maxsim(query_vecs, doc_vecs) |
| print(f"Score: {score:.4f}") |
| ``` |
| |
| ```rust |
| use crispembed::CrispEmbed; |
| |
| let mut model = CrispEmbed::new("lfm2-colbert-q8_0.gguf", 4)?; |
| assert!(model.has_colbert()); |
| |
| let query = model.encode_multivec("query: what is deep learning?"); |
| let doc = model.encode_multivec("document: Neural networks learn representations"); |
| ``` |
| |
| ## Conversion |
| |
| Convert from the source model yourself: |
| |
| ```bash |
| git clone https://github.com/CrispStrobe/CrispEmbed |
| cd CrispEmbed |
| |
| # Convert (loads 1_Dense/model.safetensors for ColBERT projection) |
| python models/convert-lfm2-embed-to-gguf.py \ |
| --model LiquidAI/LFM2.5-ColBERT-350M \ |
| --output lfm2-colbert-f32.gguf --dtype f32 |
| |
| # Quantize |
| ./build/crispembed-quantize lfm2-colbert-f32.gguf lfm2-colbert-q8_0.gguf q8_0 |
| ./build/crispembed-quantize lfm2-colbert-f32.gguf lfm2-colbert-q5_k.gguf q5_k |
| ./build/crispembed-quantize lfm2-colbert-f32.gguf lfm2-colbert-q4_k.gguf q4_k |
| ``` |
| |
| ## License |
| |
| [LFM Open License v1.0](https://huggingface.co/LiquidAI/LFM2.5-350M/blob/main/LICENSE) — same as the base model. |
| |
| ## Credits |
| |
| Original model by [LiquidAI](https://huggingface.co/LiquidAI). GGUF conversion and inference engine by [CrispEmbed](https://github.com/CrispStrobe/CrispEmbed). |
| |