AdamLucek/legal-rag-positives-synthetic
Viewer • Updated • 6.47k • 36 • 4
How to use aaa961/modernbert-embed-base-legal-no_MRL_symmetricMNRL_3sets with sentence-transformers:
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("aaa961/modernbert-embed-base-legal-no_MRL_symmetricMNRL_3sets")
sentences = [
"What court case is referenced with citation 546 F.2d at 1015 n.14?",
"3023980, at *4 (D.D.C. May 25, 2016). The Court will not exercise its discretion to do so here, \ngiven the potentially important national security interests at stake. Still, the Court advises the \n \n3 The Court also questions whether the Department has sufficiently shown that it conducted \nan adequate segregability analysis. FOIA requires that “[a]ny reasonably segregable portion of a",
"records, using methods which can be reasonably expected to produce the information requested.” \nOglesby v. U.S. Dep’t of Army, 920 F.2d 57, 68 (D.C. Cir. 1990). “Summary judgment may be \nbased on affidavit, if the declaration sets forth sufficiently detailed information ‘for a court to \ndetermine if the search was adequate.’” Students Against Genocide v. Dep’t of State, 257 F.3d",
"546 F.2d at 1015 n.14, in contravention of the D.C. Circuit’s limitation on that provision’s scope. \nCf. Milner, 131 S. Ct. at 1269 (observing that “[u]nder this interpretation, an agency’s ‘internal \npersonnel rules and practices’ appears to mean all its internal rules and practices,” and thus “[t]he \nmodifier ‘personnel’ . . . does no modifying work”)."
]
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 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, 'architecture': '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("aaa961/modernbert-embed-base-legal-no_MRL_symmetricMNRL_3sets")
# Run inference
sentences = [
'What sections of the document are referenced in the location Supplement 2, AR?',
'the Polaris Solicitations as currently drafted do not comply with Section 3306(c)(3). In its request \nto apply Section 3306(c)(3) to the Polaris Solicitations, GSA stated that \n \n \n \nSupplement 2, AR at 2907–08. Because GSA adopted an overly broad understanding of Section \n3306(c)(3)’s scope, GSA stated the Solicitations will include a “full range of order types,”',
'“Based on this misunderstanding, the CIA attorney incorrectly cited some of the justifications for \nredacting the material to the DOJ attorney, who in turn shared that information with plaintiff.” \nId. ¶ 9. \nE. \nProcedural History \nThe plaintiff filed the Complaints in each of these three actions on February 28, 2011,',
]
embeddings = model.encode(sentences)
print(embeddings.shape)
# [3, 768]
# Get the similarity scores for the embeddings
similarities = model.similarity(embeddings, embeddings)
print(similarities)
# tensor([[1.0000, 0.3908, 0.0520],
# [0.3908, 1.0000, 0.0703],
# [0.0520, 0.0703, 1.0000]])
ir_eval_test and ir_eval_evalInformationRetrievalEvaluator| Metric | ir_eval_test | ir_eval_eval |
|---|---|---|
| cosine_accuracy@1 | 0.3431 | 0.5796 |
| cosine_accuracy@3 | 0.5131 | 0.7527 |
| cosine_accuracy@5 | 0.575 | 0.8176 |
| cosine_accuracy@10 | 0.6785 | 0.864 |
| cosine_precision@1 | 0.3431 | 0.5796 |
| cosine_precision@3 | 0.171 | 0.2509 |
| cosine_precision@5 | 0.115 | 0.1635 |
| cosine_precision@10 | 0.0679 | 0.0864 |
| cosine_recall@1 | 0.3431 | 0.5796 |
| cosine_recall@3 | 0.5131 | 0.7527 |
| cosine_recall@5 | 0.575 | 0.8176 |
| cosine_recall@10 | 0.6785 | 0.864 |
| cosine_ndcg@10 | 0.5028 | 0.7246 |
| cosine_mrr@10 | 0.4477 | 0.6795 |
| cosine_map@100 | 0.4565 | 0.6842 |
anchor and positive| anchor | positive | |
|---|---|---|
| type | string | string |
| details |
|
|
| anchor | positive |
|---|---|
Where is the similar statement to the one about business judgment and scoring merit found? |
is with each bidder itself, and its own business judgment in forming a team and what score it thinks |
Who do lawyers generally employ as assistants in their practice? |
abide by the Rules of Professional Conduct. See rule 4-5.2(a). |
Which court case is cited with a page number of 1327? |
30; VCH MJAR at 28–30 (same). |
CachedMultipleNegativesRankingLoss with these parameters:{
"scale": 20.0,
"similarity_fct": "cos_sim",
"mini_batch_size": 32,
"gather_across_devices": false,
"directions": [
"query_to_doc",
"doc_to_query"
],
"partition_mode": "per_direction",
"hardness_mode": null,
"hardness_strength": 0.0
}
per_device_train_batch_size: 32num_train_epochs: 4learning_rate: 2e-05lr_scheduler_type: cosinewarmup_steps: 0.1optim: adamw_torch_fusedgradient_accumulation_steps: 16bf16: Truetf32: Trueeval_strategy: epochper_device_eval_batch_size: 16load_best_model_at_end: Trueper_device_train_batch_size: 32num_train_epochs: 4max_steps: -1learning_rate: 2e-05lr_scheduler_type: cosinelr_scheduler_kwargs: Nonewarmup_steps: 0.1optim: adamw_torch_fusedoptim_args: Noneweight_decay: 0.0adam_beta1: 0.9adam_beta2: 0.999adam_epsilon: 1e-08optim_target_modules: Nonegradient_accumulation_steps: 16average_tokens_across_devices: Truemax_grad_norm: 1.0label_smoothing_factor: 0.0bf16: Truefp16: Falsebf16_full_eval: Falsefp16_full_eval: Falsetf32: Truegradient_checkpointing: Falsegradient_checkpointing_kwargs: Nonetorch_compile: Falsetorch_compile_backend: Nonetorch_compile_mode: Noneuse_liger_kernel: Falseliger_kernel_config: Noneuse_cache: Falseneftune_noise_alpha: Nonetorch_empty_cache_steps: Noneauto_find_batch_size: Falselog_on_each_node: Truelogging_nan_inf_filter: Trueinclude_num_input_tokens_seen: nolog_level: passivelog_level_replica: warningdisable_tqdm: Falseproject: huggingfacetrackio_space_id: trackioeval_strategy: epochper_device_eval_batch_size: 16prediction_loss_only: Trueeval_on_start: Falseeval_do_concat_batches: Trueeval_use_gather_object: Falseeval_accumulation_steps: Noneinclude_for_metrics: []batch_eval_metrics: Falsesave_only_model: Falsesave_on_each_node: Falseenable_jit_checkpoint: Falsepush_to_hub: Falsehub_private_repo: Nonehub_model_id: Nonehub_strategy: every_savehub_always_push: Falsehub_revision: Noneload_best_model_at_end: Trueignore_data_skip: Falserestore_callback_states_from_checkpoint: Falsefull_determinism: Falseseed: 42data_seed: Noneuse_cpu: Falseaccelerator_config: {'split_batches': False, 'dispatch_batches': None, 'even_batches': True, 'use_seedable_sampler': True, 'non_blocking': False, 'gradient_accumulation_kwargs': None}parallelism_config: Nonedataloader_drop_last: Falsedataloader_num_workers: 0dataloader_pin_memory: Truedataloader_persistent_workers: Falsedataloader_prefetch_factor: Noneremove_unused_columns: Truelabel_names: Nonetrain_sampling_strategy: randomlength_column_name: lengthddp_find_unused_parameters: Noneddp_bucket_cap_mb: Noneddp_broadcast_buffers: Falseddp_backend: Noneddp_timeout: 1800fsdp: []fsdp_config: {'min_num_params': 0, 'xla': False, 'xla_fsdp_v2': False, 'xla_fsdp_grad_ckpt': False}deepspeed: Nonedebug: []skip_memory_metrics: Truedo_predict: Falseresume_from_checkpoint: Nonewarmup_ratio: Nonelocal_rank: -1prompts: Nonebatch_sampler: batch_samplermulti_dataset_batch_sampler: proportionalrouter_mapping: {}learning_rate_mapping: {}| Epoch | Step | Training Loss | ir_eval_test_cosine_ndcg@10 | ir_eval_eval_cosine_ndcg@10 |
|---|---|---|---|---|
| -1 | -1 | - | 0.5028 | - |
| 0.9877 | 10 | 0.9180 | - | - |
| 1.0 | 11 | - | - | 0.6723 |
| 1.8889 | 20 | 0.4042 | - | - |
| 2.0 | 22 | - | - | 0.7082 |
| 2.7901 | 30 | 0.2940 | - | - |
| 3.0 | 33 | - | - | 0.7236 |
| 3.6914 | 40 | 0.2646 | - | - |
| 4.0 | 44 | - | - | 0.7246 |
@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{gao2021scaling,
title={Scaling Deep Contrastive Learning Batch Size under Memory Limited Setup},
author={Luyu Gao and Yunyi Zhang and Jiawei Han and Jamie Callan},
year={2021},
eprint={2101.06983},
archivePrefix={arXiv},
primaryClass={cs.LG}
}
Base model
answerdotai/ModernBERT-base