File size: 5,070 Bytes
78f7977
 
 
 
 
 
 
ec9a4c9
78f7977
ec9a4c9
78f7977
ec9a4c9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
78f7977
 
ec9a4c9
 
 
 
 
 
 
 
6a147c4
ec9a4c9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
78f7977
 
 
d1adc18
 
 
 
 
 
 
 
96774e4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173

---
license: apache-2.0
datasets:
- truro7/vn-law-questions-and-corpus
language:
- vi

base_model: hiieu/halong_embedding

library_name: sentence-transformers

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:
- legal
- sentence-transformers
- sentence-similarity
- feature-extraction
- generated_from_trainer
- loss:MatryoshkaLoss
- loss:MultipleNegativesRankingLoss

model-index:
- name: VN Law Embedding
  results:
  - task:
      type: information-retrieval
      name: Information Retrieval
    metrics:
    - type: cosine_accuracy@1
      value: 0.623
      name: Cosine Accuracy@1
    - type: cosine_accuracy@3
      value: 0.792
      name: Cosine Accuracy@3
    - type: cosine_accuracy@5
      value: 0.851
      name: Cosine Accuracy@5
    - type: cosine_accuracy@10
      value: 0.900   
      name: Cosine Accuracy@10
    - type: cosine_precision@1
      value: 0.623
      name: Cosine Precision@1
    - type: cosine_precision@3
      value: 0.412 
      name: Cosine Precision@3
    - type: cosine_precision@5
      value: 0.310 
      name: Cosine Precision@5
    - type: cosine_precision@10
      value: 0.184 
      name: Cosine Precision@10
    - type: cosine_recall@1
      value: 0.353 
      name: Cosine Recall@1
    - type: cosine_recall@3
      value: 0.608 
      name: Cosine Recall@3
    - type: cosine_recall@5
      value: 0.722
      name: Cosine Recall@5
    - type: cosine_recall@10
      value: 0.823   
      name: Cosine Recall@10
    - type: cosine_ndcg@10
      value: 0.706 
      name: Cosine Ndcg@10
    - type: cosine_mrr@10
      value: 0.717 
      name: Cosine Mrr@10
    - type: cosine_map@100
      value: 0.645  
      name: Cosine Map@100

---

# VN Law Embedding

VN Law Embedding is a Vietnamese text embedding model designed for Retrieval-Augmented Generation (RAG), specifically to retrieve precise legal documents in response to legal questions.

The model is trained on a dataset of Vietnamese legal questions and corresponding legal documents and evaluated using an Information Retrieval Evaluator.

It uses Matryoshka loss during training and can be truncated to smaller dimensions, allowing for faster comparisons between queries and documents without sacrificing performance.

# Usage

## Direct usage

```python
from sentence_transformers import SentenceTransformer
import torch
import torch.nn.functional as F

model = SentenceTransformer("truro7/vn-law-embedding", truncate_dim = 128)

query = "Trộm cắp sẽ bị xử lý như thế nào?" 

corpus = """

[100_2015_QH13]

LUẬT HÌNH SỰ
Điều 173. Tội trộm cắp tài sản

Khoản 1:

1. Người nào trộm cắp tài sản của người khác trị giá từ 2.000.000 đồng đến dưới 50.000.000 đồng hoặc dưới 2.000.000 đồng nhưng thuộc một trong các trường hợp sau đây, thì bị phạt cải tạo không giam giữ đến 03 năm hoặc phạt tù từ 06 tháng đến 03 năm:
a) Đã bị xử phạt vi phạm hành chính về hành vi chiếm đoạt tài sản mà còn vi phạm;
b) Đã bị kết án về tội này hoặc về một trong các tội quy định tại các điều 168, 169, 170, 171, 172, 174, 175 và 290 của Bộ luật này, chưa được xóa án tích mà còn vi phạm;
c) Gây ảnh hưởng xấu đến an ninh, trật tự, an toàn xã hội;
d) Tài sản là phương tiện kiếm sống chính của người bị hại và gia đình họ; tài sản là kỷ vật, di vật, đồ thờ cúng có giá trị đặc biệt về mặt tinh thần đối với người bị hại.
    
"""

embedding = torch.tensor([model.encode(query)])
corpus_embeddings = torch.tensor([model.encode(corpus)])

cosine_similarities = F.cosine_similarity(embedding, corpus_embeddings)

print(cosine_similarities.item()) #0.81



```

## Retrieve top k documents
```python
from sentence_transformers import SentenceTransformer
import torch
import torch.nn.functional as F

model = SentenceTransformer("truro7/vn-law-embedding", truncate_dim = 128)

all_docs = read_all_docs() # Read all legal documents -> list of document contents 
top_k = 3
embedding_docs = torch.load(vectordb_path, weights_only=False).to(self.device) # Vector database

query = "Trộm cắp sẽ bị xử lý như thế nào?" 
embedding = torch.tensor(model.encode(query))

cosine_similarities = F.cosine_similarity(embedding.unsqueeze(0).expand(self.embedding_docs.shape[0], 1, 128), self.embedding_docs, dim = -1).view(-1)
top_k = cosine_similarities.topk(k)

top_k_indices = top_k.indices
top_k_values = top_k.values

print(top_k_values)  #Similarity scores

for i in top_k_indices:     #Show top k relevant documents
    print(all_docs[i])
    print("___________________________________________")

```