Views
No views yet
ColBERT(
(0): Transformer({'max_seq_length': 512, '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})
)pip install -U pylate1from pylate import indexes, models, retrieve
2
3# Step 1: Load the ColBERT model
4model = models.ColBERT(
5 model_name_or_path="pylate_model_id",
6)
7
8# Step 2: Initialize the PLAID index
9index = indexes.PLAID(
10 index_folder="pylate-index",
11 index_name="index",
12 override=True, # This overwrites the existing index if any
13)
14
15# Step 3: Encode the documents
16documents_ids = ["1", "2", "3"]
17documents = ["document 1 text", "document 2 text", "document 3 text"]
18
19documents_embeddings = model.encode(
20 documents,
21 batch_size=32,
22 is_query=False, # Ensure that it is set to False to indicate that these are documents, not queries
23 show_progress_bar=True,
24)
25
26# Step 4: Add document embeddings to the index by providing embeddings and corresponding ids
27index.add_documents(
28 documents_ids=documents_ids,
29 documents_embeddings=documents_embeddings,
30)1# To load an index, simply instantiate it with the correct folder/name and without overriding it
2index = indexes.PLAID(
3 index_folder="pylate-index",
4 index_name="index",
5)1# Step 1: Initialize the ColBERT retriever
2retriever = retrieve.ColBERT(index=index)
3
4# Step 2: Encode the queries
5queries_embeddings = model.encode(
6 ["query for document 3", "query for document 1"],
7 batch_size=32,
8 is_query=True, # # Ensure that it is set to False to indicate that these are queries
9 show_progress_bar=True,
10)
11
12# Step 3: Retrieve top-k documents
13scores = retriever.retrieve(
14 queries_embeddings=queries_embeddings,
15 k=10, # Retrieve the top 10 matches for each query
16)1from pylate import rank, models
2
3queries = [
4 "query A",
5 "query B",
6]
7
8documents = [
9 ["document A", "document B"],
10 ["document 1", "document C", "document B"],
11]
12
13documents_ids = [
14 [1, 2],
15 [1, 3, 2],
16]
17
18model = models.ColBERT(
19 model_name_or_path="pylate_model_id",
20)
21
22queries_embeddings = model.encode(
23 queries,
24 is_query=True,
25)
26
27documents_embeddings = model.encode(
28 documents,
29 is_query=False,
30)
31
32reranked_documents = rank.rerank(
33 documents_ids=documents_ids,
34 queries_embeddings=queries_embeddings,
35 documents_embeddings=documents_embeddings,
36)['NanoClimateFEVER', 'NanoDBPedia', 'NanoFEVER', 'NanoFiQA2018', 'NanoHotpotQA', 'NanoMSMARCO', 'NanoNFCorpus', 'NanoNQ', 'NanoQuoraRetrieval', 'NanoSCIDOCS', 'NanoArguAna', 'NanoSciFact', 'NanoTouche2020']pylate.evaluation.pylate_information_retrieval_evaluator.PyLateInformationRetrievalEvaluator| Metric | NanoClimateFEVER | NanoDBPedia | NanoFEVER | NanoFiQA2018 | NanoHotpotQA | NanoMSMARCO | NanoNFCorpus | NanoNQ | NanoQuoraRetrieval | NanoSCIDOCS | NanoArguAna | NanoSciFact | NanoTouche2020 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| MaxSim_accuracy@1 | 0.28 | 0.8 | 0.86 | 0.52 | 0.9 | 0.52 | 0.44 | 0.5 | 0.88 | 0.5 | 0.16 | 0.74 | 0.7959 |
| MaxSim_accuracy@3 | 0.6 | 0.9 | 0.96 | 0.64 | 0.98 | 0.68 | 0.6 | 0.74 | 0.98 | 0.72 | 0.56 | 0.82 | 0.9796 |
| MaxSim_accuracy@5 | 0.66 | 0.92 | 1.0 | 0.7 | 1.0 | 0.76 | 0.62 | 0.86 | 1.0 | 0.82 | 0.66 | 0.84 | 0.9796 |
| MaxSim_accuracy@10 | 0.8 | 0.94 | 1.0 | 0.82 | 1.0 | 0.86 | 0.72 | 0.9 | 1.0 | 0.84 | 0.76 | 0.88 | 1.0 |
| MaxSim_precision@1 | 0.28 | 0.8 | 0.86 | 0.52 | 0.9 | 0.52 | 0.44 | 0.5 | 0.88 | 0.5 | 0.16 | 0.74 | 0.7959 |
| MaxSim_precision@3 | 0.2133 | 0.68 | 0.3267 | 0.3 | 0.5333 | 0.2267 | 0.3933 | 0.2467 | 0.4 | 0.3667 | 0.1867 | 0.2933 | 0.7143 |
| MaxSim_precision@5 | 0.156 | 0.64 | 0.208 | 0.232 | 0.34 | 0.152 | 0.352 | 0.176 | 0.26 | 0.284 | 0.132 | 0.188 | 0.6653 |
| MaxSim_precision@10 | 0.114 | 0.556 | 0.104 | 0.144 | 0.174 | 0.086 | 0.264 | 0.096 | 0.138 | 0.182 | 0.076 | 0.098 | 0.5245 |
| MaxSim_recall@1 | 0.1417 | 0.1015 | 0.8167 | 0.3261 | 0.45 | 0.52 | 0.0423 | 0.49 | 0.7673 | 0.1057 | 0.16 | 0.705 | 0.0545 |
| MaxSim_recall@3 | 0.28 | 0.1811 | 0.9067 | 0.4551 | 0.8 | 0.68 | 0.0815 | 0.7 | 0.9387 | 0.2267 | 0.56 | 0.795 | 0.1449 |
| MaxSim_recall@5 | 0.3233 | 0.2558 | 0.9567 | 0.518 | 0.85 | 0.76 | 0.0982 | 0.82 | 0.9793 | 0.2917 | 0.66 | 0.83 | 0.2233 |
| MaxSim_recall@10 | 0.4433 | 0.3881 | 0.9567 | 0.6385 | 0.87 | 0.86 | 0.1248 | 0.86 | 0.9967 | 0.3717 | 0.76 | 0.87 | 0.3397 |
| MaxSim_ndcg@10 | 0.3515 | 0.686 | 0.9081 | 0.5522 | 0.842 | 0.6811 | 0.3324 | 0.6842 | 0.942 | 0.3832 | 0.4618 | 0.8016 | 0.6049 |
| MaxSim_mrr@10 | 0.4419 | 0.8573 | 0.92 | 0.6034 | 0.944 | 0.625 | 0.5284 | 0.6359 | 0.934 | 0.624 | 0.3655 | 0.7864 | 0.8771 |
| MaxSim_map@100 | 0.2679 | 0.5297 | 0.8815 | 0.4856 | 0.7821 | 0.6334 | 0.1501 | 0.6242 | 0.9164 | 0.2933 | 0.3743 | 0.7801 | 0.4447 |
NanoBEIR_meanpylate.evaluation.nano_beir_evaluator.NanoBEIREvaluator| Metric | Value |
|---|---|
| MaxSim_accuracy@1 | 0.6074 |
| MaxSim_accuracy@3 | 0.7815 |
| MaxSim_accuracy@5 | 0.8323 |
| MaxSim_accuracy@10 | 0.8862 |
| MaxSim_precision@1 | 0.6074 |
| MaxSim_precision@3 | 0.3755 |
| MaxSim_precision@5 | 0.2912 |
| MaxSim_precision@10 | 0.1967 |
| MaxSim_recall@1 | 0.3601 |
| MaxSim_recall@3 | 0.5192 |
| MaxSim_recall@5 | 0.582 |
| MaxSim_recall@10 | 0.6523 |
| MaxSim_ndcg@10 | 0.6331 |
| MaxSim_mrr@10 | 0.7033 |
| MaxSim_map@100 | 0.551 |
query_id, document_ids, and scores| query_id | document_ids | scores | |
|---|---|---|---|
| type | int | list | list |
| details |
|
|
|
| query_id | document_ids | scores |
|---|---|---|
685613 | [7546874, 1176459, 197677, 2306318, 8541504, ...] | [0.9999999992804947, 0.24845418756716053, 0.7594154013647826, 0.26644182105618575, 0.390668914839766, ...] |
237784 | [6366584, 4034101, 2325374, 6914618, 6042146, ...] | [0.9999999991784339, 0.42233632827946693, 0.5956354295491569, 0.12644415907455164, 0.6636713730105909, ...] |
904294 | [448408, 8743975, 49600, 7339401, 2714261, ...] | [0.9999999991841937, 0.877629062381539, 0.8330146583389045, 0.3116634796692611, 0.4633524534142185, ...] |
pylate.losses.distillation.Distillationeval_strategy: stepsper_device_train_batch_size: 16learning_rate: 4e-06max_steps: 20000fp16: Truedataloader_drop_last: Truedataloader_num_workers: 8ddp_find_unused_parameters: Falsetorch_compile: Truetorch_compile_backend: inductoreval_on_start: Trueoverwrite_output_dir: Falsedo_predict: Falseeval_strategy: stepsprediction_loss_only: Trueper_device_train_batch_size: 16per_device_eval_batch_size: 8per_gpu_train_batch_size: Noneper_gpu_eval_batch_size: Nonegradient_accumulation_steps: 1eval_accumulation_steps: Nonetorch_empty_cache_steps: Nonelearning_rate: 4e-06weight_decay: 0.0adam_beta1: 0.9adam_beta2: 0.999adam_epsilon: 1e-08max_grad_norm: 1.0num_train_epochs: 3.0max_steps: 20000lr_scheduler_type: linearlr_scheduler_kwargs: {}warmup_ratio: 0.0warmup_steps: 0log_level: passivelog_level_replica: warninglog_on_each_node: Truelogging_nan_inf_filter: Truesave_safetensors: Truesave_on_each_node: Falsesave_only_model: Falserestore_callback_states_from_checkpoint: Falseno_cuda: Falseuse_cpu: Falseuse_mps_device: Falseseed: 42data_seed: Nonejit_mode_eval: Falseuse_ipex: Falsebf16: Falsefp16: Truefp16_opt_level: O1half_precision_backend: autobf16_full_eval: Falsefp16_full_eval: Falsetf32: Nonelocal_rank: 0ddp_backend: Nonetpu_num_cores: Nonetpu_metrics_debug: Falsedebug: []dataloader_drop_last: Truedataloader_num_workers: 8dataloader_prefetch_factor: Nonepast_index: -1disable_tqdm: Falseremove_unused_columns: Truelabel_names: Noneload_best_model_at_end: Falseignore_data_skip: Falsefsdp: []fsdp_min_num_params: 0fsdp_config: {'min_num_params': 0, 'xla': False, 'xla_fsdp_v2': False, 'xla_fsdp_grad_ckpt': False}fsdp_transformer_layer_cls_to_wrap: Noneaccelerator_config: {'split_batches': False, 'dispatch_batches': None, 'even_batches': True, 'use_seedable_sampler': True, 'non_blocking': False, 'gradient_accumulation_kwargs': None}parallelism_config: Nonedeepspeed: Nonelabel_smoothing_factor: 0.0optim: adamw_torchoptim_args: Noneadafactor: Falsegroup_by_length: Falselength_column_name: lengthddp_find_unused_parameters: Falseddp_bucket_cap_mb: Noneddp_broadcast_buffers: Falsedataloader_pin_memory: Truedataloader_persistent_workers: Falseskip_memory_metrics: Trueuse_legacy_prediction_loop: Falsepush_to_hub: Falseresume_from_checkpoint: Nonehub_model_id: Nonehub_strategy: every_savehub_private_repo: Nonehub_always_push: Falsehub_revision: Nonegradient_checkpointing: Falsegradient_checkpointing_kwargs: Noneinclude_inputs_for_metrics: Falseinclude_for_metrics: []eval_do_concat_batches: Truefp16_backend: autopush_to_hub_model_id: Nonepush_to_hub_organization: Nonemp_parameters:auto_find_batch_size: Falsefull_determinism: Falsetorchdynamo: Noneray_scope: lastddp_timeout: 1800torch_compile: Truetorch_compile_backend: inductortorch_compile_mode: Noneinclude_tokens_per_second: Falseinclude_num_input_tokens_seen: Falseneftune_noise_alpha: Noneoptim_target_modules: Nonebatch_eval_metrics: Falseeval_on_start: Trueuse_liger_kernel: Falseliger_kernel_config: Noneeval_use_gather_object: Falseaverage_tokens_across_devices: Falseprompts: Nonebatch_sampler: batch_samplermulti_dataset_batch_sampler: proportionalrouter_mapping: {}learning_rate_mapping: {}