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
-
Safetensors
Model size
0.1B params
Tensor type
F32
ยท
Inference Providers NEW
This model isn't deployed by any Inference Provider. ๐Ÿ™‹ Ask for provider support

Model tree for yjoonjang/colbert-ko-en-v2

Finetuned
(10)
this model

Collection including yjoonjang/colbert-ko-en-v2