/ Модель

Характеристики

Контекст
16 384 токена
Параметры
149 млн
Лицензия
Apache 2.0
Архитектура
modernbert · dense
Базовая модель
A.X-Encoder-base
Библиотека
PyLate
Опубликована
25 янв 2026

colbert-ko-0.1b

Сходство предложенийТекст → score8 профессий

Корейская модель ColBERT на базе ModernBERT для семантического поиска и переранжирования документов с помощью токенных эмбеддингов и MaxSim.

171скачиваний за 30 дней4лайкавеса обновлены26 мая 2026

Бенчмарки

Как модель справилась с задачами пользователей ailist и что о ней публикуют открытые лидерборды

Публичные оценки

Из открытых лидербордов. Сравнивайте результаты одного теста при одинаковых условиях — отсутствие оценки не значит, что модель хуже.

В подключённых источниках результатов для этой модели пока нет.

Что умеет модель

Описание составлено по карточке модели и метаданным Hugging Face

Корейская модель ColBERT, разработанная dragonkue и дообученная от skt/A.X-Encoder-base с помощью PyLate. Она предназначена для поиска по текстовым коллекциям и переранжирования результатов: кодирует запросы и документы в последовательности токенных эмбеддингов и сравнивает их оператором MaxSim. Модель построена на ModernBERT с проекцией 768→128; поддерживает матрёшечные размерности эмбеддингов 32, 64, 96 и 128. Документы могут содержать до 2048 токенов, запросы — до 32; контекст энкодера — до 16 384 токенов. Модель ориентирована на корейский язык, имеет 148,7 млн параметров и распространяется по лицензии Apache-2.0.

Подходит для семантического поиска и ранжирования корейских документов, в том числе с использованием PyLate и PLAID для приближённого поиска по большим коллекциям. В README приведены результаты на AutoRAG, Ko-StrategyQA и NanoBEIR-Ko; выбор меньшей размерности сокращает размер векторов в 2–4 раза при небольших изменениях метрик. PyLate использует размерность 128; для переключения между размерностями требуется другой путь загрузки, указанный в карточке.

Сценарии применения

  • семантический поиск по корейским документам
  • переранжирование результатов корейского поиска
  • поиск ответов на вопросы в корейской базе знаний
  • построение индекса PLAID для большой корейской коллекции
  • сопоставление корейских запросов с абзацами

Ограничения

Модель ориентирована на корейский язык; длина запроса ограничена 32 токенами, документа — 2048 токенами. PyLate использует 128-мерную голову по умолчанию, а результаты на разных бенчмарках могут меняться в зависимости от размерности и условий измерения.

Для каких профессий подходит8

Разделы каталога профессий, в задачах которых используется эта модель

Все профессии

Также подходит для

Карточка модели

README от автора на Hugging Face, как он его опубликовал

Открыть на Hugging Face

dragonkue/colbert-ko-0.1b

This is a Korean ColBERT model finetuned from skt/A.X-Encoder-base using PyLate. It maps sentences and paragraphs to sequences of 32, 64, 96, or 128-dimensional token embeddings, and uses the MaxSim operator for late-interaction retrieval.

Model Details

Model Description

  • Model Type: PyLate model
  • Base model: skt/A.X-Encoder-base
  • Document Length: 2048 tokens
  • Query Length: 32 tokens
  • Output Dimensionality: 128 (Matryoshka: 32 / 64 / 96 / 128)
  • Similarity Function: MaxSim
  • Language: Korean
  • License: Apache-2.0

Model Sources

Full Model Architecture

