Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks
Paper • 1908.10084 • Published • 18
How to use hasinthakapiyumal/bge-reasoner-embed-ms-patterns with sentence-transformers:
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("hasinthakapiyumal/bge-reasoner-embed-ms-patterns")
sentences = [
"This Spring `@Service` implementation (`UserServiceImpl`) retrieves user credentials by username from a `UserCredentialRepository`. It then maps the found `UserCredential` entity to a `UserDto` using `ModelMapper`, returning `null` if the user is not found.",
"This Python file contains a comprehensive suite of `pytest` integration and end-to-end tests for multiple distinct RESTful APIs, including game, history, likes, favorites, file storage, task management, and user authentication/management services. It thoroughly validates API endpoints, data models, authentication, pagination, and various edge cases, leveraging the `requests` library for HTTP interactions and extensive fixtures for setup and teardown.",
"This Python code defines a Thrift client (`Client` class) for user management, implementing methods for user registration, login, and retrieving/uploading user data. It utilizes a distinct `send_` and `recv_` pattern for each remote procedure call, handling message serialization, deserialization, and application-level exception handling.",
"This Spring Boot `RestController` (`UserController`) provides a comprehensive set of RESTful API endpoints for user management, enabling operations such as retrieving all users, finding users by ID or username, registering new users, updating existing ones, and deleting users. It delegates all business logic to an injected `UserService`, consistently returning `ResponseEntity<Response>` and logging actions for each operation."
]
embeddings = model.encode(sentences)
similarities = model.similarity(embeddings, embeddings)
print(similarities.shape)
# [4, 4]This is a sentence-transformers model finetuned from BAAI/bge-reasoner-embed-qwen3-8b-0923. It maps sentences & paragraphs to a 4096-dimensional dense vector space and can be used for semantic textual similarity, semantic search, paraphrase mining, classification, clustering, and more.
SentenceTransformer(
(0): Transformer({'transformer_task': 'feature-extraction', 'modality_config': {'text': {'method': 'forward', 'method_output_name': 'last_hidden_state'}}, 'module_output_name': 'token_embeddings', 'architecture': 'Qwen3Model'})
(1): Pooling({'embedding_dimension': 4096, 'pooling_mode': 'lasttoken', 'include_prompt': True})
)
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("sentence_transformers_model_id")
# Run inference
queries = [
'This Java class, `TramCommandsAndEventsIntegrationData`, provides dynamically generated, timestamp-suffixed string identifiers for various command and event channels, aggregate destinations, and dispatchers. It serves as integration data, likely for configuring a messaging or event-driven framework (e.g., Tram Sagas) within a microservices architecture, possibly for testing or unique instance identification.',
]
documents = [
'This code primarily defines a simple `ActionInfo` DTO and, more significantly, provides comprehensive Spring Boot integration tests for an `OrderService`. These tests validate order creation and state transitions within a microservices context, leveraging an embedded H2 database, Eventuate Tram for event-driven communication, and consumer-driven contract testing with stub runners for external service interactions.',
'This abstract `Specification` class implements the Specification pattern, providing a framework for defining reusable business rules that can be checked against an object. It enables logical composition of specifications (AND, OR, NOT) and includes mechanisms to capture specific error codes and parameters when a rule is not satisfied.',
'This code defines classes (`SubscriptionPoloniex`, `SubscriptionHuobi`) for establishing and maintaining real-time WebSocket connections to cryptocurrency exchanges like Poloniex and Huobi. It subscribes to specific currency pair order book updates, manages heartbeats, parses incoming market data, and dispatches processed updates to a provided callback function, likely for arbitrage or trading applications.',
]
query_embeddings = model.encode_query(queries)
document_embeddings = model.encode_document(documents)
print(query_embeddings.shape, document_embeddings.shape)
# [1, 4096] [3, 4096]
# Get the similarity scores for the embeddings
similarities = model.similarity(query_embeddings, document_embeddings)
print(similarities)
# tensor([[0.3574, 0.4746, 0.7891]], dtype=torch.bfloat16)
sentence_0, sentence_1, and label| sentence_0 | sentence_1 | label | |
|---|---|---|---|
| type | string | string | float |
| modality | text | text | |
| details |
|
|
|
| sentence_0 | sentence_1 | label |
|---|---|---|
This Python code defines an Apache Thrift client ( |
This code defines DTOs for various question answer types and implements the core business logic for creating insurance offers and policies. It showcases a microservice interaction pattern where the |
1.0 |
This Python code defines a |
This Python code defines a |
0.0 |
This |
This |
0.0 |
ContrastiveLoss with these parameters:{
"distance_metric": "SiameseDistanceMetric.COSINE_DISTANCE",
"margin": 0.5,
"size_average": true
}
per_device_train_batch_size: 32per_device_eval_batch_size: 32multi_dataset_batch_sampler: round_robinoverwrite_output_dir: Falsedo_predict: Falseprediction_loss_only: Trueper_device_train_batch_size: 32per_device_eval_batch_size: 32per_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: 3max_steps: -1lr_scheduler_type: linearlr_scheduler_kwargs: Nonewarmup_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: Falsefp16_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_torchoptim_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: {}@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",
}
@inproceedings{hadsell2006dimensionality,
author={Hadsell, R. and Chopra, S. and LeCun, Y.},
booktitle={2006 IEEE Computer Society Conference on Computer Vision and Pattern Recognition (CVPR'06)},
title={Dimensionality Reduction by Learning an Invariant Mapping},
year={2006},
volume={2},
number={},
pages={1735-1742},
doi={10.1109/CVPR.2006.100}
}
Base model
BAAI/bge-reasoner-embed-qwen3-8b-0923