Model reference · open weights

LFM2.5-ColBERT

Embeddings LiquidAI Embeddings 2 builds Its own licence terms 3k dl/mo

LFM2.5-ColBERT is an open-weight embedding model from LiquidAI. LFM2.5-ColBERT-350M-GGUF (GGUF) weighs 228 MB; the smallest configuration that runs it is RTX 3060 12 GB.

  • LFM2.5-ColBERT-350M is a late-interaction retrieval model developed by LiquidAI for multilingual and cross-lingual search tasks.
  • It features 353M parameters, a context length of 128,000 tokens, and supports 11 languages including English, Spanish, German, French, Italian, Portuguese, Arabic, Swedish, Norwegian, Japanese, and Korean.
  • The model is released under the LFM Open License v1.0.

Summary of the LiquidAI/LFM2.5-ColBERT-350M model card, 2026-10-01. The estimate below is for another build of the family.

What it is

Released byLiquidAI
Released2026-05-20
Parameters353M
VRAM228 MB for the weights

What it runs on

Memory and cards for LFM2.5-ColBERT-350M-GGUF (GGUF)

228 MBweights, file size
1.1 GBruntime overhead
CardRunsMemory
RTX 3060 12 GBfits11.6 GB
RTX 4060 Ti 16 GBfits15.4 GB
RTX 3090 24 GBfits23.4 GB
RTX 4090 24 GBfits23.4 GB
RTX 5090 32 GBfits31.0 GB
L40S 48 GBfits44.0 GB
A100 80 GBfits78.2 GB
H100 80 GBfits78.1 GB
RTX PRO 6000 Blackwell 96 GBfits93.8 GB
DGX Spark (GB10) 128 GB unifiedfits107 GB
H200 141 GBfits138 GB
B200 180 GBfits176 GB

Builds

Sizes, precisions & builds

BuildParamsPrecisionWeightsSmallest setup
LFM2.5-ColBERT-350M ↗ 353MBF16 707 MBRTX 3060 12 GB
LFM2.5-ColBERT-350M-GGUF (above) ↗
7 builds: Q4_0 218 MB … F16 709 MB
—GGUF 228 MBRTX 3060 12 GB

From the model card

What LiquidAI says about LFM2.5-ColBERT

Read the model card

src="https://cdn-uploads.huggingface.co/production/uploads/61b8e2ba285851687028d395/2b08LKpev0DNEk6DlnWkY.png" alt="Liquid AI" style="width: 100%; max-width: 100%; height: auto; display: inline-block; margin-bottom: 0.5em; margin-top: 0.5em;" />

LFM2.5-ColBERT-350M

We release two new best-in-class multilingual retrieval models:

  • LFM2.5-Embedding-350M — A dense bi-encoder, one vector per document. Smallest, fastest index.
  • LFM2.5-ColBERT-350M — A late-interaction model. One vector per token, matched via MaxSim. Higher accuracy and better generalization at the cost of index size.

Both models are 350M params and the first bidirectional members of the LFM family, built on LFM2.5-350M-Base. They can be used as a drop-in replacement for your current RAG pipeline and target fast, cheap, and reliable multilingual / cross-lingual search across 11 languages.

Find more details about the bidirectional architecture and training recipe in our blog post.

[!NOTE] 💻 Demo: https://huggingface.co/spaces/LiquidAI/colbert-tool-selection

📄 Model details

PropertyLFM2.5-ColBERT-350MLFM2.5-Embedding-350M
TypeLate interaction (per-token vectors)Dense bi-encoder (single vector)
Total parameters~353M~354M
BackboneLFM2.5-350M-Base + bi-directional patchesLFM2.5-350M-Base + bi-directional patches
Layers17 (10 conv + 6 attn + 1 dense)17 (10 conv + 6 attn + 1 pool)
Vocabulary size64,40265,536
Output128-dim per token1024-dim CLS vector
SimilarityMaxSimCosine
Training precisionBF16BF16
LicenseLFM Open License v1.0LFM Open License v1.0

Document length: 512 tokens   

Query length: 32 tokens

Supported languages: English, Spanish, German, French, Italian, Portuguese, Arabic, Swedish, Norwegian, Japanese, Korean.

Architecture:

ColBERT(
  (0): Transformer({'max_seq_length': 511, 'do_lower_case': False}) with Transformer model: Lfm2BidirectionalModel
  (1): Dense({'in_features': 1024, 'out_features': 128, 'bias': False, 'activation_function': 'torch.nn.modules.linear.Identity'})
)

We recommend LFM2.5-Embedding-350M and LFM2.5-ColBERT-350M for short-context retrieval use cases, such as:

  • E-commerce: find products across many languages with semantic search at scale.
  • FAQ and support knowledge bases: retrieve the right answer reliably across customer-facing surfaces.
  • On-device semantic search: search files, emails, and notes locally on consumer hardware.
  • Enterprise knowledge assistants: retrieve internal legal, financial, and technical documents across languages.

🏃 How to run

Using Sentence Transformers

This model can be used as a multi-vector (ColBERT-style late interaction) retriever directly with Sentence Transformers via the MultiVectorEncoder.

pip install "sentence-transformers>=6.0.0"
from sentence_transformers import MultiVectorEncoder

model = MultiVectorEncoder("LiquidAI/LFM2.5-ColBERT-350M", trust_remote_code=True)

query = "Which planet is known as the Red Planet?"
documents = [
    "Venus is often called Earth's twin because of its similar size and proximity.",
    "Mars, known for its reddish appearance, is often referred to as the Red Planet.",
    "Jupiter, the largest planet in our solar system, has a prominent red spot.",
    "Saturn, famous for its rings, is sometimes mistaken for the Red Planet.",
]

query_embeddings = model.encode_query([query])
document_embeddings = model.encode_document(documents)
print(query_embeddings[0].shape, document_embeddings[0].shape)
# (32, 128) (17, 128)

# MaxSim late-interaction scoring (the Mars document ranks highest)
scores = model.similarity(query_embeddings, document_embeddings)
print(scores)
# tensor([[27.1621, 28.2578, 27.7266, 28.1992]])

Using PyLate

Use this model with PyLate to index and retrieve documents. The index uses FastPLAID for efficient similarity search. First, install PyLate and transformers:

pip install -U pylate
Indexing documents

Load LFM2.5-ColBERT-350M and initialize the PLAID index, then encode and index your documents:

from pylate import indexes, models, retrieve

# Step 1: Load the ColBERT model (trust_remote_code applies the bidirectional patches)
model = models.ColBERT(
    model_name_or_path="LiquidAI/LFM2.5-ColBERT-350M",
    trust_remote_code=True,
)
model.tokenizer.pad_token = model.tokenizer.eos_token

# Step 2: Initialize the PLAID index
index = indexes.PLAID(
    index_folder="pylate-index",
    index_name="index",
    override=True,  # This overwrites the existing index if any
)

# Step 3: Encode the documents
documents_ids = ["1", "2", "3"]
documents = ["document 1 text", "document 2 text", "document 3 text"]

documents_embeddings = model.encode(
    documents,
    batch_size=32,
    is_query=False,  # Ensure that it is set to False to indicate that these are documents, not queries
    show_progress_bar=Tru

Quoted from the model card on Hugging Face. The full card is behind the Hugging Face link above.

© 2026 AxForge · EU-hosted AI infrastructure Pricing Docs Trust Privacy Terms