ColBERTWrapper(
  (0): Transformer({'max_seq_length': 2047, '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})
)

Usage

This model supports Matryoshka embeddings with multiple dimensions (32, 64, 96, 128) via separate projection heads (Jina-ColBERT-v2 style).

The model ships a bundled model.py so it can be loaded with the transformers library alone — no third-party retrieval package is required. The custom code is opt-in: pass trust_remote_code=True to from_pretrained.

Installation

pip install transformers torch

Quick Start

from transformers import AutoModel, AutoTokenizer

tokenizer = AutoTokenizer.from_pretrained("dragonkue/colbert-ko-0.1b")
model = AutoModel.from_pretrained(
    "dragonkue/colbert-ko-0.1b",
    trust_remote_code=True,
)
model.eval()
# model.cuda()  # optional

# Pick embedding dimension (32, 64, 96, or 128). Default is 128.
model.set_active_dim(128)

queries = ["검색 쿼리"]
documents = ["문서 내용"]

q_embs = model.encode(tokenizer, queries, is_query=True)
d_embs = model.encode(tokenizer, documents, is_query=False)

print(f"Query shape: {q_embs[0].shape}")  # (num_tokens, 128)
print(f"Doc shape:   {d_embs[0].shape}")  # (num_tokens, 128)

# ColBERT late-interaction (MaxSim) score for one (query, doc) pair
score = model.maxsim(q_embs[0], d_embs[0])
print(f"MaxSim: {score:.4f}")

Reranking

query = "대한민국의 수도는 어디인가요?"
candidates = [
    "대한민국의 수도는 서울이며, 인구가 가장 많은 도시이다.",
    "파리는 프랑스의 수도이고 에펠탑으로 유명하다.",
    "오늘 날씨는 맑고 기온은 25도 정도이다.",
]

q_embs = model.encode(tokenizer, [query], is_query=True)
c_embs = model.encode(tokenizer, candidates, is_query=False)

ranked = sorted(
    [(i, model.maxsim(q_embs[0], c_embs[i])) for i in range(len(candidates))],
    key=lambda x: x[1],
    reverse=True,
)
for rank, (i, score) in enumerate(ranked, start=1):
    print(f"  rank {rank}: score={score:.4f}  | {candidates[i]}")

Approximate Retrieval (PyLate PLAID, optional)

For PLAID indexing over a large corpus you can additionally use PyLate. PyLate loads the model as a standard sentence-transformers checkpoint (no trust_remote_code needed). The 128-dim head saved at 1_Dense/model.safetensors matches the Matryoshka 128-dim head, so PyLate produces the same embeddings as the snippet above.

from pylate import indexes, models, retrieve

model = models.ColBERT(model_name_or_path="dragonkue/colbert-ko-0.1b")

index = indexes.PLAID(
    index_folder="pylate-index",
    index_name="index",
    override=True,
)

documents_ids = ["1", "2", "3"]
documents = ["첫번째 문서입니다", "두번째 문서입니다", "세번째 문서입니다"]

documents_embeddings = model.encode(documents, is_query=False)
index.add_documents(
    documents_ids=documents_ids,
    documents_embeddings=documents_embeddings,
)

retriever = retrieve.ColBERT(index=index)
queries_embeddings = model.encode(["첫번째 문서 검색"], is_query=True)
scores = retriever.retrieve(queries_embeddings=queries_embeddings, k=3)
print(scores)

The PyLate path is fixed to the 128-dim head; for Matryoshka dimension switching (32 / 64 / 96 / 128), use the trust_remote_code=True path shown above.

Evaluation Results (NDCG@10)

Comparison with Other Models (dim128)

ModelAutoRAGKo-StrategyQANanoBEIR-KoAvg
dragonkue-colbert-ko-0.1b (149M)0.9700.7350.5030.737
BGE-M3-MultiVec (568M)0.8440.7970.5690.737
LFM2-ColBERT (353M)0.8330.7570.5280.706
colbert-ko-v1 (149M)0.9660.7130.4760.718

Performance by Embedding Dimension

DimensionAutoRAGKo-StrategyQANanoBEIR-Ko
320.9760.7130.485
640.9790.7250.492
960.9690.7390.501
1280.9700.7350.503

Differences across dimensions are small (within ≈0.01 on each benchmark) and can flip between runs on the more saturated benchmarks such as AutoRAG. The 128-dim head is the default; smaller dimensions trade a few points of NDCG for a 2–4× reduction in vector size.

Scores for dragonkue-colbert-ko-0.1b are measured here with raw MaxSim (no PLAID quantization) on transformers==5.3.0 and pytorch==2.9. Scores for the other models are reproduced from prior reports and may differ from a re-run on the same stack.

  • Loss: src.losses.MatryoshkaColBERTLoss with these parameters:
    {
        "dims": [
            32,
            64,
            96,
            128
        ],
        "weights": [
            0.25,
            0.25,
            0.25,
            0.25
        ],
        "temperature": 1.0
    }
    

Training Hyperparameters

Non-Default Hyperparameters

  • eval_strategy: steps
  • per_device_train_batch_size: 64
  • learning_rate: 1e-05
  • num_train_epochs: 2
  • warmup_ratio: 0.1
  • fp16: True
  • dataloader_drop_last: True
  • gradient_checkpointing: True
  • gradient_checkpointing_kwargs: {'use_reentrant': False}
  • router_mapping: {'anchor': 'query', 'positive': 'document', 'neg_0': 'document'}

All Hyperparameters

  • overwrite_output_dir: False
  • do_predict: False
  • eval_strategy: steps
  • prediction_loss_only: True
  • per_device_train_batch_size: 64
  • per_device_eval_batch_size: 8
  • per_gpu_train_batch_size: None
  • per_gpu_eval_batch_size: None
  • gradient_accumulation_steps: 1
  • eval_accumulation_steps: None
  • torch_empty_cache_steps: None
  • learning_rate: 1e-05
  • weight_decay: 0.0
  • adam_beta1: 0.9
  • adam_beta2: 0.999
  • adam_epsilon: 1e-08
  • max_grad_norm: 1.0
  • num_train_epochs: 2
  • max_steps: -1
  • lr_scheduler_type: linear
  • lr_scheduler_kwargs: {}
  • warmup_ratio: 0.1
  • warmup_steps: 0
  • log_level: passive
  • log_level_replica: warning
  • log_on_each_node: True
  • logging_nan_inf_filter: True
  • save_safetensors: True
  • save_on_each_node: False
  • save_only_model: False
  • restore_callback_states_from_checkpoint: False
  • no_cuda: False
  • use_cpu: False
  • use_mps_device: False
  • seed: 42
  • data_seed: None
  • jit_mode_eval: False
  • use_ipex: False
  • bf16: False
  • fp16: True
  • fp16_opt_level: O1
  • half_precision_backend: auto
  • bf16_full_eval: False
  • fp16_full_eval: False
  • tf32: None
  • local_rank: 0
  • ddp_backend: None
  • tpu_num_cores: None
  • tpu_metrics_debug: False
  • debug: []
  • dataloader_drop_last: True
  • dataloader_num_workers: 0
  • dataloader_prefetch_factor: None
  • past_index: -1
  • disable_tqdm: False
  • remove_unused_columns: True
  • label_names: None
  • load_best_model_at_end: False
  • ignore_data_skip: False
  • fsdp: []
  • fsdp_min_num_params: 0
  • fsdp_config: {'min_num_params': 0, 'xla': False, 'xla_fsdp_v2': False, 'xla_fsdp_grad_ckpt': False}
  • fsdp_transformer_layer_cls_to_wrap: None
  • accelerator_config: {'split_batches': False, 'dispatch_batches': None, 'even_batches': True, 'use_seedable_sampler': True, 'non_blocking': False, 'gradient_accumulation_kwargs': None}
  • parallelism_config: None
  • deepspeed: None
  • label_smoothing_factor: 0.0
  • optim: adamw_torch_fused
  • optim_args: None
  • adafactor: False
  • group_by_length: False
  • length_column_name: length
  • ddp_find_unused_parameters: None
  • ddp_bucket_cap_mb: None
  • ddp_broadcast_buffers: False
  • dataloader_pin_memory: True
  • dataloader_persistent_workers: False
  • skip_memory_metrics: True
  • use_legacy_prediction_loop: False
  • push_to_hub: False
  • resume_from_checkpoint: None
  • hub_model_id: None
  • hub_strategy: every_save
  • hub_private_repo: None
  • hub_always_push: False
  • hub_revision: None
  • gradient_checkpointing: True
  • gradient_checkpointing_kwargs: {'use_reentrant': False}
  • include_inputs_for_metrics: False
  • include_for_metrics: []
  • eval_do_concat_batches: True
  • fp16_backend: auto
  • push_to_hub_model_id: None
  • push_to_hub_organization: None
  • mp_parameters:
  • auto_find_batch_size: False
  • full_determinism: False
  • torchdynamo: None
  • ray_scope: last
  • ddp_timeout: 1800
  • torch_compile: False
  • torch_compile_backend: None
  • torch_compile_mode: None
  • include_tokens_per_second: False
  • include_num_input_tokens_seen: False
  • neftune_noise_alpha: None
  • optim_target_modules: None
  • batch_eval_metrics: False
  • eval_on_start: False
  • use_liger_kernel: False
  • liger_kernel_config: None
  • eval_use_gather_object: False
  • average_tokens_across_devices: False
  • prompts: None
  • batch_sampler: batch_sampler
  • multi_dataset_batch_sampler: proportional
  • router_mapping: {'anchor': 'query', 'positive': 'document', 'neg_0': 'document'}
  • learning_rate_mapping: {}

Training Logs

EpochStepTraining Loss
0.0017104.1388
0.0034204.1142
0.0051303.9797
0.0067403.8761
0.0084503.6167
0.0101603.424
0.0118703.0256
0.0135802.827
0.0152902.5787
0.01691002.2696
0.01851102.0266
0.02021201.6815
0.02191301.4739
0.02361401.2877
0.02531501.1474
0.02701601.0143
0.02861700.9363
0.03031800.9189
0.03201900.7442
0.03372000.6919
0.03542100.6251
0.03712200.6527
0.03882300.5923
0.04042400.572
0.04212500.5255
0.04382600.4407
0.04552700.5038
0.04722800.3939
0.04892900.3938
0.05063000.3253
0.05223100.335
0.05393200.2855
0.05563300.2396
0.05733400.252
0.05903500.2299
0.06073600.2133
0.06243700.2186
0.06403800.1935
0.06573900.1743
0.06744000.1462
0.06914100.1552
0.07084200.1491
0.07254300.1581
0.07414400.1635
0.07584500.1383
0.07754600.1377
0.07924700.1155
0.08094800.1184
0.08264900.1333
0.08435000.1341
0.08595100.1259
0.08765200.0748
0.08935300.1342
0.09105400.1058
0.09275500.1024
0.09445600.0921
0.09615700.104
0.09775800.1069
0.09945900.0925
0.10116000.1146
0.10286100.0682
0.10456200.0711
0.10626300.1491
0.10796400.0602
0.10956500.0753
0.11126600.0713
0.11296700.0739
0.11466800.0783
0.11636900.0678
0.11807000.0963
0.11967100.0677
0.12137200.0829
0.12307300.0719
0.12477400.0646
0.12647500.0927
0.12817600.0755
0.12987700.0799
0.13147800.0535
0.13317900.0555
0.13488000.0804
0.13658100.0627
0.13828200.0726
0.13998300.0685
0.14168400.0421
0.14328500.0895
0.14498600.0964
0.14668700.0515
0.14838800.0825
0.15008900.0801
0.15179000.0579
0.15349100.0559
0.15509200.0432
0.15679300.0553
0.15849400.0577
0.16019500.0451
0.16189600.049
0.16359700.0459
0.16519800.0684
0.16689900.0449
0.168510000.0392
0.170210100.071
0.171910200.0511
0.173610300.0501
0.175310400.0464
0.176910500.0678
0.178610600.0597
0.180310700.0569
0.182010800.044
0.183710900.0452
0.185411000.0394
0.187111100.0496
0.188711200.0296
0.190411300.0321
0.192111400.0525
0.193811500.058
0.195511600.0552
0.197211700.035
0.198911800.0468
0.19991186-
0.200511900.0383
0.202212000.0599
0.203912100.0572
0.205612200.0383
0.207312300.0486
0.209012400.0407
0.210712500.044
0.212312600.04
0.214012700.0338
0.215712800.036
0.217412900.0511
0.219113000.0472
0.220813100.031
0.222413200.0614
0.224113300.0388
0.225813400.0403
0.227513500.047
0.229213600.033
0.230913700.0524
0.232613800.0357
0.234213900.0463
0.235914000.0355
0.237614100.0411
0.239314200.028
0.241014300.0386
0.242714400.0553
0.244414500.0353
0.246014600.0462
0.247714700.0399
0.249414800.0319
0.251114900.0456
0.252815000.0302
0.254515100.0366
0.256215200.0409
0.257815300.0337
0.259515400.0362
0.261215500.0318
0.262915600.0433
0.264615700.0379
0.266315800.0419
0.267915900.0225
0.269616000.0269
0.271316100.0295
0.273016200.048
0.274716300.0382
0.276416400.0341
0.278116500.0334
0.279716600.0534
0.281416700.0445
0.283116800.0284
0.284816900.0327
0.286517000.0309
0.288217100.0372
0.289917200.0384
0.291517300.022
0.293217400.0266
0.294917500.0399
0.296617600.0342
0.298317700.0391
0.300017800.0349
0.301717900.0365
0.303318000.0322
0.305018100.0414
0.306718200.0297
0.308418300.0446
0.310118400.0312
0.311818500.0379
0.313418600.0252
0.315118700.0424
0.316818800.0367
0.318518900.0226
0.320219000.0319
0.321919100.0189
0.323619200.0219
0.325219300.0341
0.326919400.0505
0.328619500.0176
0.330319600.0328
0.332019700.0276
0.333719800.0251
0.335419900.0603
0.337020000.0243
0.338720100.0316
0.340420200.0294
0.342120300.025
0.343820400.0255
0.345520500.0318
0.347220600.025
0.348820700.0273
0.350520800.0338
0.352220900.0299
0.353921000.0275
0.355621100.0184
0.357321200.0244
0.358921300.0432
0.360621400.0325
0.362321500.0525
0.364021600.0329
0.365721700.0236
0.367421800.0309
0.369121900.0195
0.370722000.0318
0.372422100.0229
0.374122200.0312
0.375822300.0186
0.377522400.0231
0.379222500.0262
0.380922600.0287
0.382522700.0299
0.384222800.0302
0.385922900.0281
0.387623000.0252
0.389323100.0362
0.391023200.0266
0.392723300.0304
0.394323400.0259
0.396023500.0276
0.397723600.0219
0.399423700.0361
0.39972372-

Framework Versions

  • Python: 3.11.13
  • Sentence Transformers: 5.1.1
  • PyLate: 1.3.4
  • Transformers: 4.56.2
  • PyTorch: 2.8.0+cu128
  • Accelerate: 1.12.0
  • Datasets: 4.4.1
  • Tokenizers: 0.22.2-rc0

Citation

BibTeX

Sentence Transformers

@inproceedings{reimers-2019-sentence-bert,
    title = "Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks",
    author = "Reimers, Nils and Gurevych, Iryna",
    booktitle = "Proceedings of the 2019 Conference on Empirical Methods in Natural Language Processing",
    month = "11",
    year = "2019",
    publisher = "Association for Computational Linguistics",
    url = "https://arxiv.org/abs/1908.10084"
}

PyLate

@misc{PyLate,
title={PyLate: Flexible Training and Retrieval for Late Interaction Models},
author={Chaffin, Antoine and Sourty, Raphaël},
url={https://github.com/lightonai/pylate},
year={2024}
}

Jina ColBERT v2

@article{jina-colbert-v2,
    title={Jina-ColBERT-v2: A General-Purpose Multilingual Late Interaction Retriever},
    author={Rohan Jha and Bo Wang and Michael Günther and Saba Sturua and Mohammad Kalim Akram and Han Xiao},
    year={2024},
    journal={arXiv preprint arXiv:2408.16672},
    url={https://arxiv.org/abs/2408.16672}
}

Как запустить

На своей GPU в ailist. Цена — по текущим предложениям провайдеров

GPU в ailist

Универсальный рантайм · PyLate

Нельзя запустить

Модели PyLate (ColBERT) требуют отдельного рантайма.

Класс архитектуры
ModernBertModel
Ревизия весов
3787e56

0 моделей