| | ---
|
| | 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.*
|
| | --> |