How to use from the
Use from the
sentence-transformers library
from sentence_transformers import SentenceTransformer

model = SentenceTransformer("phonghoccode/VSLP2025_Embedding_semantic_v1")

sentences = [
    "Biển báo có hình mũi tên chỉ thẳng và rẽ trái đồng thời cho phép người tham gia giao thông rẽ phải nếu không có biển báo khác.\nĐúng hay sai?",
    "a) Để báo cấm rẽ trái hoặc rẽ phải (theo hướng mũi tên chỉ) ở những vị trí đường giao nhau, đặt biển số P.123a \"Cấm rẽ trái\" hoặc biển số P.123b \"Cấm rẽ phải\". Biển không có giá trị cấm quay đầu xe.\nb) Biển có hiệu lực cấm các loại xe (cơ giới và thô sơ) rẽ sang phía trái hoặc phía phải trừ các xe được ưu tiên theo quy định.\nc) Trước khi đặt biển cấm rẽ, có thể đặt biển chỉ dẫn hướng đi thích hợp.\n\nHình B.23 - Biển số P.123",
    "a) Biển số S.507 được sử dụng độc lập để báo trước cho người tham gia giao thông biết chỗ rẽ nguy hiểm và để chỉ hướng rẽ.\nb) Biển được đặt trong trường hợp người tham gia giao thông khó nhận biết hướng rẽ của đường. Biển có thể đặt đồng thời hai biển ngược chiều nhau để chỉ hướng rẽ trái và rẽ phải, với độ cao đặt biển từ 1,2 m đến 1,5 m. Trường hợp cần dẫn hướng trong đường cong có thể sử dụng tiêu phản quang.\nc) Biển không thay thế cho việc đặt các biển báo nguy hiểm số W.201 (a,b) và W.202 (a,b,c).\n\nHình F.9 - Biển số S.507",
    "Để báo hiệu đường đi sát vách núi, đặt biển báo nguy hiểm số W223(a,b) “Vách núi nguy hiểm\". Biển dùng để báo nguy hiểm cho người tham gia giao thông phải cẩn thận. Biển đặt ở nơi sắp vào đoạn đường đi sát vách núi vừa hẹp vừa hạn chế tầm nhìn. Khi dùng biển cần chú ý vách núi nằm ở bên trái hay bên phải đường để đặt biển W.223a hoặc biển W.223b cho phù hợp.\n\nHình C.25 - Biển số W.223"
]
embeddings = model.encode(sentences)

similarities = model.similarity(embeddings, embeddings)
print(similarities.shape)
# [4, 4]

SentenceTransformer based on AITeamVN/Vietnamese_Embedding_v2

This is a sentence-transformers model finetuned from AITeamVN/Vietnamese_Embedding_v2. 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.

Model Details

Model Description

  • Model Type: Sentence Transformer
  • Base model: AITeamVN/Vietnamese_Embedding_v2
  • Maximum Sequence Length: 2048 tokens
  • Output Dimensionality: 1024 dimensions
  • Similarity Function: Cosine Similarity

Model Sources

Full Model Architecture

