File size: 5,143 Bytes
ad491b1
4d1a6d4
 
 
 
 
afe6eab
 
 
 
 
 
 
 
 
ad491b1
4d1a6d4
afe6eab
4d1a6d4
 
 
d9171f8
 
 
bcb1ccd
d9171f8
 
 
bcb1ccd
d9171f8
 
 
 
 
 
 
 
 
4d1a6d4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3302f7d
4d1a6d4
 
 
 
 
 
d9171f8
4d1a6d4
d9171f8
09e4cde
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4d1a6d4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
afe6eab
 
 
 
 
 
 
 
 
 
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
---
pipeline_tag: sentence-similarity
tags:
- sentence-transformers
- feature-extraction
- sentence-similarity
- law
- australia
- legal
- auslaw
license: apache-2.0
datasets:
- umarbutler/open-australian-legal-corpus
language:
- en
---

# AusLaw Embedding Model v1.0

This is a [sentence-transformers](https://www.SBERT.net) model: It maps sentences & paragraphs to a 384 dimensional dense vector space and can be used for tasks like clustering or semantic search.

This model is a fine-tune of [BAAI/bge-small-en](https://huggingface.co/BAAI/bge-small-en) using the HCA case law in the [Open Australian Legal Corpus](https://huggingface.co/datasets/umarbutler/open-australian-legal-corpus) by Umar Butler. The PDF/OCR cases were not used. 

The cases were split into < 512 context chunks using the bge-small-en tokeniser and [semchunk](https://github.com/umarbutler/semchunk).

[mistralai/Mixtral-8x7B-Instruct-v0.1](https://huggingface.co/mistralai/Mixtral-8x7B-Instruct-v0.1) was used to generate a legal question for each context chunk.

129,137 context-question pairs were used for training. 

14,348 context-question pairs were used for evaluation (see the table below for results).

Using a 10% subset of the val dataset the following hit-rate performance was reached and is compared to the base model and OpenAI's default ada embedding model.

| **Model**                 | **Avg. hit-rate** |
|---------------------------|-------------------|
| BAAI/bge-small-en         | 89%               |
| OpenAI                    | 92%               |
| adlumal/auslaw-embed-v1.0 | **97%**           |

## Usage (Sentence-Transformers)

Using this model becomes easy when you have [sentence-transformers](https://www.SBERT.net) installed:

```
pip install -U sentence-transformers
```

Then you can use the model like this:

```python
from sentence_transformers import SentenceTransformer
sentences = ["This is an example sentence", "Each sentence is converted"]

model = SentenceTransformer('adlumal/auslaw-embed-v1.0')
embeddings = model.encode(sentences)
print(embeddings)
```

## Evaluation Results

The model was evauluated on 10% of the available data. The automated eval results for the final step are presented below.

| Eval                   | Score        |
|------------------------|--------------|
| cos_sim-Accuracy@1     | 0.730206301  |
| cos_sim-Accuracy@3     | 0.859562308  |
| cos_sim-Accuracy@5     | 0.892737664  |
| cos_sim-Accuracy@10    | 0.928352384  |
| cos_sim-Precision@1    | 0.730206301  |
| cos_sim-Recall@1       | 0.730206301  |
| cos_sim-Precision@3    | 0.286520769  |
| cos_sim-Recall@3       | 0.859562308  |
| cos_sim-Precision@5    | 0.178547533  |
| cos_sim-Recall@5       | 0.892737664  |
| cos_sim-Precision@10   | 0.092835238  |
| cos_sim-Recall@10      | 0.928352384  |
| cos_sim-MRR@10         | 0.801075782  |
| cos_sim-NDCG@10        | 0.832189447  |
| cos_sim-MAP@100        | 0.803593645  |
| dot_score-Accuracy@1   | 0.730136604  |
| dot_score-Accuracy@3   | 0.859562308  |
| dot_score-Accuracy@5   | 0.892737664  |
| dot_score-Accuracy@10  | 0.928352384  |
| dot_score-Precision@1  | 0.730136604  |
| dot_score-Recall@1     | 0.730136604  |
| dot_score-Precision@3  | 0.286520769  |
| dot_score-Recall@3     | 0.859562308  |
| dot_score-Precision@5  | 0.178547533  |
| dot_score-Recall@5     | 0.892737664  |
| dot_score-Precision@10 | 0.092835238  |
| dot_score-Recall@10    | 0.928352384  |
| dot_score-MRR@10       | 0.801040934  |
| dot_score-NDCG@10      | 0.832163724  |
| dot_score-MAP@100      | 0.803558796  |

## Training
The model was trained with the parameters:

**DataLoader**:

`torch.utils.data.dataloader.DataLoader` of length 2583 with parameters:
```
{'batch_size': 50, 'sampler': 'torch.utils.data.sampler.SequentialSampler', 'batch_sampler': 'torch.utils.data.sampler.BatchSampler'}
```

**Loss**:

`sentence_transformers.losses.MultipleNegativesRankingLoss.MultipleNegativesRankingLoss` with parameters:
  ```
  {'scale': 20.0, 'similarity_fct': 'cos_sim'}
  ```

Parameters of the fit()-Method:
```
{
    "epochs": 2,
    "evaluation_steps": 50,
    "evaluator": "sentence_transformers.evaluation.InformationRetrievalEvaluator.InformationRetrievalEvaluator",
    "max_grad_norm": 1,
    "optimizer_class": "<class 'torch.optim.adamw.AdamW'>",
    "optimizer_params": {
        "lr": 2e-05
    },
    "scheduler": "WarmupLinear",
    "steps_per_epoch": null,
    "warmup_steps": 516,
    "weight_decay": 0.01
}
```


## Full Model Architecture
```
SentenceTransformer(
  (0): Transformer({'max_seq_length': 512, 'do_lower_case': True}) with Transformer model: BertModel 
  (1): Pooling({'word_embedding_dimension': 384, 'pooling_mode_cls_token': True, 'pooling_mode_mean_tokens': False, 'pooling_mode_max_tokens': False, 'pooling_mode_mean_sqrt_len_tokens': False})
  (2): Normalize()
)
```

## Citing & Authors

```bibtex
@misc{malec-2024-auslaw-embed-v1,
    author = {Malec, Adrian Lucas},
    year = {2024},
    title = {AusLaw Embedding v1.0},
    publisher = {Hugging Face},
    version = {1.0},
    url = {https://huggingface.co/adlumal/auslaw-embed-v1.0}
}
```