Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks
Paper • 1908.10084 • Published • 14
How to use Mercity/memory-retrieval-qwen3-0.6b-lora with sentence-transformers:
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("Mercity/memory-retrieval-qwen3-0.6b-lora")
sentences = [
"Regarding the $200k in CDs, how does the current rollover schedule interact with the potential need for $40k liquidity within the next year and a half?",
"Maria has a history of consistently rolling over her maturing CDs into new 1-year term certificates.",
"Lena successfully integrated a complex, counter-intuitive keyboard shortcut system into her design software workflow within one week through structured, repeated micro-practice sessions.",
"The assisted living facility for Clara has a contractual clause stating that if Clara requires specialized memory care (which costs $1,500 more per month), the facility must be notified within 90 days, triggering a mandatory three-month transition period."
]
embeddings = model.encode(sentences)
similarities = model.similarity(embeddings, embeddings)
print(similarities.shape)
# [4, 4]This is a sentence-transformers model finetuned from Qwen/Qwen3-Embedding-0.6B. It maps sentences & paragraphs to a 1024-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': 512, 'do_lower_case': False, 'architecture': 'PeftModelForFeatureExtraction'})
(1): Pooling({'word_embedding_dimension': 1024, 'pooling_mode_cls_token': False, 'pooling_mode_mean_tokens': False, 'pooling_mode_max_tokens': False, 'pooling_mode_mean_sqrt_len_tokens': False, 'pooling_mode_weightedmean_tokens': False, 'pooling_mode_lasttoken': True, '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("Mercity/memory-retrieval-qwen3-0.6b-lora")
# Run inference
queries = [
"Freelancer\u0027s on board, but I\u0027m anxious about the budget stretching for these fixes.",
]
documents = [
'Victor strongly values authenticity and has explicitly stated he would rather deliver 4 excellent, deeply resonant ads than 6 mediocre ones that rely on viral gimmicks.',
'Carlos successfully mastered the past tense (Passé Composé) last month by focusing solely on verb conjugation tables rather than contextual sentences.',
'Raj recently won a $500 gift certificate specifically for experiences/tours redeemable through a regional travel aggregator.',
]
query_embeddings = model.encode_query(queries)
document_embeddings = model.encode_document(documents)
print(query_embeddings.shape, document_embeddings.shape)
# [1, 1024] [3, 1024]
# Get the similarity scores for the embeddings
similarities = model.similarity(query_embeddings, document_embeddings)
print(similarities)
# tensor([[ 0.3463, -0.1885, -0.0302]])
sentence_0, sentence_1, and sentence_2| sentence_0 | sentence_1 | sentence_2 | |
|---|---|---|---|
| type | string | string | string |
| details |
|
|
|
| sentence_0 | sentence_1 | sentence_2 |
|---|---|---|
Our budget's stretched thin with the condo mortgage and student loans, yet we're locked into this $4k Ireland trip next summer—am I being irresponsible by not prioritizing career growth over these family splurges? |
Liam's father, who was rarely present due to travel, recently reconciled with Liam and offered to pay for 100% of Ava's future college tuition, regardless of Liam's career path. |
Liam is extremely dedicated to his career and has always prioritized professional advancement over personal comfort. |
I've got $1800 left after flights for my Tokyo conference trip—can you recommend budget vegan hotels close to the venue to keep things simple? |
Lena's primary networking goal for this trip is securing a mentorship with Kenji Tanaka, a speaker at the conference known for hosting small, private dinners for potential mentees. |
Lena is intensely private about her financial struggles and views asking for help or discussing debt openly as a personal failure. |
Inflation's killing my shop, but I wanna surprise Lena with milestone magic on a dime. |
Last year, Marcus successfully organized a surprise 'Family Fun Day' at a local park for Lena's birthday, which she cited as the best day they'd had since before Jamal got sick, despite being low-cost. |
Maria recently spent an hour reviewing the history of Mandarin tonal development since the Han Dynasty. |
TripletLoss with these parameters:{
"distance_metric": "TripletDistanceMetric.COSINE",
"triplet_margin": 0.5
}
eval_strategy: stepsper_device_train_batch_size: 64per_device_eval_batch_size: 64num_train_epochs: 5fp16: Truemulti_dataset_batch_sampler: round_robinoverwrite_output_dir: Falsedo_predict: Falseeval_strategy: stepsprediction_loss_only: Trueper_device_train_batch_size: 64per_device_eval_batch_size: 64per_gpu_train_batch_size: Noneper_gpu_eval_batch_size: Nonegradient_accumulation_steps: 1eval_accumulation_steps: Nonetorch_empty_cache_steps: Nonelearning_rate: 5e-05weight_decay: 0.0adam_beta1: 0.9adam_beta2: 0.999adam_epsilon: 1e-08max_grad_norm: 1num_train_epochs: 5max_steps: -1lr_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: 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: Falsedataloader_num_workers: 0dataloader_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_torch_fusedoptim_args: Noneadafactor: Falsegroup_by_length: Falselength_column_name: lengthproject: huggingfacetrackio_space_id: trackioddp_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: 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: Falsetorch_compile_backend: Nonetorch_compile_mode: Noneinclude_tokens_per_second: Falseinclude_num_input_tokens_seen: noneftune_noise_alpha: Noneoptim_target_modules: Nonebatch_eval_metrics: Falseeval_on_start: Falseuse_liger_kernel: Falseliger_kernel_config: Noneeval_use_gather_object: Falseaverage_tokens_across_devices: Trueprompts: Nonebatch_sampler: batch_samplermulti_dataset_batch_sampler: round_robinrouter_mapping: {}learning_rate_mapping: {}| Epoch | Step | Training Loss |
|---|---|---|
| 0.0865 | 500 | 0.1927 |
| 0.1730 | 1000 | 0.1023 |
| 0.2595 | 1500 | 0.0841 |
| 0.3460 | 2000 | 0.0772 |
| 0.4325 | 2500 | 0.0704 |
| 0.5190 | 3000 | 0.0635 |
| 0.6055 | 3500 | 0.0576 |
| 0.6920 | 4000 | 0.0545 |
| 0.7785 | 4500 | 0.0522 |
| 0.8651 | 5000 | 0.0484 |
| 0.9516 | 5500 | 0.0465 |
| 1.0 | 5780 | - |
| 1.0381 | 6000 | 0.0388 |
| 1.1246 | 6500 | 0.0323 |
| 1.2111 | 7000 | 0.0318 |
| 1.2976 | 7500 | 0.0314 |
| 1.3841 | 8000 | 0.0294 |
| 1.4706 | 8500 | 0.0301 |
| 1.5571 | 9000 | 0.0283 |
| 1.6436 | 9500 | 0.0272 |
| 1.7301 | 10000 | 0.0247 |
| 1.8166 | 10500 | 0.0248 |
| 1.9031 | 11000 | 0.0233 |
| 1.9896 | 11500 | 0.0228 |
| 2.0 | 11560 | - |
| 2.0761 | 12000 | 0.0154 |
| 2.1626 | 12500 | 0.0141 |
| 2.2491 | 13000 | 0.0146 |
| 2.3356 | 13500 | 0.0135 |
| 2.4221 | 14000 | 0.0143 |
| 2.5087 | 14500 | 0.0139 |
| 2.5952 | 15000 | 0.014 |
| 2.6817 | 15500 | 0.0128 |
| 2.7682 | 16000 | 0.0126 |
| 2.8547 | 16500 | 0.0122 |
| 2.9412 | 17000 | 0.0114 |
| 3.0 | 17340 | - |
| 3.0277 | 17500 | 0.0104 |
| 3.1142 | 18000 | 0.007 |
| 3.2007 | 18500 | 0.0069 |
| 3.2872 | 19000 | 0.0067 |
| 3.3737 | 19500 | 0.0064 |
| 3.4602 | 20000 | 0.0067 |
| 3.5467 | 20500 | 0.0063 |
| 3.6332 | 21000 | 0.0061 |
| 3.7197 | 21500 | 0.0058 |
| 3.8062 | 22000 | 0.0058 |
| 3.8927 | 22500 | 0.0051 |
| 3.9792 | 23000 | 0.005 |
| 4.0 | 23120 | - |
| 4.0657 | 23500 | 0.0035 |
| 4.1522 | 24000 | 0.0027 |
| 4.2388 | 24500 | 0.0028 |
| 4.3253 | 25000 | 0.0025 |
| 4.4118 | 25500 | 0.0025 |
| 4.4983 | 26000 | 0.0024 |
@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{hermans2017defense,
title={In Defense of the Triplet Loss for Person Re-Identification},
author={Alexander Hermans and Lucas Beyer and Bastian Leibe},
year={2017},
eprint={1703.07737},
archivePrefix={arXiv},
primaryClass={cs.CV}
}