SentenceTransformer(
  (0): Transformer({'max_seq_length': 2048, 'do_lower_case': False}) with Transformer model: XLMRobertaModel 
  (1): Pooling({'word_embedding_dimension': 1024, '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})
)

Usage

Direct Usage (Sentence Transformers)

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("phonghoccode/VSLP2025_Embedding_semantic_v1")
# Run inference
sentences = [
    'Biển báo với hình mũi tên chỉ hướng đi thẳng và rẽ trái áp dụng cho các phương tiện tham gia giao thông trong trường hợp nào?',
    '26.1. Biển báo cấm được đặt ở nơi đường giao nhau hoặc trước một vị trí trên đường cần cấm.\nBiển có hiệu lực bắt đầu từ vị trí đặt biển trở đi. Nếu vì lý do nào đó, biển đặt cách xa vị trí định cấm thì phải đặt biển phụ số S.502 để chỉ rõ khoảng cách từ sau biển cấm đến vị trí biển bắt đầu có hiệu lực.\n26.2. Khi cần thiết để chỉ rõ hướng tác dụng của biển và chỉ vị trí bắt đầu hay vị trí kết thúc hiệu lực của biển phải đặt biển phụ số S.503 “Hướng tác dụng của biển”.\n26.3. Các biển báo cấm từ biển số P.101 đến biển số P.120 không cần quy định phạm vi có hiệu lực của biển, không có biển báo hết cấm.\n26.4. Khi cần thiết, trong trường hợp cấm vì lý do cầu đường bị tắc, hư hỏng thì kèm theo các biển báo cấm nêu tại khoản 26.3 Điều này đặt các biển chỉ dẫn lối đi cho xe bị cấm.\n26.5. Biển số P.121 và biển số P.128 có hiệu lực đến hết khoảng cách cấm ghi trên biển phụ số S.501 hoặc đến vị trí đặt biển số DP.135 “Hết tất cả các lệnh cấm”.\n26.6. Biển số P.123 (a,b) và biển số P.129 có hiệu lực tại khu vực đặt biển.\n26.7. Biển số P.124 (a, b, c, d, e, f) có hiệu lực ở vị trí nơi đường giao nhau, chỗ mở dải phân cách nhưng không cho phép quay đầu xe hoặc căn cứ vào biển phụ số S.503.\n26.8. Biển số P.125, P.126, P.127(a,b,c), P.130, P.131(a,b,c) có hiệu lực đến nơi đường giao nhau tiếp giáp hoặc đến vị trí đặt biển hết cấm (các biển số DP.133, DP.134, DP.135, DP.127d). Các biển số P.130 và P.131(a,b,c) còn căn cứ vào các biển phụ.\n26.9. Nếu đoạn đường phải thi hành biển cấm đi qua các nút giao (trừ giao với các ngõ, ngách, hẻm hoặc lối ra vào cơ quan, đơn vị; hoặc khu đất lân cận mà phương tiện chỉ có thể ra, vào khu đất bằng một lối đi chung), biển cấm phải được nhắc lại đặt phía sau nút giao theo hướng đường đang có biển cấm, trừ các trường hợp có qui định riêng hoặc có biển phụ kèm theo.',
    'a) Để chỉ dẫn cho người tham gia giao thông biết đường phía trước có làn đường dành riêng cho ô tô khách theo chiều ngược lại, đặt biển số I.413a "Đường phía trước có làn đường dành cho ô tô khách". Biển được đặt ở nơi đường giao nhau đầu đường một chiều mà hướng ngược chiều có ô tô khách được phép chạy.\nb) Để chỉ dẫn cho người tham gia giao thông biết ở nơi đường giao nhau rẽ phải hoặc rẽ trái là rẽ ra đường có làn đường dành riêng cho ô tô khách, đặt biển số I.413b hoặc biển số I.413c báo hiệu "Rẽ ra đường có làn đường dành cho ô tô khách". Tùy theo hướng rẽ mà lựa chọn kiểu biển cho phù hợp.\n\nHình E.13 - Biển số I.413',
]
embeddings = model.encode(sentences)
print(embeddings.shape)
# [3, 1024]

# Get the similarity scores for the embeddings
similarities = model.similarity(embeddings, embeddings)
print(similarities.shape)
# [3, 3]

Training Details

Training Dataset

Unnamed Dataset

  • Size: 11,823 training samples
  • Columns: sentence1, sentence2, and label
  • Approximate statistics based on the first 1000 samples:
    sentence1 sentence2 label
    type string string int
    details
    • min: 18 tokens
    • mean: 32.54 tokens
    • max: 70 tokens
    • min: 23 tokens
    • mean: 346.37 tokens
    • max: 2048 tokens
    • 0: ~94.00%
    • 1: ~6.00%
  • Samples:
    sentence1 sentence2 label
    Biển báo cấm xe khách trên 29 chỗ được áp dụng trong các khoảng thời gian nào? Quy chuẩn này quy định về báo hiệu đường bộ bao gồm: đèn tín hiệu giao thông; biển báo hiệu đường bộ; vạch kẻ đường và các dấu hiệu khác trên mặt đường; cọc tiêu, tường bảo vệ, rào chắn, đinh phản quang, tiêu phản quang, cột Km, cọc H; thiết bị âm thanh báo hiệu đường bộ.
    Quy chuẩn này quy định về báo hiệu đường bộ áp dụng cho tất cả các tuyến đường bộ trong mạng lưới đường bộ Việt Nam, các đường nằm trong hệ thống đường bộ tham gia Điều ước quốc tế mà Việt Nam là thành viên (Hiệp định GMS-CBTA, các thỏa thuận trong ASEAN và các thỏa thuận quốc tế khác) - sau đây gọi là các tuyến đường đối ngoại.
    1
    Biển báo cấm xe khách trên 29 chỗ được áp dụng trong các khoảng thời gian nào? Biển báo nguy hiểm và cảnh báo được dùng để báo cho người tham gia giao thông biết trước tính chất của sự nguy hiểm hoặc các điều cần chú ý phòng ngừa trên tuyến đường. Khi gặp biển báo nguy hiểm và cảnh báo, người tham gia giao thông phải giảm tốc độ đến mức cần thiết, chú ý quan sát và chuẩn bị sẵn sàng xử lý những tình huống có thể xẩy ra để phòng ngừa tai nạn. 0
    Biển báo cấm xe khách trên 29 chỗ được áp dụng trong các khoảng thời gian nào? a) Đến hết đoạn đường tốc độ tối thiểu, đặt biển số R.307 "Hết hạn chế tốc độ tối thiểu" (hoặc đặt biển số DP.135 "Hết tất cả các lệnh cấm", nếu đồng thời có nhiều biển cấm khác hết tác dụng).
    b) Biển có giá trị báo cho người tham gia giao thông biết hiệu lực của biển số R.306 hết tác dụng, kể từ biển này các xe được phép chạy chậm hơn trị số ghi trên biển nhưng không được gây cản trở các xe khác.

    Hình D.9 - Biển số R.307
    0
  • Loss: ContrastiveLoss with these parameters:
    {
        "distance_metric": "SiameseDistanceMetric.COSINE_DISTANCE",
        "margin": 0.5,
        "size_average": true
    }
    

