Instructions to use yjoonjang/colbert-ko-en-v2 with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- sentence-transformers
How to use yjoonjang/colbert-ko-en-v2 with sentence-transformers:
from pylate import models queries = [ "Which planet is known as the Red Planet?", "What is the largest planet in our solar system?", ] documents = [ ["Mars is the Red Planet.", "Venus is Earth's twin."], ["Jupiter is the largest planet.", "Saturn has rings."], ] model = models.ColBERT(model_name_or_path="yjoonjang/colbert-ko-en-v2") queries_emb = model.encode(queries, is_query=True) docs_emb = model.encode(documents, is_query=False) - Notebooks
- Google Colab
- Kaggle
colbert-ko-en-v2
colbert-ko-en-v2 is a Korean-English bilingual late-interaction (ColBERT) retriever built on skt/A.X-Encoder-base. It encodes every token into a 128-dimensional vector and scores queryโdocument pairs with MaxSim, keeping the term-level matching signal that a single pooled vector discards.
At 149M parameters it reaches an average nDCG@10 of 0.7984 across the nine MTEB(kor, v2) retrieval tasks โ the strongest late-interaction model on that suite, and in the same range as single-vector models many times its size.
Key Characteristics
- Late interaction: one 128-d vector per token, scored with MaxSim. No pooling.
- Long documents: up to 8,192 tokens, on ModernBERT's RoPE attention.
- Compact: 149M parameters.
- No instruction prefixes: queries and documents need no task instruction. Query expansion to 64 tokens is handled by the model.
Usage
pip install -U pylate
Indexing documents
from pylate import indexes, models, retrieve
model = models.ColBERT(model_name_or_path="yjoonjang/colbert-ko-en-v2")
index = indexes.PLAID(
index_folder="pylate-index",
index_name="index",
override=True,
)
documents_ids = ["1", "2", "3"]
documents = [
"์ธ์ข
๋์์ 1443๋
์ ํ๋ฏผ์ ์์ ์ฐฝ์ ํ๊ณ 1446๋
์ ์ด๋ฅผ ๋ฐํฌํ์๋ค.",
"๊น์น๋ ๋ฐฐ์ถ๋ ๋ฌด๋ฅผ ์๊ธ์ ์ ์ธ ๋ค ๊ณ ์ถง๊ฐ๋ฃจ์ ์ ๊ฐ์ ๋ฃ์ด ๋ฐํจ์ํจ ์์์ด๋ค.",
"ํ๋ผ์ฐ์ ํด๋ฐ 1,947m๋ก ๋จํ์์ ๊ฐ์ฅ ๋์ ์ฐ์ด๋ฉฐ ์ ์ฃผ๋ ์ค์์ ์๋ฆฌํ๋ค.",
]
documents_embeddings = model.encode(
documents,
batch_size=32,
is_query=False,
show_progress_bar=True,
)
index.add_documents(
documents_ids=documents_ids,
documents_embeddings=documents_embeddings,
)
To reuse an existing index, instantiate it without override:
index = indexes.PLAID(index_folder="pylate-index", index_name="index")
Retrieving top-k documents
retriever = retrieve.ColBERT(index=index)
queries_embeddings = model.encode(
["ํ๋ฏผ์ ์์ ์ธ์ ๋ง๋ค์ด์ก๋์?"],
batch_size=32,
is_query=True,
show_progress_bar=True,
)
scores = retriever.retrieve(
queries_embeddings=queries_embeddings,
k=10,
)
Reranking
To rerank a first-stage candidate list without building an index:
from pylate import models, rank
model = models.ColBERT(model_name_or_path="yjoonjang/colbert-ko-en-v2")
queries = [
"์ ๊ธฐ์ฐจ ํ๋ฐฐํฐ๋ฆฌ๋ ์ด๋ป๊ฒ ์ฌํ์ฉํ๋์?",
"๊ฒจ์ธ์ ํ๋ผ์ฐ์ ์ค๋ฅผ ๋ ํ์ํ ์ฅ๋น๋?",
]
documents = [
[
"ํ๋ฐฐํฐ๋ฆฌ์์ ๋ฆฌํฌ๊ณผ ์ฝ๋ฐํธ๋ฅผ ํ์ํ๋ ์ต์ ์ ๋ จ ๊ณต์ ์ด ์์ฉํ๋๊ณ ์๋ค.",
"๊ธ์ ์ถฉ์ ๊ธฐ๋ 30๋ถ ๋ด์ธ๋ก ๋ฐฐํฐ๋ฆฌ๋ฅผ 80%๊น์ง ์ถฉ์ ํ ์ ์๋ค.",
],
[
"๊ฒจ์ธ ํ๋ผ์ฐ ์ฐํ์๋ ์์ด์ ๊ณผ ๋ฐฉํ ์ฅ๊ฐ์ด ํ์์ด๋ฉฐ ์
์ฐ ์๊ฐ์ด ์ ํ๋๋ค.",
"์ ์ฃผ ์ฌ๋ ๊ธธ์ ํด์์ ๋ฐ๋ผ ์ด์ด์ง๋ 27๊ฐ ์ฝ์ค๋ก ๊ตฌ์ฑ๋์ด ์๋ค.",
"์ ์ค๊ธฐ์๋ ๋ฑ์ฐํ์ ์คํจ์ธ ๋ฅผ ์ฐฉ์ฉํด ๋์ด ๋ค์ด๊ฐ๋ ๊ฒ์ ๋ง๋ ๊ฒ์ด ์ข๋ค.",
],
]
documents_ids = [[1, 2], [1, 3, 2]]
queries_embeddings = model.encode(queries, is_query=True)
documents_embeddings = model.encode(documents, is_query=False)
reranked_documents = rank.rerank(
documents_ids=documents_ids,
queries_embeddings=queries_embeddings,
documents_embeddings=documents_embeddings,
)
Evaluation
nDCG@10 on the nine MTEB(kor, v2) retrieval tasks.
| Model | Params | Avg | AutoRAG | PubHealth | StrategyQA | LawIR | SQuAD | Belebele | MrTidy | MLDR | MIRACL |
|---|---|---|---|---|---|---|---|---|---|---|---|
| Late-Interaction Models | |||||||||||
| yjoonjang/colbert-ko-en-v2 | 149M | 0.7984 | 0.9686 | 0.8222 | 0.7940 | 0.7181 | 0.9846 | 0.8972 | 0.5783 | 0.6992 | 0.7230 |
| lightonai/mLateOn | 307M | 0.7879 | 0.9392 | 0.8061 | 0.7905 | 0.6431 | 0.9803 | 0.9360 | 0.5817 | 0.7005 | 0.7135 |
| perplexity-ai/pplx-embed-v1-late-0.6b | 596M | 0.7349 | 0.8557 | 0.8089 | 0.7973 | 0.7285 | 0.9696 | 0.9258 | 0.5400 | 0.2816 | 0.7064 |
| dragonkue/colbert-ko-0.1b | 149M | 0.6581 | 0.9700 | 0.7482 | 0.7364 | 0.4475 | 0.9794 | 0.7893 | 0.3966 | 0.2872 | 0.5685 |
| yjoonjang/colbert-ko-v1 | 149M | 0.5811 | 0.9557 | 0.6783 | 0.6560 | 0.4823 | 0.9594 | 0.4916 | 0.3279 | 0.2214 | 0.4575 |
| Single-Vector Models | |||||||||||
| sionic-ai/comsat-embed-ko-8b-preview | 7.6B | 0.7927 | 0.8518 | 0.8871 | 0.8394 | 0.8164 | 0.9168 | 0.9854 | 0.6253 | 0.5157 | 0.6964 |
| Qwen/Qwen3-Embedding-8B | 7.6B | 0.7826 | 0.8276 | 0.8721 | 0.8363 | 0.8171 | 0.9063 | 0.9827 | 0.6187 | 0.5046 | 0.6783 |
| Qwen/Qwen3-Embedding-4B | 4.0B | 0.7732 | 0.8431 | 0.8693 | 0.8270 | 0.7769 | 0.9044 | 0.9483 | 0.6076 | 0.5022 | 0.6803 |
| microsoft/harrier-oss-v1-27b | 27.0B | 0.7662 | 0.8176 | 0.8971 | 0.8361 | 0.8737 | 0.9204 | 0.9502 | 0.5306 | 0.4046 | 0.6653 |
| codefuse-ai/F2LLM-v2-8B | 7.6B | 0.7640 | 0.7678 | 0.9380 | 0.8371 | 0.8405 | 0.8874 | 0.9526 | 0.6162 | 0.4047 | 0.6313 |
| dragonkue/snowflake-arctic-embed-l-v2.0-ko | 568M | 0.7623 | 0.9093 | 0.8337 | 0.8050 | 0.7735 | 0.9447 | 0.9241 | 0.5712 | 0.4304 | 0.6685 |
| telepix/PIXIE-Rune-v1.5 | 568M | 0.7592 | 0.8927 | 0.8426 | 0.8064 | 0.7705 | 0.9457 | 0.9386 | 0.5492 | 0.4482 | 0.6393 |
| nlpai-lab/KURE-v1 | 568M | 0.7590 | 0.8708 | 0.8193 | 0.7999 | 0.7426 | 0.9357 | 0.9265 | 0.5909 | 0.4637 | 0.6816 |
| dragonkue/BGE-m3-ko | 568M | 0.7523 | 0.8738 | 0.8155 | 0.7959 | 0.7322 | 0.9414 | 0.9290 | 0.6099 | 0.3899 | 0.6833 |
| nlpai-lab/KoE5 | 560M | 0.7321 | 0.8434 | 0.8351 | 0.8001 | 0.7756 | 0.8980 | 0.9276 | 0.5841 | 0.3015 | 0.6235 |
Late-interaction rows were measured with mteb 2.18.16 and PLAID retrieval; single-vector rows are
taken from the official MTEB results repository.
Model Details
- Model type: ColBERT / PyLate
- Base model: skt/A.X-Encoder-base โ ModernBERT, 22 layers, 768 hidden
- Parameters: 149M
- Output dimensionality: 128 per token
- Similarity function: MaxSim
- Document length: 8,192 tokens
- Query length: 64 tokens (MASK expansion)
- Languages: Korean, English
ColBERT(
(0): Transformer({'max_seq_length': 8191, 'do_lower_case': False, 'architecture': 'ModernBertModel'})
(1): Dense({'in_features': 768, 'out_features': 128, 'bias': False, 'activation_function': 'torch.nn.modules.linear.Identity', 'use_residual': False})
)
Citation
@misc{colbert-ko-en-v2,
title = {colbert-ko-en-v2: a Korean-English bilingual late-interaction retriever},
author = {Jang, Yongjoon},
year = {2026},
url = {https://huggingface.co/yjoonjang/colbert-ko-en-v2},
}
@inproceedings{santhanam-etal-2022-colbertv2,
title = {ColBERTv2: Effective and Efficient Retrieval via Lightweight Late Interaction},
author = {Santhanam, Keshav and Khattab, Omar and Saad-Falcon, Jon and Potts, Christopher and Zaharia, Matei},
booktitle = {Proceedings of the 2022 Conference of the North American Chapter of the Association for Computational Linguistics: Human Language Technologies},
year = {2022},
pages = {3715--3734},
}
@misc{PyLate,
title = {PyLate: Flexible Training and Retrieval for Late Interaction Models},
author = {Chaffin, Antoine and Sourty, Raphaรซl},
year = {2024},
url = {https://github.com/lightonai/pylate},
}
- Downloads last month
- -
Model tree for yjoonjang/colbert-ko-en-v2
Base model
skt/A.X-Encoder-base