AdamLucek/legal-rag-positives-synthetic
Viewer • Updated • 6.47k • 55 • 4
How to use AdamLucek/ModernBERT-embed-base-legal-MRL with sentence-transformers:
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("AdamLucek/ModernBERT-embed-base-legal-MRL")
sentences = [
"this information about the two documents withheld in part under the deliberative-process \n128 \n \nprivilege in No. 11-444, see First Lutz Decl. Ex. DD at 17, 141, but the descriptions of the \ndecisionmaking authority are generic, stating that the withheld information is a “recommendation \nfrom the [FOIA] analyst to his/her supervisor,” id. at 17, and a “recommendation from the",
"What did the plaintiff assert about the CIA's inaccurate representations?",
"What type of document is mentioned as an exhibit in conjunction with the withheld documents?",
"¿Qué ámbito jurisdiccional es mencionado en el contexto de derechos sobre la propia imagen?"
]
embeddings = model.encode(sentences)
similarities = model.similarity(embeddings, embeddings)
print(similarities.shape)
# [4, 4]This is a sentence-transformers model finetuned from nomic-ai/modernbert-embed-base on the AdamLucek/legal-rag-positives-synthetic dataset. It maps sentences & paragraphs to a 768-dimensional dense vector space and can be used for semantic textual similarity, semantic search, paraphrase mining, text classification, clustering, and more.
SentenceTransformer(
(0): Transformer({'max_seq_length': 8192, 'do_lower_case': False}) with Transformer model: ModernBertModel
(1): Pooling({'word_embedding_dimension': 768, 'pooling_mode_cls_token': False, 'pooling_mode_mean_tokens': True, 'pooling_mode_max_tokens': False, 'pooling_mode_mean_sqrt_len_tokens': False, 'pooling_mode_weightedmean_tokens': False, 'pooling_mode_lasttoken': False, 'include_prompt': True})
(2): Normalize()
)
First install the Sentence Transformers library:
pip install -U sentence-transformers
Then you can load this model and run inference.
from sentence_transformers import SentenceTransformer
# Download from the 🤗 Hub
model = SentenceTransformer("AdamLucek/ModernBERT-embed-base-legal-MRL")
# Run inference
sentences = [
'contracting/contracting-assistance-programs/sba-mentor-protege-program (last visited Apr. 19, \n2023). \n5 \n \nprotégé must demonstrate that the added mentor-protégé relationship will not adversely affect the \ndevelopment of either protégé firm (e.g., the second firm may not be a competitor of the first \nfirm).” 13 C.F.R. § 125.9(b)(3).',
'What must the protégé demonstrate about the mentor-protégé relationship?',
'What discretion do district courts have regarding a defendant’s invocation of FOIA exemptions?',
]
embeddings = model.encode(sentences)
print(embeddings.shape)
# [3, 768]
# Get the similarity scores for the embeddings
similarities = model.similarity(embeddings, embeddings)
print(similarities.shape)
# [3, 3]
dim_768, dim_512, dim_256, dim_128 and dim_64InformationRetrievalEvaluator| Metric | dim_768 | dim_512 | dim_256 | dim_128 | dim_64 |
|---|---|---|---|---|---|
| cosine_accuracy@1 | 0.5286 | 0.5162 | 0.4822 | 0.4158 | 0.3122 |
| cosine_accuracy@3 | 0.5719 | 0.5487 | 0.5286 | 0.4436 | 0.3509 |
| cosine_accuracy@5 | 0.6646 | 0.6414 | 0.5981 | 0.5363 | 0.4359 |
| cosine_accuracy@10 | 0.7311 | 0.7172 | 0.6785 | 0.6105 | 0.4791 |
| cosine_precision@1 | 0.5286 | 0.5162 | 0.4822 | 0.4158 | 0.3122 |
| cosine_precision@3 | 0.5142 | 0.4982 | 0.4699 | 0.3993 | 0.3091 |
| cosine_precision@5 | 0.3941 | 0.3808 | 0.3586 | 0.3128 | 0.2504 |
| cosine_precision@10 | 0.2329 | 0.2272 | 0.2147 | 0.1924 | 0.1498 |
| cosine_recall@1 | 0.1788 | 0.174 | 0.1627 | 0.1426 | 0.105 |
| cosine_recall@3 | 0.4894 | 0.4735 | 0.4493 | 0.3836 | 0.2955 |
| cosine_recall@5 | 0.6121 | 0.5911 | 0.5569 | 0.4878 | 0.3931 |
| cosine_recall@10 | 0.7184 | 0.7023 | 0.6642 | 0.5963 | 0.4681 |
| cosine_ndcg@10 | 0.63 | 0.6138 | 0.5781 | 0.5109 | 0.3956 |
| cosine_mrr@10 | 0.5741 | 0.5593 | 0.5249 | 0.4573 | 0.3509 |
| cosine_map@100 | 0.6186 | 0.6022 | 0.5698 | 0.503 | 0.3939 |
positive and anchor| positive | anchor | |
|---|---|---|
| type | string | string |
| details |
|
|
| positive | anchor |
|---|---|
infrastructure security information,” the information at issue must, “if disclosed . . . reveal vulner- |
What type of information must reveal vulnerabilities if disclosed? |
they have bid.” Oral Arg. Tr. at 42:18–20. Plaintiffs also assert that, should this Court require the |
Where in the document can further discussion about the assertion be found? |
otra parte. Fernández v. San Juan Cement Co., Inc., 118 DPR 713, |
What case is cited with the reference number 118 DPR 713? |
MatryoshkaLoss with these parameters:{
"loss": "MultipleNegativesRankingLoss",
"matryoshka_dims": [
768,
512,
256,
128,
64
],
"matryoshka_weights": [
1,
1,
1,
1,
1
],
"n_dims_per_step": -1
}
eval_strategy: epochper_device_train_batch_size: 32per_device_eval_batch_size: 16gradient_accumulation_steps: 16learning_rate: 2e-05num_train_epochs: 4lr_scheduler_type: cosinewarmup_ratio: 0.1bf16: Truetf32: Trueload_best_model_at_end: Trueoptim: adamw_torch_fusedbatch_sampler: no_duplicatesoverwrite_output_dir: Falsedo_predict: Falseeval_strategy: epochprediction_loss_only: Trueper_device_train_batch_size: 32per_device_eval_batch_size: 16per_gpu_train_batch_size: Noneper_gpu_eval_batch_size: Nonegradient_accumulation_steps: 16eval_accumulation_steps: Nonetorch_empty_cache_steps: Nonelearning_rate: 2e-05weight_decay: 0.0adam_beta1: 0.9adam_beta2: 0.999adam_epsilon: 1e-08max_grad_norm: 1.0num_train_epochs: 4max_steps: -1lr_scheduler_type: cosinelr_scheduler_kwargs: {}warmup_ratio: 0.1warmup_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: Truefp16: Falsefp16_opt_level: O1half_precision_backend: autobf16_full_eval: Falsefp16_full_eval: Falsetf32: Truelocal_rank: 0ddp_backend: Nonetpu_num_cores: Nonetpu_metrics_debug: Falsedebug: []dataloader_drop_last: Falsedataloader_num_workers: 0dataloader_prefetch_factor: Nonepast_index: -1disable_tqdm: Falseremove_unused_columns: Truelabel_names: Noneload_best_model_at_end: Trueignore_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}deepspeed: Nonelabel_smoothing_factor: 0.0optim: adamw_torch_fusedoptim_args: Noneadafactor: Falsegroup_by_length: Falselength_column_name: lengthddp_find_unused_parameters: Noneddp_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: Falsegradient_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: Falsetorch_compile_backend: Nonetorch_compile_mode: Nonedispatch_batches: Nonesplit_batches: Noneinclude_tokens_per_second: Falseinclude_num_input_tokens_seen: Falseneftune_noise_alpha: Noneoptim_target_modules: Nonebatch_eval_metrics: Falseeval_on_start: Falseuse_liger_kernel: Falseeval_use_gather_object: Falseaverage_tokens_across_devices: Falseprompts: Nonebatch_sampler: no_duplicatesmulti_dataset_batch_sampler: proportional| Epoch | Step | Training Loss | dim_768_cosine_ndcg@10 | dim_512_cosine_ndcg@10 | dim_256_cosine_ndcg@10 | dim_128_cosine_ndcg@10 | dim_64_cosine_ndcg@10 |
|---|---|---|---|---|---|---|---|
| 0.8791 | 10 | 5.6528 | - | - | - | - | - |
| 1.0 | 12 | - | 0.5926 | 0.5753 | 0.5457 | 0.4687 | 0.3455 |
| 1.7033 | 20 | 2.4543 | - | - | - | - | - |
| 2.0 | 24 | - | 0.6195 | 0.6066 | 0.5778 | 0.4998 | 0.3828 |
| 2.5275 | 30 | 1.7455 | - | - | - | - | - |
| 3.0 | 36 | - | 0.6292 | 0.6135 | 0.5765 | 0.5057 | 0.3928 |
| 3.3516 | 40 | 1.5499 | - | - | - | - | - |
| 3.7033 | 44 | - | 0.63 | 0.6138 | 0.5781 | 0.5109 | 0.3956 |
@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",
}
@misc{kusupati2024matryoshka,
title={Matryoshka Representation Learning},
author={Aditya Kusupati and Gantavya Bhatt and Aniket Rege and Matthew Wallingford and Aditya Sinha and Vivek Ramanujan and William Howard-Snyder and Kaifeng Chen and Sham Kakade and Prateek Jain and Ali Farhadi},
year={2024},
eprint={2205.13147},
archivePrefix={arXiv},
primaryClass={cs.LG}
}
@misc{henderson2017efficient,
title={Efficient Natural Language Response Suggestion for Smart Reply},
author={Matthew Henderson and Rami Al-Rfou and Brian Strope and Yun-hsuan Sung and Laszlo Lukacs and Ruiqi Guo and Sanjiv Kumar and Balint Miklos and Ray Kurzweil},
year={2017},
eprint={1705.00652},
archivePrefix={arXiv},
primaryClass={cs.CL}
}