File size: 27,545 Bytes
f572c1f
 
 
 
 
7ebf9a8
f572c1f
7ebf9a8
f572c1f
 
 
 
 
 
 
cd1ad1f
f572c1f
cd1ad1f
f572c1f
26a8db0
f572c1f
 
 
 
 
c24b1d8
3e58fbe
f572c1f
 
 
 
5f2951d
f572c1f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
835ba8f
f572c1f
 
 
 
 
 
0bd3af2
f572c1f
 
1458f66
f572c1f
 
 
 
 
 
835ba8f
240b512
b0cc527
f572c1f
 
0c1d199
f572c1f
 
 
 
 
 
 
 
 
 
 
8887186
f572c1f
 
 
 
 
 
8887186
 
 
 
 
f572c1f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8887186
f572c1f
 
24d520f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
f572c1f
 
 
24d520f
 
f572c1f
 
 
b1b5fbf
f572c1f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
0bd3af2
f572c1f
 
0bd3af2
f572c1f
 
0bd3af2
f572c1f
8887186
f572c1f
 
 
b0cc527
f572c1f
8887186
f572c1f
4f8d184
cd1ad1f
 
f572c1f
1458f66
 
 
 
4f8d184
 
 
 
 
 
 
 
 
1458f66
 
bfcc611
f572c1f
 
bf447a4
4f8d184
cd1ad1f
 
 
1458f66
cd1ad1f
bfcc611
 
cd1ad1f
 
bfcc611
4f8d184
f572c1f
 
 
 
 
cd1ad1f
f572c1f
 
 
 
 
 
 
 
 
 
 
cd1ad1f
f572c1f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8682aca
 
 
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
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
---
license: apache-2.0
language:
- ar
datasets:
- MSMARCO
- MIRACL
- Wikipedia
tags:
- miniDense
- passage-retrieval
- knowledge-distillation
- middle-training
- sentence-transformers
pretty_name: >-
  miniDense is a family of High-quality, Light Weight and Easy deploy
  multilingual embedders / retrievers, primarily focussed on Indo-Aryan and
  Indo-Dravidian Languages.
library_name: transformers
inference: false
pipeline_tag: sentence-similarity
---


<center>
<img src="./logo.png" width=250/>
  <img src="./ar_intro.png" width=180%/>
</center>


<center>
<img src="./ar_metrics_1.png" width=200%/>
  <b><p>Table 1: Arabic retrieval performance on the MIRACL dev set (measured by nDCG@10)</p></b>
</center>


## Architecture:

- Model: BERT.
- Tokenizer: XLM-Roberta's Tokenizer.
- Vocab: 250K
  
<br/>

<center>
  <h1> Table Of Contents </h1>
</center>


