Model reference · open weights

LFM2-ColBERT

Embeddings LiquidAI Embeddings 1 build Its own licence terms 25k dl/mo

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

  • LFM2-ColBERT-350M is a late interaction retriever developed by LiquidAI for multilingual sentence similarity and retrieval tasks.
  • The model contains 353 million parameters and supports a context length of 128,000 tokens.
  • It is designed for cross-lingual retrieval and operates in English, Arabic, Chinese, French, German, Japanese, Korean, and Spanish under the LFM Open License v1.0.

Summary of the LiquidAI/LFM2-ColBERT-350M model card, 2026-10-01

What it is

Released byLiquidAI
Released2025-10-28
Parameters353M
VRAM707 MB for the weights

What it runs on

Memory and cards for LFM2-ColBERT-350M (FP32)

707 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

From the model card

What LiquidAI says about LFM2-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-ColBERT-350M

LFM2-ColBERT-350M is a late interaction retriever with excellent multilingual performance. It allows you to store documents in one language (for example, a product description in English) and retrieve them in many languages with high accuracy.

  • LFM2-ColBERT-350M offers best-in-class accuracy across different languages.
  • Inference speed is on par with models 2.3 times smaller, thanks to the efficient LFM2 backbone.
  • You can use it as a drop-in replacement in your current RAG pipelines to improve performance.

Find more information about LFM2-ColBERT-350M in our blog post.

[!NOTE] 🚀 Try our demo: https://huggingface.co/spaces/LiquidAI/LFM2-ColBERT

📄 Model details

Late interaction retrievers like LFM2-ColBERT-350M are particularly interesting because they preserve much of the expressivity of re-rankers while retaining the efficiency of bi-encoders. In practice, they're used to both retrieve documents at scale (like bi-encoders) and rank them at the same time (like rerankers).

We recommend using this model for various RAG use cases, such as:

  • E-commerce: Find products across many languages with semantic search at scale.
  • On-device semantic search: Ask questions to your phone in natural language to retrieve files, emails, and notes.
  • Enterprise knowledge assistants: Retrieve internal legal, financial, and technical documents in different languages.
PropertyLFM2-ColBERT-350M
Total parameters353,322,752
Layers17 (10 conv + 6 attn + 1 dense)
Vocabulary size64,402
Training precisionBF16
LicenseLFM Open License v1.0

Document length: 512 tokens

Query length: 32 tokens

Output dimensionality: 128 tokens

Similarity function: MaxSim

Supported languages: English, Arabic, Chinese, French, German, Japanese, Korean, and Spanish.

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

🏃 How to run

Sentence Transformers

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

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

model = MultiVectorEncoder("LiquidAI/LFM2-ColBERT-350M")

query = "Which planet is known as the Red Planet?"
documents = [
    "Venus wird oft als Zwilling der Erde bezeichnet, wegen ihrer ähnlichen Größe.",
    "Mars, connue pour son apparence rougeâtre, est souvent appelée la planète rouge.",
    "Júpiter es el planeta más grande del sistema solar.",
    "Saturno è famoso per i suoi bellissimi anelli.",
]

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

# MaxSim late-interaction scoring (higher is more relevant)
scores = model.similarity(query_embeddings, document_embeddings)
print(scores)
# tensor([[30.3632, 30.4892, 30.4024, 30.3004]])

PyLate

First, install the PyLate and transformers library:

pip install -U pylate

Retrieval

Use this model with PyLate to index and retrieve documents. The index uses FastPLAID for efficient similarity search.

Indexing documents

Load LFM2-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
model = models.ColBERT(
    model_name_or_path="LiquidAI/LFM2-ColBERT-350M",
)
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=True,
)

# Step 4: Add document embeddings to the index by providing embeddings and corresponding ids
index.add_documents(
    documents_ids=documents_ids,
    documents_embeddings=documents_embeddings,
)

Note that you do not have to recreate the index and encode the documents every time. Once you have created an index and added the documents, you can re-use the index later by loading it:

# To load an index, simply instantiate it with the correct folder/name and without overriding it
index = indexes.PLAID(
    index_folder="pylate-index",
    index_name="index",
)
Retrieving top-k documents for queries

Once the documents are indexed, you can retrieve the top-k most relevant documents for a given set of queries. To do so, initialize the ColBERT retriever with the index you want to search in, encode the queries and then retrieve the top-k documents to get the top matches ids and relevance scores:

# Step 1: Initialize the ColBERT retriever
retriever = retrieve.ColBERT(index=index)

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

Benchmarks

Reported results

As published on the model card: the maker's own numbers, not measured by AxForge.

TaskDatasetMetricScore
Py Late Information RetrievalNanoClimateFEVERMaxsim Accuracy@10.400
Py Late Information RetrievalNanoClimateFEVERMaxsim Accuracy@30.520
Py Late Information RetrievalNanoClimateFEVERMaxsim Accuracy@50.640
Py Late Information RetrievalNanoClimateFEVERMaxsim Accuracy@100.800
Py Late Information RetrievalNanoClimateFEVERMaxsim Precision@10.400
Py Late Information RetrievalNanoClimateFEVERMaxsim Precision@30.207
Py Late Information RetrievalNanoClimateFEVERMaxsim Precision@50.156
Py Late Information RetrievalNanoClimateFEVERMaxsim Precision@100.118
Py Late Information RetrievalNanoClimateFEVERMaxsim Recall@10.195
Py Late Information RetrievalNanoClimateFEVERMaxsim Recall@30.273
Py Late Information RetrievalNanoClimateFEVERMaxsim Recall@50.316
Py Late Information RetrievalNanoClimateFEVERMaxsim Recall@100.459
Py Late Information RetrievalNanoClimateFEVERMaxsim Ndcg@100.387
Py Late Information RetrievalNanoClimateFEVERMaxsim Mrr@100.506
Py Late Information RetrievalNanoClimateFEVERMaxsim Map@1000.313
Py Late Information RetrievalNanoDBPediaMaxsim Accuracy@10.860
Py Late Information RetrievalNanoDBPediaMaxsim Accuracy@30.920
Py Late Information RetrievalNanoDBPediaMaxsim Accuracy@50.940
Py Late Information RetrievalNanoDBPediaMaxsim Accuracy@100.980
Py Late Information RetrievalNanoDBPediaMaxsim Precision@10.860
Py Late Information RetrievalNanoDBPediaMaxsim Precision@30.700
Py Late Information RetrievalNanoDBPediaMaxsim Precision@50.640
Py Late Information RetrievalNanoDBPediaMaxsim Precision@100.566
Py Late Information RetrievalNanoDBPediaMaxsim Recall@10.121
© 2026 AxForge · EU-hosted AI infrastructure Pricing Docs Trust Privacy Terms