Training Hyperparameters

Non-Default Hyperparameters

  • per_device_train_batch_size: 6
  • per_device_eval_batch_size: 12
  • gradient_accumulation_steps: 4
  • learning_rate: 2e-05
  • num_train_epochs: 1
  • warmup_ratio: 0.1
  • fp16: True
  • push_to_hub: True
  • hub_model_id: phonghoccode/VSLP2025_Embedding_semantic_v1
  • gradient_checkpointing: True

All Hyperparameters

Click to expand
  • overwrite_output_dir: False
  • do_predict: False
  • eval_strategy: no
  • prediction_loss_only: True
  • per_device_train_batch_size: 6
  • per_device_eval_batch_size: 12
  • per_gpu_train_batch_size: None
  • per_gpu_eval_batch_size: None
  • gradient_accumulation_steps: 4
  • eval_accumulation_steps: None
  • torch_empty_cache_steps: None
  • learning_rate: 2e-05
  • weight_decay: 0.0
  • adam_beta1: 0.9
  • adam_beta2: 0.999
  • adam_epsilon: 1e-08
  • max_grad_norm: 1.0
  • num_train_epochs: 1
  • max_steps: -1
  • lr_scheduler_type: linear
  • lr_scheduler_kwargs: {}
  • warmup_ratio: 0.1
  • warmup_steps: 0
  • log_level: passive
  • log_level_replica: warning
  • log_on_each_node: True
  • logging_nan_inf_filter: True
  • save_safetensors: True
  • save_on_each_node: False
  • save_only_model: False
  • restore_callback_states_from_checkpoint: False
  • no_cuda: False
  • use_cpu: False
  • use_mps_device: False
  • seed: 42
  • data_seed: None
  • jit_mode_eval: False
  • use_ipex: False
  • bf16: False
  • fp16: True
  • fp16_opt_level: O1
  • half_precision_backend: auto
  • bf16_full_eval: False
  • fp16_full_eval: False
  • tf32: None
  • local_rank: 0
  • ddp_backend: None
  • tpu_num_cores: None
  • tpu_metrics_debug: False
  • debug: []
  • dataloader_drop_last: False
  • dataloader_num_workers: 0
  • dataloader_prefetch_factor: None
  • past_index: -1
  • disable_tqdm: False
  • remove_unused_columns: True
  • label_names: None
  • load_best_model_at_end: False
  • ignore_data_skip: False
  • fsdp: []
  • fsdp_min_num_params: 0
  • fsdp_config: {'min_num_params': 0, 'xla': False, 'xla_fsdp_v2': False, 'xla_fsdp_grad_ckpt': False}
  • fsdp_transformer_layer_cls_to_wrap: None
  • accelerator_config: {'split_batches': False, 'dispatch_batches': None, 'even_batches': True, 'use_seedable_sampler': True, 'non_blocking': False, 'gradient_accumulation_kwargs': None}
  • deepspeed: None
  • label_smoothing_factor: 0.0
  • optim: adamw_torch
  • optim_args: None
  • adafactor: False
  • group_by_length: False
  • length_column_name: length
  • ddp_find_unused_parameters: None
  • ddp_bucket_cap_mb: None
  • ddp_broadcast_buffers: False
  • dataloader_pin_memory: True
  • dataloader_persistent_workers: False
  • skip_memory_metrics: True
  • use_legacy_prediction_loop: False
  • push_to_hub: True
  • resume_from_checkpoint: None
  • hub_model_id: phonghoccode/VSLP2025_Embedding_semantic_v1
  • hub_strategy: every_save
  • hub_private_repo: None
  • hub_always_push: False
  • gradient_checkpointing: True
  • gradient_checkpointing_kwargs: None
  • include_inputs_for_metrics: False
  • include_for_metrics: []
  • eval_do_concat_batches: True
  • fp16_backend: auto
  • push_to_hub_model_id: None
  • push_to_hub_organization: None
  • mp_parameters:
  • auto_find_batch_size: False
  • full_determinism: False
  • torchdynamo: None
  • ray_scope: last
  • ddp_timeout: 1800
  • torch_compile: False
  • torch_compile_backend: None
  • torch_compile_mode: None
  • include_tokens_per_second: False
  • include_num_input_tokens_seen: False
  • neftune_noise_alpha: None
  • optim_target_modules: None
  • batch_eval_metrics: False
  • eval_on_start: False
  • use_liger_kernel: False
  • eval_use_gather_object: False
  • average_tokens_across_devices: False
  • prompts: None
  • batch_sampler: batch_sampler
  • multi_dataset_batch_sampler: proportional

Training Logs

Epoch Step Training Loss
0.2029 100 0.0178
0.4059 200 0.0003
0.6088 300 0.0001
0.8118 400 0.0

Framework Versions

  • Python: 3.11.13
  • Sentence Transformers: 4.1.0
  • Transformers: 4.52.4
  • PyTorch: 2.6.0+cu124
  • Accelerate: 1.8.1
  • Datasets: 2.19.2
  • Tokenizers: 0.21.2

Citation

BibTeX

Sentence Transformers

@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",
}

ContrastiveLoss

@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}
}
Downloads last month
-
Safetensors
Model size
0.6B params
Tensor type
F32
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for phonghoccode/VSLP2025_Embedding_semantic_v1

Base model

BAAI/bge-m3
Finetuned
(4)
this model

Paper for phonghoccode/VSLP2025_Embedding_semantic_v1