Sentence Similarity
sentence-transformers
Safetensors
xlm-roberta
feature-extraction
text-embeddings-inference
Instructions to use bqbbao6/VN_legal_embedding_512 with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- sentence-transformers
How to use bqbbao6/VN_legal_embedding_512 with sentence-transformers:
from sentence_transformers import SentenceTransformer model = SentenceTransformer("bqbbao6/VN_legal_embedding_512") sentences = [ "That is a happy person", "That is a happy dog", "That is a very happy person", "Today is a sunny day" ] embeddings = model.encode(sentences) similarities = model.similarity(embeddings, embeddings) print(similarities.shape) # [4, 4] - Notebooks
- Google Colab
- Kaggle
Notice: The better version for this model
Version not using Word Segmentation: bqbbao6/vietnamese-legal-embedding
Version using Word Segmentation: bqbbao6/vietnamese-legal-embedding-wsgm
VN_legal_embedding
This is a sentence-transformers model: It maps sentences & paragraphs to a 768 dimensional dense vector space and can be used for tasks like clustering or semantic search.
Evaluation Results
For an automated evaluation of this model, see the Sentence Embeddings Benchmark: https://seb.sbert.net
Trained Dataset:
The model was trained on an in-house dataset consisting of approximately 30000 examples of legal questions and their related contexts.
Loss:
sentence_transformers.losses.TripletLoss.TripletLoss with parameters:
{'distance_metric': 'TripletDistanceMetric.COSINE', 'triplet_margin': 0.5}
Parameters of the fit()-Method:
{
"epochs": 5,
"evaluation_steps": 0,
"evaluator": "sentence_transformers.evaluation.EmbeddingSimilarityEvaluator.EmbeddingSimilarityEvaluator",
"max_grad_norm": 1,
"optimizer_class": "<class 'torch.optim.adamw.AdamW'>",
"optimizer_params": {
"lr": 2e-05
},
"scheduler": "WarmupLinear",
"steps_per_epoch": null,
"warmup_steps": 1958,
"weight_decay": 0.01
}
Full Model Architecture
SentenceTransformer(
(0): Transformer({'max_seq_length': 512, 'do_lower_case': False}) with Transformer model: XLMRobertaModel
(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()
)
Usage
First install the Sentence Transformers library:
pip install -U sentence-transformers
Then you can load this model and run inference.
Ex1:
from sentence_transformers import SentenceTransformer
import torch
model = SentenceTransformer(
"bqbbao6/VN_legal_embedding_512",
trust_remote_code=True
)
query = "query: " + "Người lao động được nghỉ bao nhiêu ngày phép mỗi năm?"
embedding = model.encode(query)
print(f"Embedding shape: {embedding.shape}") # (768,)
Ex2:
from sentence_transformers import SentenceTransformer
import torch
model = SentenceTransformer(
"bqbbao6/VN_legal_embedding_512",
trust_remote_code=True
)
query = "query: " + "Người lao động được nghỉ bao nhiêu ngày phép năm?"
corpus = [
# Đúng
"Người lao động làm việc đủ 12 tháng được nghỉ 12 ngày phép năm có hưởng lương.",
# Giống chủ ngữ nhưng khác nội dung
"Người lao động được hưởng chế độ bảo hiểm xã hội theo quy định của pháp luật.",
# Giống vị ngữ nhưng khác chủ ngữ
"Cán bộ công chức được nghỉ 12 ngày phép năm theo quy định.",
# Giống một phần nhưng nói về đối tượng khác
"Người lao động chưa đủ 12 tháng được nghỉ phép theo tỷ lệ tương ứng.",
# Hoàn toàn không liên quan
"Doanh nghiệp phải đóng thuế thu nhập doanh nghiệp hàng năm.",
]
corpus_prefixed = ["passage: " + p for p in corpus]
q_emb = model.encode(query, normalize_embeddings=True)
c_emb = model.encode(corpus_prefixed, normalize_embeddings=True)
scores = cos_sim(q_emb, c_emb)[0]
for i, (score, passage) in enumerate(zip(scores, corpus)):
print(f"[{i+1}] Score: {score:.4f} | {passage}")
- Downloads last month
- 304
Model tree for bqbbao6/VN_legal_embedding_512
Base model
intfloat/multilingual-e5-base