- [Request, Terms, Disclaimers:](#request-terms-disclaimers)
- [Detailed comparison & Our Contribution:](#detailed-comparison--our-contribution)
- [ONNX & GGUF Status:](#onnx--gguf-status)
- [Usage:](#usage)
    - [With Sentence Transformers:](#with-sentence-transformers)
    - [With Huggingface Transformers:](#with-huggingface-transformers)
- [FAQs](#faqs)
    - [How can I reduce overall inference cost?](#how-can-i-reduce-overall-inference-cost)
    - [How do I reduce vector storage cost?](#how-do-i-reduce-vector-storage-cost)
    - [How do I offer hybrid search to improve accuracy?](#how-do-i-offer-hybrid-search-to-improve-accuracy)
- [MTEB numbers](#mteb-numbers)
- [Roadmap](#roadmap)
- [Notes on Reproducing:](#notes-on-reproducing)
- [Reference:](#reference)
- [Note on model bias](#note-on-model-bias)


# Request, Terms, Disclaimers:

[https://github.com/sponsors/PrithivirajDamodaran](https://github.com/sponsors/PrithivirajDamodaran)

<center>
  <img src="./ar_terms.png" width=250%/>
</center>


# Detailed comparison & Our Contribution:

English language famously have **all-minilm** series models which were great for quick experimentations and for certain production workloads. The Idea is to have same for the other popular langauges, starting with Indo-Aryan and Indo-Dravidian languages. Our innovation is in bringing high quality models which easy to serve and embeddings are cheaper to store without ANY pretraining or expensive finetuning. For instance, **all-minilm** are finetuned on 1-Billion pairs. We offer a very lean model but with a huge vocabulary - around 250K.
We will add more details here.


<center>
  <img src="./ar_metrics_2.png" width=120%/>
  <b><p>Table 2: Detailed Arabic retrieval performance on the MIRACL dev set (measured by nDCG@10)</p></b>
  
</center>

Full set of evaluation numbers for our model

```python
{'NDCG@1': 0.50449, 'NDCG@3': 0.52437, 'NDCG@5': 0.55649, 'NDCG@10': 0.60599, 'NDCG@100': 0.64745, 'NDCG@1000': 0.65717}
{'MAP@1': 0.34169, 'MAP@3': 0.45784, 'MAP@5': 0.48922, 'MAP@10': 0.51316, 'MAP@100': 0.53012, 'MAP@1000': 0.53069}
{'Recall@10': 0.72479, 'Recall@50': 0.87686, 'Recall@100': 0.91178, 'Recall@200': 0.93593, 'Recall@500': 0.96254, 'Recall@1000': 0.97557}
{'P@1': 0.50449, 'P@3': 0.29604, 'P@5': 0.21581, 'P@10': 0.13149, 'P@100': 0.01771, 'P@1000': 0.0019}
{'MRR@10': 0.61833, 'MRR@100': 0.62314, 'MRR@1000': 0.62329}
```

<br/>

# ONNX & GGUF Status:

|Variant| Status |
|:---:|:---:|
|FP16 ONNX | ✅ |
|GGUF | WIP| 

# Usage:

#### With Sentence Transformers:

```python
from sentence_transformers import SentenceTransformer
import scipy.spatial


model = SentenceTransformer('prithivida/miniDense_arabic_v1')

corpus = [
    'أرق يمكن أن يحدث الأرق بشكل مستقل أو نتيجة لمشكلة أخرى. وتشمل الظروف التي يمكن أن تؤدي إلى الأرق : توتر، ألم مزمن، قصور القلب، فرط الدرقية، حرقة الفؤاد، متلازمة تململ الساقين، سن اليأس وبعض الأدوية، مثل كافيين، نيكوتين، و الكحول. وتشمل عوامل الخطر الأخرى العمل ليلا وانقطاع النفس النومي. ويستند التشخيص على عادات النوم للبحث عن الأسباب الكامنة. كما يمكن إجراء دراسة على النوم للبحث عن اضطرابات النوم الكامنة.  ويتم هذا الإجراء بسؤالين: "هل تواجه صعوبة في النوم؟" و "هل لديك صعوبة في الدخول في النوم أو البقاء نائما؟',
    'أرق في كثير من الحالات، يشترك الأرق مع مرض آخر، كما يمكن حدوثه بسبب الآثار الجانبية من الأدوية، أو المشاكل النفسية. ما يقرب من نصف الأشخاص المصابين بالأرق يرتبطون باضطرابات نفسية. بينما في الاكتئاب "ينبغي اعتبار الأرق حالة مرضية، بدلا من أن تكون حالة ثانوية؛" والأرق عادة ما يسبق الأعراض النفسية. " فمن الممكن أن يشكل الأرق خطرا كبيرا لتطوير اضطراب نفسي لاحق". يحدث الأرق في ما بين 60٪ و 80٪ من الأشخاص الذين يعانون من الاكتئاب. وقد يرجع ذلك جزئيا إلى العلاج المستخدم لعلاج الاكتئاب.',
    'وخز جانبي لا يوجد سبب واحد دقيق معروف للوخز الجانبي، ولكن يوجد عدد من التفاسير لسبب هذا الألم ولكنها ليست تفاسير حتمية، النظرية السائدة والمنتشرة هي أن الألم من الممكن أن يحدث بسبب ارتفاع منسوب الدم إلى الكبد أو الطحال. ويؤدي ازدياد معدل نبضات القلب أثناء ممارسة الرياضة إلى دفع كرات الدم الحمراء للتوجه إلى الكبد والذي يؤدي إلى تضخم كبد وفرط ضغط الدم البابي[4][4]. فعند ممارسة الرياضة يتم ضخ الدم تدريجياً إلى العضلات وينخفض تدفق الدم في نفس الوقت إلى أجهزة الجسم الداخلية. ويمكن أن يؤدي ذلك إلى تقلصات في الكبد والمعدة والأمعاء والشعور بالألم الجانبي. وقد لوحظ أيضاً أن ألم الجنب غالباً ما يحدث عندما تكون المعدة ممتلئة، وعند الأشخاص الذين لا يتدربون بشكل كامل. فعندما تكون المعدة ممتلئة يحتاج الجسم إلى مزيد من الدم من أجل عملية الهضم. كما أن هناك أيضاً مؤشرات بأنه في حالة المعدة الممتلئة يمكن أن يتقلص الحجاب الحاجز لأعلى ويتسبب في ألم الجنب. ويمكن لألم الجنب أن يظهر عند ممارسة الأنشطة الرياضية الشاقة ولكنه شائع بصفة خاصة أثناء الجري ولا يُعرف سبب ذلك.',
    "قطع الودي الصدري بالتنظير هذه الدراسة أيضا تثبت العديد من المرضى قد ادعوا، أن الجراحة تسبب تغيرات نفسية. لا يمكننا الحد من 'رداءة' الاستجابات العاطفية، مثل الخوف أو القلق. إذا كنت تريد التقليل من الاستجابات العاطفية، أنها سوف تؤثر على المدى الكامل للعواطف وكثافتها. بازالة معدل التغير في دقات القلب ،العواطف هي أيضا 'تغطى'. {50}  العصب الحشوي واستقلال الوظائف هي المفتاح  لفهم العمليات النفسية. بول د.ماكلين يعتقد أن التجربة العاطفية  يمكن أن تكون أدق وصف بأنها استجابة ل  المركب من المحفزات في الدماغ التي تتلقاها من  البيئة الخارجية، ونتيجة للتصورات المستمرة في العالم الخارجي، والأحاسيس الداخلية أو  ردود الفعل التي تنتقل إلى الدماغ من أعضاء الجسم  واجهزته.",
    'غسيل دماغ ولا يقل الإجهاد تأثيراً على الانسان عن الجوع، بل قد يزيده إذ أن الجسم يحتاج يومياً لعدد معين من الساعات للراحة والنوم. قد يحتمل بعض الناس قلة النوم لفترة معينة، إلا ان الاستمرار في ذلك من شأنه ان يقضي على صفاء الذهن، ويسبب للمتعرض له إضطراب عقلي وفقدان إحساس قد يقوده إلى الجنون والإنتحار. ويصبح الفرد الذي عانى الحرمان أكثر قابلية لتقبل الإيحاء وأكثر إستعداداً لتنفيذ تعليمات الذين يطلبون منه ان يسلك سلوكاً معيناً، كما يقل احتمال مقاومته لمطلب اي انسان من ذوي السلطة. ويستغل المستجوبون في السجون السياسية هذا كله مهيئين بيئة يصبح فيها النوم شبه مستحيل إذ يوقظون الفرد في ساعة غير عادية أو يجبره على الإستيقاظ كلما نام، ويكون الإيقاظ بأسلوب خشن، ثم يستجوب لفترة ويعاد ثانية لزنزانته، والهدف من هذا كله إجهاد المتهم او الأسير حتى يصل في النهاية إلى درجة من الانهيار تمكن المستجوب من الايحاء اليه بما يريد.',
    'اختبار إجهاد القلب خلال الاختبار يكون قلب المريض تحت الضغط  نتيجة للمجهود الرياضي أو تحفيز كيميائيا، هذا الأخير الذي يكون عادة عن طريق حقن ""الدوبوتامين"" في وريد المريض، الشئ الذي يحاكي عملية الإجهاد الجسماني لدى المرضى الذين لا يستطيعون القيام بجهد جسماني. يكون الهدف من هذا الضغط الممارس على القلب هو مقارنة صور مخططات صدى القلب لتقييم قدرة تقلص عضلة القلب وعمل الصمامات القلبية أثناء الجهد وكشف أي تشوه قد يطال القلب أو الصمامات.',
    "المسألة الشرقية المسألة الشرقية (بالإنجليزية: Eastern Question) (بالفرنسية: Question de l'orient) : هي مسألة وجود العثمانيين المسلمين في أوروبا وطردهم منها واستعادة القسطنطينية من العثمانيين بعد سقوطها في 1453 وتهديد مصالح الدول الأوروبية في هذه المنطقة. كما يدل المصطلح على تصفية أملاك رجل أوروبا المريض في البلقان من طرف الدول الأوروبية.",
    'أرق الأرق هو عبارة عن اضطراب في النوم أو تقطعه أو انخفاض جودته، مما يعود سلباً على صحة المريض النفسية والجسدية. ويمكن أن يعرف بإنه الشكوى من صعوبة بدء النوم، أو الاستمرار فيه، أو عدم الحصول على نوم مريح خلال الليل، أو النهوض مبكراً بغير المعتاد، وهو يؤثر على نشاط المصاب خلال النهار. وتختلف أسبابه وعلاجاته من شخص لآخر حسب حالته وظروفه.',
    'الشرقية (عمارة) في الهندسة المعمارية ، الشرقية هي تجويف نصف دائري تعلوه نصف قبة، في كثير من الأحيان يقع على واجهة المبنى (ولكن يستخدم أيضاً كفتحة في الجدار الداخلي). اعتمدت الشرقية من قبل الرومان ، واستخدمت بكثرة في الحقب التاريخية المتعاقبة (من العمارة الرومانية والبيزنطية).',
    'المسألة الشرقية قامت هذه المرحلة على تعميق الحقد والكراهية للرأي العام الأوروبي ضد الدولة العثمانية عبر حملات تحسيسية من طرف الدول والجماعات الدينية والكنيسة المسيحية بتبيان الإجرام العثماني في حق أوروبا من خلال احتلال أوروبا ونشر الإسلام في نظر المسيحيين، لكن الممارسة والتطبيق أصعب من الكلام حيث جعلت القوة العثمانية من الرغبة الأوروبية في طردها أمرا مستحيلا وبعيد المدى. كانت الرغبة الدفينة في منأى عن علم العثمانيين بها ؛ فقد كان الوجه الظاهر هو الترحاب والموافقة على نقيض الوجه الآخر',
    'مسيحية شرقية المسيحية الشرقية هي عوائل الكنائس التي تطورت خارج العالم الغربي، وهي اليوم متوزعة ضمن ثلاث عوائل وهي الكنائس الأرثوذكسية الشرقية، والكنائس الأرثوذكسية المشرقية، والكنائس الكاثوليكية الشرقية، بالإضافة لكنيستين انحدرتا من كنيسة المشرق التاريخية، وهما الكنيسة المشرقية الآشورية وكنيسة المشرق القديمة. ويقابلها من الجهة الأخرى التقليد المسيحي الغربي والممثل بالكنائس الكاثوليكية والبروتستانتية الغربية. ويشير المصطلح إلى كل ما حملته وتحمله هذه الكنائس من تراث وتقليد مسيحي على مدى العصور، وتتكون الكنائس المسيحية الشرقية من التقاليد المسيحية التي تطورت بشكل مميز على مدى عدة قرون في الشرق الأوسط وشمال وشرق أفريقيا وأوروبا الشرقية وآسيا الصغرى وساحل مالابار في جنوب الهند وأجزاء من الشرق الأقصى. ولا يصف المصطلح لا يصف شركة واحدة أو طائفة دينية واحدة، وعلى الرغم من ذلك تشاركت الكنائس الشرقية بالتقليد الديني ولكنها انقسمت على نفسها خلال القرون الأولى للمسيحية وذلك بسبب خلافات عقائدية كرستولوجية ولاهوتية بالإضافة لأسباب سياسية.',
    'تاريخ المسيحية الشرقية تنشر التقاليد المسيحية الشرقية وتمثلها بشكل شامل الكنائس المنتشرة في اليونان وروسيا والبلقان وأوروبا الشرقية وآسيا الصغرى والشرق الأوسط وشمال شرق أفريقيا وجنوبي الهند. وتشير كمصطلح إلى كل ما حملته وتحمله هذه الكنائس من تراث وتقليد مسيحي على مدى العصور. ويقابلها من الجهة الأخرى التقليد المسيحي الغربي والممثل بالكنائس الكاثوليكية والبروتستانتية الغربية. وقد تشاركت الكنائس الشرقية بالتقليد الديني ولكنها انقسمت على نفسها خلال القرون الأولى للمسيحية وذلك بسبب خلافات عقائدية  كرستولوجية ولاهوتية بالإضافة لأسباب سياسية.',
    'ية (باليونانية:Ορθοδοξία) "(تعني بالعربية الصراطية المستقيمة)"، هي مذهب مسيحي يُرجع جذوره بحسب أتباعه إلى المسيح والخلافة الرسولية والكهنوتية تؤمن الكنيسة الأرثوذكسية الشرقية بالتقليد وكتابات آباء الكنيسة والمجامع إلى جانب الكتاب المقدس، فضلاً عن تمسكها بالتراتبية الهرمية للسلطة في الكنيسة والطقوس والأسرار السبعة المقدسة.',
    'ديانات غربية بالمقابل فإت المسيحية الشرقية هي عوائل الكنائس التي تطورت خارج العالم الغربي، وهي اليوم متوزعة ضمن ثلاث عوائل وهي الكنائس الأرثوذكسية الشرقية، والكنائس المشرقية، والكنائس الكاثوليكية الشرقية، بالإضافة لكنيستين انحدرتا من كنيسة المشرق التاريخية، وهما الكنيسة المشرقية الآشورية وكنيسة المشرق القديمة. ويقابلها من الجهة الأخرى التقليد المسيحي الغربي والممثل بالكنائس الكاثوليكية والبروتستانتية الغربية. ويشير المصطلح إلى كل ما حملته وتحمله هذه الكنائس من تراث وتقليد مسيحي على مدى العصور، وتتكون الكنائس المسيحية الشرقية من التقاليد المسيحية التي تطورت بشكل مميز على مدى عدة قرون في الشرق الأوسط وشمال وشرق أفريقيا وأوروبا الشرقية وآسيا الصغرى وساحل مالابار في جنوب الهند وأجزاء من الشرق الأقصى.',
    'الزي الإسلامي في أوروبا على الرغم من أن دول البلقان وأوروبا الشرقية تضم عددً كبيرًا من المسلمين الذين يُعدون السكان الأصليين في الكثير من تلك الدول، إلا أن مسألة الزي الإسلامي عادة ما ترتبط بقضايا الهجرة وموقف الإسلام من المجتمع الغربي. في تشرين الثاني/نوفمبر 2006 أكد المفوض الأوروبي فرانكو فراتيني أنه لا يؤيد فرض حظر على البرقع، ليكون بذلك هذا هو أول بيان رسمي بشأن مسألة حظر الزي الإسلامي من المفوضية الأوروبية في الاتحاد الأوروبي. أسباب حظر هذا الزي تختلف من دولة لأخرى، لكن الحظر القانوني الذي يشمل الملابس التي تُغطي الوجه عادة ما يتم تبريره لأسباب أمنية مثل تدابير مكافحة الإرهاب.',
    'المسألة المصرية لقد فتح المسألة الشرقية في مصر محمد علي باشا، إثر تفكيره بتكوين دولة عربية تقوم على أنقاض الدولة العثمانية يحكمها هو وأسرته من بعده، وكان أول ما طرح إليه محمد علي هو سوريا لأنها تكون منطقة متكاملة طبيعية مع مصر، وقد استطاع تحقيق ذلك وساعدته على ذلك ظروف هي: قام بالهجوم على بلاد الشام بقيادة إبنه إبراهيم باشا الذي إجتاحها وواصل انتصاراته إلى أن وصلت جيوشه إلى كوتاهية وأصبحت تهدد القسطنطينية نفسها فأصيب السلطاب بفزع كبير وتدخلت الدول الأوروبية وأضطر إلى توقيع صلح كوتاهية عام 1833، تضمن ما يلي: لقد أقلقت انتصارات محمد علي دول أوروبا المسيحية كما أزعجها وحدة البلاد العربية في ظل قيادة مصرية لأن ذلك يهدد مصالحها في المنطقة ويفوت عليها فرصة اقتسام أملاك الدولة العثمانية لذا رأت ضرورة إضعافها. قامت بريطانيا بحث السلطان العثماني وتحضيره لإستعادة أملاكه وخاض السلطان العثماني حربا ثانية مع إبراهيم باشا في نصيين على الفرات في 25 يونيو 1839 فانهزمت برا فيما إنظم الأسطول العثماني إلى مصر وهكذا رأت بريطانيا أن طريق الهند أصبح مهددا بالخطر، لذا سارعت دون أن تطلع فرنسا على نواياها وعقدت مع كل من بروسيا والنمسا وروسيا مرتمرا انتهى بمعاهدة لندن في 5 يوليو 1840 فأرسلت دول هذا التكتل إنذارا إلى محمد علي جاء فيه: و عندما تباطأ محمد علي على أمل أن تصله إمدادات عسكرية من فرنسا صديقته، قامت الدول بانتزاع ولايته عكا منه، ولذلك عندا أدرك أن الأمر جدي أعلن قبوله لشروط الصلح وبهذا انتهت المسألة الشرقية في مصر وبذلك ضمنت الدول الأوروبية سلامة الدولة العثمانية وبالتالي مصالحها الاستعمارية.',
    'المسألة الشرقية اعتبرت المرحلة تاريخيا تمهيدا للمرحلة الثالثة ألا وهي التنفيذ، فكانت غنية بالامتيازات العثمانية للأوروبيين والبعثات المسيحية التبشيرية والثقافية والتجارية مما وسع مناطق النفوذ الأوروبي في الدولة العثمانية ؛ كان التناسق والتكامل بين مختلف المجالات جد دقيق ومدروس.'
]

queries = [
    'هل عدم القيام بجهد جسماني ممكن ان يسبب الأرق؟',
    'ما هي المسألة الشرقية ؟'
]



corpus_embeddings = model.encode(corpus)
query_embeddings = model.encode(queries)

# Find the closest 3 sentences of the corpus for each query sentence based on cosine similarity
closest_n = 3
for query, query_embedding in zip(queries, query_embeddings):
    distances = scipy.spatial.distance.cdist([query_embedding], corpus_embeddings, "cosine")[0]

    results = zip(range(len(distances)), distances)
    results = sorted(results, key=lambda x: x[1])

    print("\n======================\n")
    print("Query:", query)
    print("\nTop 3 most similar sentences in corpus:\n")

    for idx, distance in results[0:closest_n]:
        print(corpus[idx].strip(), "(Score: %.4f)" % (1-distance))

# Optional: How to quantize the embeddings
# binary_embeddings = quantize_embeddings(embeddings, precision="ubinary")

```

#### With Huggingface Transformers:
- T.B.A

# FAQs:

#### How can I reduce overall inference cost?
- You can host these models without heavy torch dependency using the ONNX flavours of these models via [FlashEmbed](https://github.com/PrithivirajDamodaran/flashembed) library.

#### How do I reduce vector storage cost?
[Use Binary and Scalar Quantisation](https://huggingface.co./blog/embedding-quantization)

#### How do I offer hybrid search to improve accuracy?
MIRACL paper shows simply combining BM25 is a good starting point for a Hybrid option: 
The below numbers are with mDPR model, but miniDense_arabic_v1 should give a even better hybrid performance.

| Language  | ISO | nDCG@10 BM25 | nDCG@10 mDPR | nDCG@10 Hybrid |
|-----------|-----|--------------|--------------|----------------|
| **Arabic**     | **ar**  | **0.395**        | **0.499**        | **0.673**          |

*Note: MIRACL paper shows a different (higher) value for BM25 Arabic, So we are taking that value from BGE-M3 paper, rest all are form the MIRACL paper.*

# MTEB Retrieval numbers:
MTEB is a general purpose embedding evaluation benchmark covering wide range of tasks, but miniDense models (like BGE-M3) are predominantly tuned for retireval tasks aimed at search & IR based usecases.
So it makes sense to evaluate our models in retrieval slice of the MTEB benchmark.

#### MIRACL Retrieval

Refer tables above 

#### Sadeem Question Retrieval 

<center>
<img src="./ar_metrics_6.png" width=150%/>
  <b><p>Table 3: Detailed Arabic retrieval performance on the SadeemQA eval set (measured by nDCG@10)</p></b>
</center>



#### Long Document Retrieval 

This is very ambitious eval because we have not trained for long context, the max_len was 512 for all the models below except BGE-M3 which had 8192 context and finetuned for long doc.

<center>
<img src="./ar_metrics_4.png" width=150%/>
  <b><p>Table 4: Detailed Arabic retrieval performance on the MultiLongDoc dev set (measured by nDCG@10)</p></b>
</center>


#### X-lingual Retrieval 

Except BGE-M3 all are monolingual arabic models so they have no notion of any other languages. But the below table shows how our model understands arabic in context with other languages.
This explains it's overall competitive performance when compared to models that are a LOT larger.

<center>
<img src="./ar_metrics_5.png" width=120%/>
  <b><p>Table 5: Detailed Arabic retrieval performance on the 3 X-lingual test set (measured by nDCG@10)</p></b>
</center>

<br/>

# Roadmap
We will add miniDense series of models for all popular languages as we see fit or based on community requests in phases. Some of the languages we have in our list are

- Spanish
- Tamil
- German
- English ?


# Notes on reproducing:

We welcome anyone to reproduce our results. Here are some tips and observations:

- Use CLS Pooling (not mean) and Inner Product (not cosine).
- There *may be* minor differences in the numbers when reproducing, for instance BGE-M3 reports a nDCG@10 of 59.3 for MIRACL hindi and we Observed only 58.9.

Here are our numbers for the full hindi run on BGE-M3

```python
{'NDCG@1': 0.49714, 'NDCG@3': 0.5115, 'NDCG@5': 0.53908, 'NDCG@10': 0.58936, 'NDCG@100': 0.6457, 'NDCG@1000': 0.65336}
{'MAP@1': 0.28845, 'MAP@3': 0.42424, 'MAP@5': 0.46455, 'MAP@10': 0.49955, 'MAP@100': 0.51886, 'MAP@1000': 0.51933}
{'Recall@10': 0.73032, 'Recall@50': 0.8987, 'Recall@100': 0.93974, 'Recall@200': 0.95763, 'Recall@500': 0.97813, 'Recall@1000': 0.9902}
{'P@1': 0.49714, 'P@3': 0.33048, 'P@5': 0.24629, 'P@10': 0.15543, 'P@100': 0.0202, 'P@1000': 0.00212}
{'MRR@10': 0.60893, 'MRR@100': 0.615, 'MRR@1000': 0.6151}
```

Fair warning BGE-M3 is $ expensive to evaluate, probably* that's why it's not part of any of the retrieval slice of MTEB benchmarks.


# Reference:
- [All Cohere numbers are copied form here](https://huggingface.co./datasets/Cohere/miracl-en-queries-22-12)
- [BGE M3-Embedding: Multi-Lingual, Multi-Functionality,
Multi-Granularity Text Embeddings Through Self-Knowledge Distillation](https://arxiv.org/pdf/2402.03216.pdf)
- [Making a MIRACL: Multilingual Information Retrieval
Across a Continuum of Languages](https://arxiv.org/pdf/2210.09984.pdf)



# Note on model bias:
- Like any model this model might carry inherent biases from the base models and the datasets it was pretrained and finetuned on. Please use responsibly.



# How to cite?

Damodaran, P. (2024). MiniDense: Family of Low footprint multilingual retrievers for search and RAG pipelines (Version 1.0.0) [Computer software].