|
---
|
|
base_model: intfloat/multilingual-e5-base
|
|
datasets: []
|
|
language:
|
|
- vi
|
|
- en
|
|
library_name: sentence-transformers
|
|
license: apache-2.0
|
|
metrics:
|
|
- cosine_accuracy@1
|
|
- cosine_accuracy@3
|
|
- cosine_accuracy@5
|
|
- cosine_accuracy@10
|
|
- cosine_precision@1
|
|
- cosine_precision@3
|
|
- cosine_precision@5
|
|
- cosine_precision@10
|
|
- cosine_recall@1
|
|
- cosine_recall@3
|
|
- cosine_recall@5
|
|
- cosine_recall@10
|
|
- cosine_ndcg@10
|
|
- cosine_mrr@10
|
|
- cosine_map@100
|
|
pipeline_tag: sentence-similarity
|
|
tags:
|
|
- sentence-transformers
|
|
- sentence-similarity
|
|
- feature-extraction
|
|
- generated_from_trainer
|
|
- loss:MatryoshkaLoss
|
|
- loss:MultipleNegativesRankingLoss
|
|
widget:
|
|
- source_sentence: Bóng đá có lợi ích gì cho sức khỏe?
|
|
sentences:
|
|
- Bóng đá giúp cải thiện sức khỏe tim mạch và tăng cường sức bền.
|
|
- Bóng đá là môn thể thao phổ biến nhất thế giới.
|
|
- Bóng đá có thể giúp bạn kết nối với nhiều người hơn.
|
|
|
|
model-index:
|
|
- name: Halong Embedding
|
|
results:
|
|
- task:
|
|
type: information-retrieval
|
|
name: Information Retrieval
|
|
dataset:
|
|
name: dim 768
|
|
type: dim_768
|
|
metrics:
|
|
- type: cosine_accuracy@1
|
|
value: 0.8294209702660407
|
|
name: Cosine Accuracy@1
|
|
- type: cosine_accuracy@3
|
|
value: 0.9233176838810642
|
|
name: Cosine Accuracy@3
|
|
- type: cosine_accuracy@5
|
|
value: 0.9436619718309859
|
|
name: Cosine Accuracy@5
|
|
- type: cosine_accuracy@10
|
|
value: 0.9687010954616588
|
|
name: Cosine Accuracy@10
|
|
- type: cosine_precision@1
|
|
value: 0.8294209702660407
|
|
name: Cosine Precision@1
|
|
- type: cosine_precision@3
|
|
value: 0.3145539906103286
|
|
name: Cosine Precision@3
|
|
- type: cosine_precision@5
|
|
value: 0.1931142410015649
|
|
name: Cosine Precision@5
|
|
- type: cosine_precision@10
|
|
value: 0.09906103286384975
|
|
name: Cosine Precision@10
|
|
- type: cosine_recall@1
|
|
value: 0.8145539906103286
|
|
name: Cosine Recall@1
|
|
- type: cosine_recall@3
|
|
value: 0.9178403755868545
|
|
name: Cosine Recall@3
|
|
- type: cosine_recall@5
|
|
value: 0.9389671361502347
|
|
name: Cosine Recall@5
|
|
- type: cosine_recall@10
|
|
value: 0.9640062597809077
|
|
name: Cosine Recall@10
|
|
- type: cosine_ndcg@10
|
|
value: 0.8976041381292648
|
|
name: Cosine Ndcg@10
|
|
- type: cosine_mrr@10
|
|
value: 0.879893558884169
|
|
name: Cosine Mrr@10
|
|
- type: cosine_map@100
|
|
value: 0.8763179130484675
|
|
name: Cosine Map@100
|
|
|
|
---
|
|
|
|
# Halong Embedding
|
|
|
|
Halong Embedding is a Vietnamese text embedding focused on RAG and production efficiency:
|
|
- 📚 Trained on a in house dataset consist of approximately 100,000 examples of question and related documents
|
|
- 🪆 Trained with a Matryoshka loss, allowing you to truncate embeddings with minimal performance loss: smaller embeddings are faster to compare.
|
|
|
|
This is a [sentence-transformers](https://www.SBERT.net) model finetuned from [intfloat/multilingual-e5-base](https://huggingface.co/intfloat/multilingual-e5-base). It maps sentences & paragraphs to a 768-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:** [intfloat/multilingual-e5-base](https://huggingface.co/intfloat/multilingual-e5-base) <!-- at revision d13f1b27baf31030b7fd040960d60d909913633f -->
|
|
- **Maximum Sequence Length:** 512 tokens
|
|
- **Output Dimensionality:** 768 tokens
|
|
- **Similarity Function:** Cosine Similarity
|
|
<!-- - **Training Dataset:** Unknown -->
|
|
- **Language:** vi-focused, multilingual
|
|
- **License:** apache-2.0
|
|
|
|
### Model Sources
|
|
|
|
- **Documentation:** [Sentence Transformers Documentation](https://sbert.net)
|
|
- **Repository:** [Sentence Transformers on GitHub](https://github.com/UKPLab/sentence-transformers)
|
|
- **Hugging Face:** [Sentence Transformers on Hugging Face](https://huggingface.co/models?library=sentence-transformers)
|
|
|
|
### 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
|
|
|
|
### Direct Usage (Sentence Transformers)
|
|
|
|
First install the Sentence Transformers library:
|
|
|
|
```bash
|
|
pip install -U sentence-transformers
|
|
```
|
|
|
|
Then you can load this model and run inference.
|
|
```python
|
|
from sentence_transformers import SentenceTransformer
|
|
import torch
|
|
|
|
# Download from the 🤗 Hub
|
|
model = SentenceTransformer("hiieu/halong_embedding")
|
|
|
|
# Define query and documents
|
|
query = "Bóng đá có lợi ích gì cho sức khỏe?"
|
|
docs = [
|
|
"Bóng đá giúp cải thiện sức khỏe tim mạch và tăng cường sức bền.",
|
|
"Bóng đá là môn thể thao phổ biến nhất thế giới.",
|
|
"Chơi bóng đá giúp giảm căng thẳng và cải thiện tâm lý.",
|
|
"Bóng đá có thể giúp bạn kết nối với nhiều người hơn.",
|
|
"Bóng đá không chỉ là môn thể thao mà còn là cách để giải trí."
|
|
]
|
|
|
|
# Encode query and documents
|
|
query_embedding = model.encode([query])
|
|
doc_embeddings = model.encode(docs)
|
|
similarities = model.similarity(query_embedding, doc_embeddings).flatten()
|
|
|
|
# Sort documents by cosine similarity
|
|
sorted_indices = torch.argsort(similarities, descending=True)
|
|
sorted_docs = [docs[idx] for idx in sorted_indices]
|
|
sorted_scores = [similarities[idx].item() for idx in sorted_indices]
|
|
|
|
# Print sorted documents with their cosine scores
|
|
for doc, score in zip(sorted_docs, sorted_scores):
|
|
print(f"Document: {doc} - Cosine Similarity: {score:.4f}")
|
|
|
|
# Document: Bóng đá giúp cải thiện sức khỏe tim mạch và tăng cường sức bền. - Cosine Similarity: 0.7318
|
|
# Document: Chơi bóng đá giúp giảm căng thẳng và cải thiện tâm lý. - Cosine Similarity: 0.6623
|
|
# Document: Bóng đá không chỉ là môn thể thao mà còn là cách để giải trí. - Cosine Similarity: 0.6102
|
|
# Document: Bóng đá có thể giúp bạn kết nối với nhiều người hơn. - Cosine Similarity: 0.4988
|
|
# Document: Bóng đá là môn thể thao phổ biến nhất thế giới. - Cosine Similarity: 0.4828
|
|
```
|
|
|
|
### Matryoshka Embeddings Inference
|
|
```python
|
|
from sentence_transformers import SentenceTransformer
|
|
import torch.nn.functional as F
|
|
import torch
|
|
|
|
matryoshka_dim = 64
|
|
model = SentenceTransformer(
|
|
"hiieu/halong_embedding",
|
|
truncate_dim=matryoshka_dim,
|
|
)
|
|
|
|
# Define query and documents
|
|
query = "Bóng đá có lợi ích gì cho sức khỏe?"
|
|
docs = [
|
|
"Bóng đá giúp cải thiện sức khỏe tim mạch và tăng cường sức bền.",
|
|
"Bóng đá là môn thể thao phổ biến nhất thế giới.",
|
|
"Chơi bóng đá giúp giảm căng thẳng và cải thiện tâm lý.",
|
|
"Bóng đá có thể giúp bạn kết nối với nhiều người hơn.",
|
|
"Bóng đá không chỉ là môn thể thao mà còn là cách để giải trí."
|
|
]
|
|
|
|
# Encode query and documents
|
|
query_embedding = model.encode([query])
|
|
doc_embeddings = model.encode(docs)
|
|
similarities = model.similarity(query_embedding, doc_embeddings).flatten()
|
|
|
|
# Sort documents by cosine similarity
|
|
sorted_indices = torch.argsort(similarities, descending=True)
|
|
sorted_docs = [docs[idx] for idx in sorted_indices]
|
|
sorted_scores = [similarities[idx].item() for idx in sorted_indices]
|
|
|
|
# Print sorted documents with their cosine scores
|
|
for doc, score in zip(sorted_docs, sorted_scores):
|
|
print(f"Document: {doc} - Cosine Similarity: {score:.4f}")
|
|
|
|
# Document: Bóng đá giúp cải thiện sức khỏe tim mạch và tăng cường sức bền. - Cosine Similarity: 0.8045
|
|
# Document: Chơi bóng đá giúp giảm căng thẳng và cải thiện tâm lý. - Cosine Similarity: 0.7676
|
|
# Document: Bóng đá không chỉ là môn thể thao mà còn là cách để giải trí. - Cosine Similarity: 0.6758
|
|
# Document: Bóng đá có thể giúp bạn kết nối với nhiều người hơn. - Cosine Similarity: 0.5931
|
|
# Document: Bóng đá là môn thể thao phổ biến nhất thế giới. - Cosine Similarity: 0.5105
|
|
```
|
|
<!--
|
|
### Direct Usage (Transformers)
|
|
|
|
<details><summary>Click to see the direct usage in Transformers</summary>
|
|
|
|
</details>
|
|
-->
|
|
|
|
<!--
|
|
### Downstream Usage (Sentence Transformers)
|
|
|
|
You can finetune this model on your own dataset.
|
|
|
|
<details><summary>Click to expand</summary>
|
|
|
|
</details>
|
|
-->
|
|
|
|
<!--
|
|
### Out-of-Scope Use
|
|
|
|
*List how the model may foreseeably be misused and address what users ought not to do with the model.*
|
|
-->
|
|
|
|
## Evaluation
|
|
|
|
### Metrics
|
|
|
|
#### Information Retrieval
|
|
* Dataset: [Zalo legal retrieval dataet](https://huggingface.co/datasets/hiieu/legal_eval_label)
|
|
* *note*: We sampled 20% of the Zalo Legal train dataset for fast testing; our model did not train on this dataset.
|
|
* Evaluated with [<code>InformationRetrievalEvaluator</code>](https://sbert.net/docs/package_reference/sentence_transformer/evaluation.html#sentence_transformers.evaluation.InformationRetrievalEvaluator)
|
|
|
|
| Model | Accuracy@1 | Accuracy@3 | Accuracy@5 | Accuracy@10 | Precision@1 | Precision@3 | Precision@5 | Precision@10 | Recall@1 | Recall@3 | Recall@5 | Recall@10 | NDCG@10 | MRR@10 | MAP@100 |
|
|
|----------------------|------------|------------|------------|-------------|-------------|--------------|--------------|---------------|-----------|-----------|-----------|------------|---------|--------|---------|
|
|
|
|
|
vietnamese-bi-encoder | 0.8169 | 0.9108 | 0.9437 | 0.9640 | 0.8169 | 0.3099 | 0.1931 | 0.0987 | 0.8020 | 0.9045 | 0.9390 | 0.9601 | 0.8882 | 0.8685 | 0.8652 |
|
|
| sup-SimCSE-VietNamese-phobert-base | 0.5540 | 0.7308 | 0.7981 | 0.8748 | 0.5540 | 0.2473 | 0.1621 | 0.0892 | 0.5446 | 0.7246 | 0.7903 | 0.8693 | 0.7068 | 0.6587 | 0.6592 |
|
|
| halong_embedding (768) | 0.8294 | 0.9233 | 0.9437 | 0.9687 | 0.8294 | 0.3146 | 0.1931 | 0.0991 | 0.8146 | 0.9178 | 0.9390 | 0.9640 | 0.8976 | 0.8799 | 0.8763 |
|
|
| halong_embedding (512) | 0.8138 | 0.9233 | 0.9390 | 0.9703 | 0.8138 | 0.3146 | 0.1922 | 0.0992 | 0.7989 | 0.9178 | 0.9343 | 0.9656 | 0.8917 | 0.8715 | 0.8678 |
|
|
| halong_embedding (256) | 0.7934 | 0.8967 | 0.9280 | 0.9593 | 0.7934 | 0.3062 | 0.1900 | 0.0981 | 0.7786 | 0.8920 | 0.9233 | 0.9546 | 0.8743 | 0.8520 | 0.8489 |
|
|
| halong_embedding (128) | 0.7840 | 0.8951 | 0.9264 | 0.9515 | 0.7840 | 0.3046 | 0.1894 | 0.0975 | 0.7707 | 0.8889 | 0.9210 | 0.9476 | 0.8669 | 0.8439 | 0.8412 |
|
|
| halong_embedding (64) | 0.6980 | 0.8435 | 0.8920 | 0.9358 | 0.6980 | 0.2864 | 0.1815 | 0.0958 | 0.6854 | 0.8365 | 0.8842 | 0.9311 | 0.8145 | 0.7805 | 0.7775 |
|
|
|
|
|
|
<!--
|
|
## Bias, Risks and Limitations
|
|
|
|
*What are the known or foreseeable issues stemming from this model? You could also flag here known failure cases or weaknesses of the model.*
|
|
-->
|
|
|
|
<!--
|
|
### Recommendations
|
|
|
|
*What are recommendations with respect to the foreseeable issues? For example, filtering explicit content.*
|
|
-->
|
|
|
|
|
|
## Citation
|
|
|
|
You can cite our work as below:
|
|
|
|
```Plaintext
|
|
@misc{HalongEmbedding,
|
|
title={HalongEmbedding: A Vietnamese Text Embedding},
|
|
author={Ngo Hieu},
|
|
year={2024},
|
|
publisher={Huggingface},
|
|
}
|
|
```
|
|
|
|
|
|
### BibTeX
|
|
|
|
#### Sentence Transformers
|
|
```bibtex
|
|
@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",
|
|
}
|
|
```
|
|
|
|
#### MatryoshkaLoss
|
|
```bibtex
|
|
@misc{kusupati2024matryoshka,
|
|
title={Matryoshka Representation Learning},
|
|
author={Aditya Kusupati and Gantavya Bhatt and Aniket Rege and Matthew Wallingford and Aditya Sinha and Vivek Ramanujan and William Howard-Snyder and Kaifeng Chen and Sham Kakade and Prateek Jain and Ali Farhadi},
|
|
year={2024},
|
|
eprint={2205.13147},
|
|
archivePrefix={arXiv},
|
|
primaryClass={cs.LG}
|
|
}
|
|
```
|
|
|
|
#### MultipleNegativesRankingLoss
|
|
```bibtex
|
|
@misc{henderson2017efficient,
|
|
title={Efficient Natural Language Response Suggestion for Smart Reply},
|
|
author={Matthew Henderson and Rami Al-Rfou and Brian Strope and Yun-hsuan Sung and Laszlo Lukacs and Ruiqi Guo and Sanjiv Kumar and Balint Miklos and Ray Kurzweil},
|
|
year={2017},
|
|
eprint={1705.00652},
|
|
archivePrefix={arXiv},
|
|
primaryClass={cs.CL}
|
|
}
|
|
```
|
|
|
|
<!--
|
|
## Glossary
|
|
|
|
*Clearly define terms in order to be accessible across audiences.*
|
|
-->
|
|
|
|
<!--
|
|
## Model Card Authors
|
|
|
|
*Lists the people who create the model card, providing recognition and accountability for the detailed work that goes into its construction.*
|
|
-->
|
|
|
|
<!--
|
|
## Model Card Contact
|
|
|
|
*Provides a way for people who have updates to the Model Card, suggestions, or questions, to contact the Model Card authors.*
|
|
--> |