Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks
Paper • 1908.10084 • Published • 18
How to use hasinthakapiyumal/bge-reasoner-embed-ai-patterns with sentence-transformers:
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("hasinthakapiyumal/bge-reasoner-embed-ai-patterns")
sentences = [
"The code implements several data curation and filtering patterns crucial for autonomous driving AI datasets. It includes filtering scenarios based on the fractional presence of specific LiDAR point cloud tokens, selecting scenarios exhibiting particular ego vehicle dynamics (e.g., non-stationary, starting, stopping), and ensuring contextual relevance by checking for route-intersecting roadblocks. These patterns are essential for preparing targeted and high-quality datasets for training and evaluating perception, prediction, and planning models.",
"The code implements the Intelligent Driver Model (IDM) as a reactive car-following policy, dictating longitudinal acceleration based on ego and lead agent states, desired velocity, and safety parameters. This policy is central to an agent-based simulation framework, where `IDMAgent`s dynamically plan and propagate their trajectories by interacting with an `OccupancyMap` that represents other vehicles and traffic light statuses.",
"The code demonstrates a pattern for building highly customizable AI agents (`CustomizeAgent`) that integrate external tools (e.g., `MCPToolkit`, `ArxivToolkit`) to augment their capabilities. A core AI pattern is the robust handling of structured output through various parsing modes (`json`, `xml`, `title`, `custom`), ensuring precise information extraction. Furthermore, it showcases the orchestration of these agents and tools into complex workflows (`WorkFlowGraph`) for multi-step task execution, representing a multi-agent system pattern.",
"This code implements a Retrieval Augmented Generation (RAG) pipeline, primarily focusing on the ingestion and embedding of documents. It employs a `DocumentProcessor` for pre-processing, including chunking strategies (`split_by`, `split_length`) and blocklist filtering, before using an `RAGEmbedder` to generate vector embeddings via an external model (e.g., Ollama). These embeddings are then indexed into a vector store like Elasticsearch, with integrated metrics tracking for pipeline observability."
]
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 code implements a nearest neighbor distance pattern by calculating the minimum Euclidean distance from query points to a set of sample points. It leverages an optimized pairwise squared Euclidean distance computation, a fundamental metric widely used in machine learning for tasks like clustering, classification, and density estimation, leveraging vectorized operations for efficiency.',
]
documents = [
'The code implements an adaptive probabilistic modeling framework, featuring automated univariate distribution selection based on statistical fit (Kolmogorov-Smirnov test) and dynamic candidate filtering. It utilizes a Gaussian copula model for multivariate distributions, separating marginal distribution fitting from dependency modeling via a correlation matrix. This architecture supports conditional inference and sampling by transforming data into a standard normal space.',
'The code establishes a **World Model** pattern by providing a structured, semantic representation of an autonomous driving environment, organizing map data into distinct vector and raster layers like lanes, roadblocks, and drivable areas. It further implements **Perception and Querying** patterns, offering an AI agent capabilities to perform complex spatial queries such as point-in-polygon checks, proximity searches, and nearest object distance calculations, essential for environmental understanding and navigation.',
'This code establishes a modular AI pipeline, integrating a `VectorDB` and an `embedder` for semantic processing and retrieval-augmented capabilities. It employs a pluggable "scanner" architecture, where various AI-powered modules can be dynamically configured and instantiated, optionally leveraging the vector database and embedder for tasks like input/output analysis or moderation. This design facilitates a flexible and extensible framework for managing AI system interactions.',
]
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.5820, 0.6914, 0.5234]], 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 |
|---|---|---|
The code demonstrates a pattern for building highly customizable AI agents ( |
This code implements a pattern for visualizing AI agent states and behaviors by processing |
0.0 |
This code implements a pattern for automated dataset curation and preprocessing, systematically loading and filtering classification datasets from OpenML and Kaggle based on criteria like missing values, feature count, sample size, and number of classes. It prepares this data for AI model consumption by applying capping mechanisms, handling multiclass/binary scenarios, and transforming it into PyTorch tensors with controlled shuffling or sorting, indicating its use for deep learning benchmarks or training. |
This code implements a recursive aggregation pattern for hierarchical data, specifically accumulating log counts across a tree-like structure of 'spans.' In AI contexts, this pattern is crucial for observability and monitoring of complex AI pipelines or model inference traces. It enables the aggregation of operational metrics from individual components up to a higher-level view, facilitating debugging and performance analysis of multi-stage AI systems. |
0.0 |
This code implements a modular neural network layer construction pattern, providing configurable building blocks for fully-connected and 2D convolutional layers. It utilizes factory patterns ( |
This code implements patterns for distributed deep learning, primarily focusing on synchronizing model states across multiple processes. It provides a generic |
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