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.32 | 0.78 | 0.86 | 0.58 | 0.9 | 0.52 | 0.52 | 0.52 | 0.9 | 0.48 | 0.2 | 0.68 | 0.7959 |
| MaxSim_accuracy@3 | 0.52 | 0.92 | 1.0 | 0.68 | 0.98 | 0.7 | 0.62 | 0.78 | 0.96 | 0.68 | 0.54 | 0.82 | 0.9796 |
| MaxSim_accuracy@5 | 0.62 | 0.92 | 1.0 | 0.74 | 1.0 | 0.76 | 0.64 | 0.82 | 1.0 | 0.78 | 0.66 | 0.82 | 0.9796 |
| MaxSim_accuracy@10 | 0.78 | 0.96 | 1.0 | 0.8 | 1.0 | 0.88 | 0.68 | 0.88 | 1.0 | 0.84 | 0.84 | 0.86 | 1.0 |
| MaxSim_precision@1 | 0.32 | 0.78 | 0.86 | 0.58 | 0.9 | 0.52 | 0.52 | 0.52 | 0.9 | 0.48 | 0.2 | 0.68 | 0.7959 |
| MaxSim_precision@3 | 0.1867 | 0.68 | 0.34 | 0.3333 | 0.5333 | 0.2333 | 0.4067 | 0.2667 | 0.3867 | 0.3333 | 0.18 | 0.2933 | 0.7347 |
| MaxSim_precision@5 | 0.144 | 0.624 | 0.212 | 0.244 | 0.344 | 0.152 | 0.348 | 0.168 | 0.252 | 0.276 | 0.132 | 0.18 | 0.6612 |
| MaxSim_precision@10 | 0.1 | 0.55 | 0.108 | 0.144 | 0.18 | 0.088 | 0.266 | 0.096 | 0.136 | 0.184 | 0.084 | 0.096 | 0.5449 |
| MaxSim_recall@1 | 0.1417 | 0.1049 | 0.7967 | 0.3427 | 0.45 | 0.52 | 0.044 | 0.5 | 0.7873 | 0.1007 | 0.2 | 0.655 | 0.0529 |
| MaxSim_recall@3 | 0.2367 | 0.1982 | 0.9467 | 0.4897 | 0.8 | 0.7 | 0.0797 | 0.75 | 0.9147 | 0.2057 | 0.54 | 0.805 | 0.1461 |
| MaxSim_recall@5 | 0.305 | 0.2542 | 0.9633 | 0.5713 | 0.86 | 0.76 | 0.0993 | 0.78 | 0.9693 | 0.2827 | 0.66 | 0.81 | 0.2149 |
| MaxSim_recall@10 | 0.399 | 0.3951 | 0.97 | 0.6225 | 0.9 | 0.88 | 0.1445 | 0.85 | 0.9933 | 0.3757 | 0.84 | 0.86 | 0.345 |
| MaxSim_ndcg@10 | 0.3247 | 0.6799 | 0.9122 | 0.5727 | 0.8515 | 0.6876 | 0.3489 | 0.6926 | 0.9404 | 0.3745 | 0.4987 | 0.7766 | 0.62 |
| MaxSim_mrr@10 | 0.4476 | 0.8451 | 0.9233 | 0.6535 | 0.9383 | 0.6282 | 0.5731 | 0.6515 | 0.9367 | 0.5934 | 0.3909 | 0.7487 | 0.8832 |
| MaxSim_map@100 | 0.2503 | 0.534 | 0.8818 | 0.5102 | 0.7876 | 0.6363 | 0.1545 | 0.6383 | 0.9156 | 0.2848 | 0.3943 | 0.7538 | 0.4437 |
NanoBEIR_meanpylate.evaluation.nano_beir_evaluator.NanoBEIREvaluator| Metric | Value |
|---|---|
| MaxSim_accuracy@1 | 0.6197 |
| MaxSim_accuracy@3 | 0.783 |
| MaxSim_accuracy@5 | 0.8261 |
| MaxSim_accuracy@10 | 0.8862 |
| MaxSim_precision@1 | 0.6197 |
| MaxSim_precision@3 | 0.3775 |
| MaxSim_precision@5 | 0.2875 |
| MaxSim_precision@10 | 0.1982 |
| MaxSim_recall@1 | 0.3612 |
| MaxSim_recall@3 | 0.524 |
| MaxSim_recall@5 | 0.5792 |
| MaxSim_recall@10 | 0.6596 |
| MaxSim_ndcg@10 | 0.6369 |
| MaxSim_mrr@10 | 0.7087 |
| MaxSim_map@100 | 0.5527 |
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: {}