mteb 2.3.9__py3-none-any.whl → 2.3.11__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. mteb/_evaluators/image/imagetext_pairclassification_evaluator.py +7 -2
  2. mteb/abstasks/_statistics_calculation.py +6 -2
  3. mteb/abstasks/classification.py +0 -2
  4. mteb/benchmarks/_create_table.py +60 -0
  5. mteb/benchmarks/benchmark.py +26 -2
  6. mteb/benchmarks/benchmarks/benchmarks.py +31 -0
  7. mteb/leaderboard/app.py +34 -2
  8. mteb/leaderboard/table.py +62 -0
  9. mteb/models/cache_wrappers/cache_backends/_hash_utils.py +2 -2
  10. mteb/models/model_implementations/colpali_models.py +7 -2
  11. mteb/models/model_implementations/colqwen_models.py +1 -1
  12. mteb/models/model_implementations/gme_v_models.py +9 -5
  13. mteb/models/model_implementations/granite_vision_embedding_models.py +6 -2
  14. mteb/models/model_implementations/jasper_models.py +2 -2
  15. mteb/models/model_implementations/jina_models.py +1 -1
  16. mteb/models/model_implementations/nomic_models_vision.py +6 -2
  17. mteb/models/model_implementations/nvidia_llama_nemoretriever_colemb.py +6 -2
  18. mteb/models/model_implementations/pawan_models.py +38 -0
  19. mteb/models/model_implementations/pylate_models.py +1 -4
  20. mteb/models/model_implementations/random_baseline.py +6 -2
  21. mteb/models/model_implementations/seed_1_6_embedding_models.py +7 -2
  22. mteb/models/model_implementations/voyage_v.py +6 -2
  23. mteb/results/benchmark_results.py +2 -1
  24. mteb/results/model_result.py +9 -3
  25. mteb/types/_encoder_io.py +7 -2
  26. {mteb-2.3.9.dist-info → mteb-2.3.11.dist-info}/METADATA +2 -1
  27. {mteb-2.3.9.dist-info → mteb-2.3.11.dist-info}/RECORD +31 -30
  28. {mteb-2.3.9.dist-info → mteb-2.3.11.dist-info}/WHEEL +0 -0
  29. {mteb-2.3.9.dist-info → mteb-2.3.11.dist-info}/entry_points.txt +0 -0
  30. {mteb-2.3.9.dist-info → mteb-2.3.11.dist-info}/licenses/LICENSE +0 -0
  31. {mteb-2.3.9.dist-info → mteb-2.3.11.dist-info}/top_level.txt +0 -0
@@ -1,10 +1,11 @@
1
+ from __future__ import annotations
2
+
1
3
  import logging
2
- from typing import Any
4
+ from typing import TYPE_CHECKING, Any
3
5
 
4
6
  import torch
5
7
  import torch.nn.functional as F
6
8
  from datasets import Dataset
7
- from PIL.Image import Image
8
9
  from torch.utils.data import DataLoader
9
10
 
10
11
  from mteb._create_dataloaders import (
@@ -15,6 +16,10 @@ from mteb._requires_package import requires_image_dependencies
15
16
  from mteb.abstasks.task_metadata import TaskMetadata
16
17
  from mteb.models.models_protocols import EncoderProtocol
17
18
 
19
+ if TYPE_CHECKING:
20
+ from PIL.Image import Image
21
+
22
+
18
23
  logger = logging.getLogger(__name__)
19
24
 
20
25
 
@@ -1,7 +1,8 @@
1
+ from __future__ import annotations
2
+
1
3
  import hashlib
2
4
  from collections import Counter
3
-
4
- from PIL import Image
5
+ from typing import TYPE_CHECKING
5
6
 
6
7
  from mteb.types import TopRankedDocumentsType
7
8
  from mteb.types.statistics import (
@@ -13,6 +14,9 @@ from mteb.types.statistics import (
13
14
  TopRankedStatistics,
14
15
  )
15
16
 
17
+ if TYPE_CHECKING:
18
+ from PIL import Image
19
+
16
20
 
17
21
  def calculate_text_statistics(texts: list[str]) -> TextStatistics:
18
22
  """Calculate descriptive statistics for a list of texts.
@@ -5,7 +5,6 @@ from typing import Any, TypedDict
5
5
 
6
6
  import numpy as np
7
7
  from datasets import Dataset, DatasetDict
8
- from PIL import ImageFile
9
8
  from sklearn.linear_model import LogisticRegression
10
9
  from sklearn.metrics import (
11
10
  accuracy_score,
@@ -32,7 +31,6 @@ from ._statistics_calculation import (
32
31
  )
33
32
  from .abstask import AbsTask
34
33
 
35
- ImageFile.LOAD_TRUNCATED_IMAGES = True
36
34
  logger = logging.getLogger(__name__)
37
35
 
38
36
 
@@ -1,5 +1,6 @@
1
1
  import re
2
2
  from collections import defaultdict
3
+ from typing import Literal
3
4
 
4
5
  import numpy as np
5
6
  import pandas as pd
@@ -241,6 +242,65 @@ def _create_per_task_table_from_benchmark_results(
241
242
  return per_task
242
243
 
243
244
 
245
+ def _create_per_language_table_from_benchmark_results(
246
+ benchmark_results: BenchmarkResults,
247
+ language_view: list[str] | Literal["all"],
248
+ ) -> pd.DataFrame:
249
+ """Create per-language table from BenchmarkResults.
250
+
251
+ Returns a DataFrame with one row per model and one column per language.
252
+
253
+ Args:
254
+ benchmark_results: BenchmarkResults object containing model results
255
+ language_view: List of languages to include in the per-language table, or "all" for all languages present in the results
256
+ Returns:
257
+ DataFrame with per-language scores, ready for styling in the leaderboard
258
+ """
259
+ if language_view != "all" and not isinstance(language_view, list):
260
+ raise ValueError("language_view must be a list of languages or 'all'")
261
+
262
+ data = benchmark_results.to_dataframe(aggregation_level="language", format="long")
263
+
264
+ if data.empty:
265
+ no_results_frame = pd.DataFrame(
266
+ {"No results": ["You can try relaxing your criteria"]}
267
+ )
268
+ return no_results_frame
269
+
270
+ if language_view != "all":
271
+ data = data[data["language"].isin(language_view)]
272
+
273
+ per_language = data.pivot_table(
274
+ index="model_name", columns="language", values="score", aggfunc="mean"
275
+ )
276
+
277
+ to_remove = per_language.isna().all(axis="columns")
278
+ if to_remove.all():
279
+ no_results_frame = pd.DataFrame(
280
+ {"No results": ["You can try relaxing your criteria"]}
281
+ )
282
+ return no_results_frame
283
+
284
+ models_to_remove = list(per_language[to_remove].index)
285
+ per_language = per_language.drop(models_to_remove, axis=0)
286
+
287
+ per_language["borda_rank"] = _get_borda_rank(per_language)
288
+ per_language = per_language.sort_values("borda_rank", ascending=True)
289
+ per_language = per_language.drop(columns=["borda_rank"])
290
+ per_language = per_language.reset_index()
291
+
292
+ per_language["model_name"] = per_language["model_name"].map(
293
+ lambda name: name.split("/")[-1]
294
+ )
295
+ per_language = per_language.rename(
296
+ columns={
297
+ "model_name": "Model",
298
+ }
299
+ )
300
+
301
+ return per_language
302
+
303
+
244
304
  def _create_summary_table_mean_public_private(
245
305
  benchmark_results: BenchmarkResults,
246
306
  ) -> pd.DataFrame:
@@ -1,10 +1,11 @@
1
1
  from collections.abc import Iterable, Sequence
2
- from dataclasses import dataclass
3
- from typing import TYPE_CHECKING
2
+ from dataclasses import dataclass, field
3
+ from typing import TYPE_CHECKING, Literal
4
4
 
5
5
  import pandas as pd
6
6
 
7
7
  from mteb.benchmarks._create_table import (
8
+ _create_per_language_table_from_benchmark_results,
8
9
  _create_per_task_table_from_benchmark_results,
9
10
  _create_summary_table_from_benchmark_results,
10
11
  _create_summary_table_mean_public_private,
@@ -50,6 +51,7 @@ class Benchmark:
50
51
  display_on_leaderboard: bool = True
51
52
  icon: str | None = None
52
53
  display_name: str | None = None
54
+ language_view: list[str] | Literal["all"] = field(default_factory=list)
53
55
 
54
56
  def __iter__(self) -> Iterable["AbsTask"]:
55
57
  return iter(self.tasks)
@@ -80,6 +82,28 @@ class Benchmark:
80
82
  """
81
83
  return _create_per_task_table_from_benchmark_results(benchmark_results)
82
84
 
85
+ def _create_per_language_table(
86
+ self, benchmark_results: BenchmarkResults
87
+ ) -> pd.DataFrame:
88
+ """Create per-language table. Called by the leaderboard app.
89
+
90
+ Returns:
91
+ A pandas DataFrame representing the per-language results.
92
+ """
93
+ if self.language_view == "all" or len(self.language_view) > 0:
94
+ return _create_per_language_table_from_benchmark_results(
95
+ benchmark_results, self.language_view
96
+ )
97
+ else:
98
+ no_results_frame = pd.DataFrame(
99
+ {
100
+ "No results": [
101
+ "The per-language table is not available for this benchmark."
102
+ ]
103
+ }
104
+ )
105
+ return no_results_frame
106
+
83
107
 
84
108
  class RtebBenchmark(Benchmark):
85
109
  """Wrapper for RTEB benchmark."""
@@ -471,6 +471,7 @@ SEB = Benchmark(
471
471
  name="MTEB(Scandinavian, v1)",
472
472
  display_name="Scandinavian",
473
473
  icon="https://github.com/lipis/flag-icons/raw/260c91531be024944c6514130c5defb2ebb02b7d/flags/4x3/dk.svg",
474
+ language_view=["dan-Latn", "swe-Latn", "nno-Latn", "nob-Latn"],
474
475
  tasks=get_tasks(
475
476
  tasks=[
476
477
  # Bitext
@@ -953,6 +954,28 @@ MTEB_multilingual_v1 = Benchmark(
953
954
  MTEB_multilingual_v2 = Benchmark(
954
955
  name="MTEB(Multilingual, v2)",
955
956
  display_name="Multilingual",
957
+ language_view=[
958
+ "eng-Latn", # English
959
+ "zho-Hans", # Chinese (Simplified)
960
+ "hin-Deva", # Hindi
961
+ "spa-Latn", # Spanish
962
+ "fra-Latn", # French
963
+ "ara-Arab", # Arabic
964
+ "ben-Beng", # Bengali
965
+ "rus-Cyrl", # Russian
966
+ "por-Latn", # Portuguese
967
+ "urd-Arab", # Urdu
968
+ "ind-Latn", # Indonesian
969
+ "deu-Latn", # German
970
+ "jpn-Jpan", # Japanese
971
+ "swa-Latn", # Swahili
972
+ "mar-Deva", # Marathi
973
+ "tel-Telu", # Telugu
974
+ "tur-Latn", # Turkish
975
+ "tam-Taml", # Tamil
976
+ "vie-Latn", # Vietnamese
977
+ "kor-Hang", # Korean
978
+ ],
956
979
  icon="https://github.com/DennisSuitters/LibreICONS/raw/2d2172d15e3c6ca03c018629d60050e4b99e5c55/svg-color/libre-gui-globe.svg",
957
980
  tasks=mteb_multilingual_tasks,
958
981
  description="A large-scale multilingual expansion of MTEB, driven mainly by highly-curated community contributions covering 250+ languages. ",
@@ -2283,6 +2306,14 @@ VIDORE_V2 = Benchmark(
2283
2306
  VIDORE_V3 = VidoreBenchmark(
2284
2307
  name="ViDoRe(v3)",
2285
2308
  display_name="ViDoRe V3",
2309
+ language_view=[
2310
+ "deu-Latn",
2311
+ "eng-Latn",
2312
+ "fra-Latn",
2313
+ "ita-Latn",
2314
+ "por-Latn",
2315
+ "spa-Latn",
2316
+ ],
2286
2317
  icon="https://cdn-uploads.huggingface.co/production/uploads/66e16a677c2eb2da5109fb5c/x99xqw__fl2UaPbiIdC_f.png",
2287
2318
  tasks=get_tasks(
2288
2319
  tasks=[
mteb/leaderboard/app.py CHANGED
@@ -24,6 +24,7 @@ from mteb.leaderboard.benchmark_selector import (
24
24
  )
25
25
  from mteb.leaderboard.figures import _performance_size_plot, _radar_chart
26
26
  from mteb.leaderboard.table import (
27
+ apply_per_language_styling_from_benchmark,
27
28
  apply_per_task_styling_from_benchmark,
28
29
  apply_summary_styling_from_benchmark,
29
30
  )
@@ -361,6 +362,13 @@ def get_leaderboard_app(cache: ResultCache = ResultCache()) -> gr.Blocks:
361
362
  per_task_table = apply_per_task_styling_from_benchmark(
362
363
  default_benchmark, filtered_benchmark_results
363
364
  )
365
+ per_language_table = apply_per_language_styling_from_benchmark(
366
+ default_benchmark,
367
+ filtered_benchmark_results,
368
+ )
369
+
370
+ # Check if this benchmark displays per-language results
371
+ display_language_table = len(default_benchmark.language_view) > 0
364
372
 
365
373
  lang_select = gr.CheckboxGroup(
366
374
  sorted(default_results.languages),
@@ -554,6 +562,16 @@ def get_leaderboard_app(cache: ResultCache = ResultCache()) -> gr.Blocks:
554
562
  download_per_task.click(
555
563
  _download_table, inputs=[per_task_table], outputs=[download_per_task]
556
564
  )
565
+ with gr.Tab(
566
+ "Performance per language", visible=display_language_table
567
+ ) as language_tab:
568
+ per_language_table.render()
569
+ download_per_language = gr.DownloadButton("Download Table")
570
+ download_per_language.click(
571
+ _download_table,
572
+ inputs=[per_language_table],
573
+ outputs=[download_per_language],
574
+ )
557
575
  with gr.Tab("Task information"):
558
576
  task_info_table = gr.DataFrame(_update_task_info, inputs=[task_select]) # noqa: F841
559
577
 
@@ -879,9 +897,18 @@ def get_leaderboard_app(cache: ResultCache = ResultCache()) -> gr.Blocks:
879
897
  per_task = apply_per_task_styling_from_benchmark(
880
898
  benchmark, filtered_benchmark_results
881
899
  )
900
+ per_language = apply_per_language_styling_from_benchmark(
901
+ benchmark,
902
+ filtered_benchmark_results,
903
+ )
882
904
  elapsed = time.time() - start_time
883
905
  logger.debug(f"update_tables callback: {elapsed}s")
884
- return summary, per_task
906
+ return (
907
+ summary,
908
+ per_task,
909
+ per_language,
910
+ gr.update(visible=len(benchmark.language_view) > 0),
911
+ )
885
912
 
886
913
  # Only update tables when models change, not when scores/tasks change directly
887
914
  # This avoids redundant updates since scores/tasks changes trigger update_models
@@ -890,7 +917,12 @@ def get_leaderboard_app(cache: ResultCache = ResultCache()) -> gr.Blocks:
890
917
  item.change(
891
918
  update_tables,
892
919
  inputs=[scores, task_select, models, benchmark_select],
893
- outputs=[summary_table, per_task_table],
920
+ outputs=[
921
+ summary_table,
922
+ per_task_table,
923
+ per_language_table,
924
+ language_tab,
925
+ ],
894
926
  )
895
927
 
896
928
  gr.Markdown(ACKNOWLEDGEMENT, elem_id="ack_markdown")
mteb/leaderboard/table.py CHANGED
@@ -120,6 +120,31 @@ def apply_per_task_styling_from_benchmark(
120
120
  return _apply_per_task_table_styling(per_task_df)
121
121
 
122
122
 
123
+ def apply_per_language_styling_from_benchmark(
124
+ benchmark_instance: Benchmark, benchmark_results: BenchmarkResults
125
+ ) -> gr.DataFrame:
126
+ """Apply styling to per-language table created by the benchmark instance's _create_per_language_table method.
127
+
128
+ This supports polymorphism - different benchmark classes can have different table generation logic.
129
+
130
+ Args:
131
+ benchmark_instance: The benchmark instance
132
+ benchmark_results: BenchmarkResults object containing model results (may be pre-filtered)
133
+
134
+ Returns:
135
+ Styled gr.DataFrame ready for display in the leaderboard
136
+ """
137
+ # Use the instance method to support polymorphism
138
+ per_language_df = benchmark_instance._create_per_language_table(benchmark_results)
139
+
140
+ # If it's a no-results DataFrame, return it as-is
141
+ if "No results" in per_language_df.columns:
142
+ return gr.DataFrame(per_language_df)
143
+
144
+ # Apply the styling
145
+ return _apply_per_language_table_styling(per_language_df)
146
+
147
+
123
148
  def _style_number_of_parameters(num_params: float) -> str:
124
149
  """Anything bigger than 1B is shown in billions with 1 decimal (e.g. 1.712 > 1.7) while anything smaller as 0.xxx B (e.g. 0.345 remains 0.345)"""
125
150
  if num_params >= 1:
@@ -237,10 +262,47 @@ def _apply_per_task_table_styling(per_task: pd.DataFrame) -> gr.DataFrame:
237
262
  "{:.2f}", subset=task_score_columns, na_rep=""
238
263
  ).highlight_max(subset=task_score_columns, props="font-weight: bold")
239
264
 
265
+ # setting task name column width to 250px
266
+ column_widths = _get_column_widths(per_task_style.data)
267
+ if len(column_widths) > 0:
268
+ column_widths[0] = "250px"
269
+
240
270
  return gr.DataFrame(
241
271
  per_task_style,
242
272
  interactive=False,
243
273
  pinned_columns=1,
274
+ column_widths=column_widths,
275
+ buttons=["copy", "fullscreen"],
276
+ show_search="filter",
277
+ )
278
+
279
+
280
+ def _apply_per_language_table_styling(per_language: pd.DataFrame) -> gr.DataFrame:
281
+ """Apply styling to a raw per-task DataFrame
282
+
283
+ Returns:
284
+ Styled gr.DataFrame ready for display in the leaderboard
285
+ """
286
+ language_score_columns = per_language.select_dtypes("number").columns
287
+ per_language[language_score_columns] *= 100
288
+
289
+ if len(per_language.columns) > 100: # Avoid gradio error on very wide tables
290
+ per_language_style = per_language.round(2)
291
+ else:
292
+ per_language_style = per_language.style.format(
293
+ "{:.2f}", subset=language_score_columns, na_rep=""
294
+ ).highlight_max(subset=language_score_columns, props="font-weight: bold")
295
+
296
+ # setting task name column width to 250px
297
+ column_widths = _get_column_widths(per_language_style.data)
298
+ if len(column_widths) > 0:
299
+ column_widths[0] = "250px"
300
+
301
+ return gr.DataFrame(
302
+ per_language_style,
303
+ interactive=False,
304
+ pinned_columns=1,
305
+ column_widths=column_widths,
244
306
  buttons=["copy", "fullscreen"],
245
307
  show_search="filter",
246
308
  )
@@ -1,7 +1,5 @@
1
1
  import hashlib
2
2
 
3
- from PIL import Image
4
-
5
3
  from mteb.types import BatchedInput
6
4
 
7
5
 
@@ -11,6 +9,8 @@ def _hash_item(item: BatchedInput) -> str:
11
9
  item_hash = hashlib.sha256(item["text"].encode()).hexdigest()
12
10
 
13
11
  if "image" in item:
12
+ from PIL import Image
13
+
14
14
  image: Image.Image = item["image"]
15
15
  item_hash += hashlib.sha256(image.tobytes()).hexdigest()
16
16
 
@@ -1,8 +1,9 @@
1
+ from __future__ import annotations
2
+
1
3
  import logging
2
- from typing import Any
4
+ from typing import TYPE_CHECKING, Any
3
5
 
4
6
  import torch
5
- from PIL import Image
6
7
  from torch.utils.data import DataLoader
7
8
  from tqdm.auto import tqdm
8
9
 
@@ -15,6 +16,9 @@ from mteb.models.abs_encoder import AbsEncoder
15
16
  from mteb.models.model_meta import ModelMeta, ScoringFunction
16
17
  from mteb.types import Array, BatchedInput, PromptType
17
18
 
19
+ if TYPE_CHECKING:
20
+ from PIL import Image
21
+
18
22
  logger = logging.getLogger(__name__)
19
23
 
20
24
 
@@ -89,6 +93,7 @@ class ColPaliEngineWrapper(AbsEncoder):
89
93
  **kwargs,
90
94
  ):
91
95
  import torchvision.transforms.functional as F
96
+ from PIL import Image
92
97
 
93
98
  all_embeds = []
94
99
 
@@ -2,7 +2,6 @@ import logging
2
2
  from typing import Any
3
3
 
4
4
  import torch
5
- from PIL import Image
6
5
  from torch.utils.data import DataLoader
7
6
  from tqdm.auto import tqdm
8
7
 
@@ -154,6 +153,7 @@ class ColQwen3Wrapper(AbsEncoder):
154
153
  **kwargs: Any,
155
154
  ):
156
155
  import torchvision.transforms.functional as F
156
+ from PIL import Image
157
157
 
158
158
  contains_image = "image" in image_texts_pairs.dataset.features
159
159
  contains_text = "text" in image_texts_pairs.dataset.features
@@ -1,9 +1,10 @@
1
+ from __future__ import annotations
2
+
1
3
  import logging
2
4
  import math
3
- from typing import Any
5
+ from typing import TYPE_CHECKING, Any
4
6
 
5
7
  import torch
6
- from PIL import Image
7
8
  from torch.utils.data import DataLoader
8
9
  from tqdm.autonotebook import tqdm
9
10
 
@@ -12,6 +13,9 @@ from mteb.models.abs_encoder import AbsEncoder
12
13
  from mteb.models.model_meta import ModelMeta, ScoringFunction
13
14
  from mteb.types import Array, BatchedInput, PromptType
14
15
 
16
+ if TYPE_CHECKING:
17
+ from PIL import Image
18
+
15
19
  logger = logging.getLogger(__name__)
16
20
 
17
21
  GME_CITATION = """@misc{zhang2024gme,
@@ -267,9 +271,9 @@ def smart_resize(
267
271
  return h_bar, w_bar
268
272
 
269
273
 
270
- def fetch_image(
271
- image: str | Image.Image, size_factor: int = IMAGE_FACTOR
272
- ) -> Image.Image:
274
+ def fetch_image(image: Image.Image, size_factor: int = IMAGE_FACTOR) -> Image.Image:
275
+ from PIL import Image
276
+
273
277
  image_obj = None
274
278
  if isinstance(image, Image.Image):
275
279
  image_obj = image
@@ -1,8 +1,9 @@
1
+ from __future__ import annotations
2
+
1
3
  import logging
2
- from typing import Any
4
+ from typing import TYPE_CHECKING, Any
3
5
 
4
6
  import torch
5
- from PIL import Image
6
7
  from torch.utils.data import DataLoader
7
8
  from tqdm.auto import tqdm
8
9
 
@@ -15,6 +16,9 @@ from mteb.types import Array, BatchedInput, PromptType
15
16
 
16
17
  logger = logging.getLogger(__name__)
17
18
 
19
+ if TYPE_CHECKING:
20
+ from PIL import Image
21
+
18
22
 
19
23
  class GraniteVisionEmbeddingWrapper:
20
24
  def __init__(
@@ -355,13 +355,13 @@ Jasper_Token_Compression_600M = ModelMeta(
355
355
  | qzhou_training_data,
356
356
  citation="""
357
357
  @misc{zhang2025jaspertokencompression600mtechnicalreport,
358
- title={Jasper-Token-Compression-600M Technical Report},
358
+ title={Jasper-Token-Compression-600M Technical Report},
359
359
  author={Dun Zhang and Ziyang Zeng and Yudong Zhou and Shuyang Lu},
360
360
  year={2025},
361
361
  eprint={2511.14405},
362
362
  archivePrefix={arXiv},
363
363
  primaryClass={cs.IR},
364
- url={https://arxiv.org/abs/2511.14405},
364
+ url={https://arxiv.org/abs/2511.14405},
365
365
  }
366
366
  """,
367
367
  )
@@ -740,7 +740,7 @@ jina_reranker_v3 = ModelMeta(
740
740
  training_datasets=JINARerankerV3_TRAINING_DATA,
741
741
  adapted_from="Qwen/Qwen3-0.6B",
742
742
  citation="""@misc{wang2025jinarerankerv3lateinteractionlistwise,
743
- title={jina-reranker-v3: Last but Not Late Interaction for Listwise Document Reranking},
743
+ title={jina-reranker-v3: Last but Not Late Interaction for Listwise Document Reranking},
744
744
  author={Feng Wang and Yuqing Li and Han Xiao},
745
745
  year={2025},
746
746
  eprint={2509.25085},
@@ -1,8 +1,9 @@
1
- from typing import Any
1
+ from __future__ import annotations
2
+
3
+ from typing import TYPE_CHECKING, Any
2
4
 
3
5
  import torch
4
6
  import torch.nn.functional as F
5
- from PIL import Image
6
7
  from torch.utils.data import DataLoader
7
8
  from tqdm.auto import tqdm
8
9
 
@@ -12,6 +13,9 @@ from mteb.models.abs_encoder import AbsEncoder
12
13
  from mteb.models.model_meta import ModelMeta, ScoringFunction
13
14
  from mteb.types import Array, BatchedInput, PromptType
14
15
 
16
+ if TYPE_CHECKING:
17
+ from PIL import Image
18
+
15
19
  NOMIC_EMBED_VISION_CITATION = """@article{nussbaum2024nomicembedvision,
16
20
  title={Nomic Embed Vision: Expanding the Latent Space},
17
21
  author={Nussbaum, Zach and Duderstadt, Brandon and Mulyar, Andriy},
@@ -1,7 +1,6 @@
1
- from typing import Any
1
+ from typing import TYPE_CHECKING, Any
2
2
 
3
3
  import torch
4
- from PIL import Image
5
4
  from torch.utils.data import DataLoader
6
5
 
7
6
  from mteb.abstasks.task_metadata import TaskMetadata
@@ -9,6 +8,10 @@ from mteb.models.abs_encoder import AbsEncoder
9
8
  from mteb.models.model_meta import ModelMeta
10
9
  from mteb.types import Array, BatchedInput, PromptType
11
10
 
11
+ if TYPE_CHECKING:
12
+ pass
13
+
14
+
12
15
  LLAMA_NEMORETRIEVER_CITATION = """@misc{xu2025llamanemoretrievercolembedtopperforming,
13
16
  title={Llama Nemoretriever Colembed: Top-Performing Text-Image Retrieval Model},
14
17
  author={Mengyao Xu and Gabriel Moreira and Ronay Ak and Radek Osmulski and Yauhen Babakhin and Zhiding Yu and Benedikt Schifferer and Even Oldridge},
@@ -53,6 +56,7 @@ class LlamaNemoretrieverColembed(AbsEncoder):
53
56
  **kwargs,
54
57
  ):
55
58
  import torchvision.transforms.functional as F
59
+ from PIL import Image
56
60
 
57
61
  all_images = []
58
62
  if isinstance(images, DataLoader):
@@ -0,0 +1,38 @@
1
+ from mteb.models.model_meta import (
2
+ ModelMeta,
3
+ ScoringFunction,
4
+ )
5
+ from mteb.models.sentence_transformer_wrapper import sentence_transformers_loader
6
+
7
+ PAWAN_EMBD_CITATION = """@misc{medhi2025pawanembd,
8
+ title={PawanEmbd-68M: Distilled Embedding Model},
9
+ author={Medhi, D.},
10
+ year={2025},
11
+ url={https://huggingface.co/dmedhi/PawanEmbd-68M}
12
+ }"""
13
+
14
+ pawan_embd_68m = ModelMeta(
15
+ loader=sentence_transformers_loader,
16
+ name="dmedhi/PawanEmbd-68M",
17
+ languages=["eng-Latn"],
18
+ open_weights=True,
19
+ revision="32f295145802bdbd65699ad65fd27d2a5b69a909",
20
+ release_date="2025-12-08",
21
+ n_parameters=68_000_000,
22
+ memory_usage_mb=260,
23
+ embed_dim=768,
24
+ license="apache-2.0",
25
+ max_tokens=512,
26
+ reference="https://huggingface.co/dmedhi/PawanEmbd-68M",
27
+ similarity_fn_name=ScoringFunction.COSINE,
28
+ framework=["Sentence Transformers", "PyTorch"],
29
+ adapted_from="ibm-granite/granite-embedding-278m-multilingual",
30
+ superseded_by=None,
31
+ public_training_code=None,
32
+ public_training_data=None,
33
+ use_instructions=False,
34
+ training_datasets={
35
+ "AllNLI",
36
+ },
37
+ citation=PAWAN_EMBD_CITATION,
38
+ )
@@ -328,13 +328,10 @@ class MultiVectorModel(AbsEncoder, PylateSearchEncoder):
328
328
  inputs,
329
329
  prompt_name=prompt_name,
330
330
  is_query=prompt_type == PromptType.query,
331
- convert_to_tensor=True,
332
331
  **kwargs,
333
332
  )
334
333
 
335
- # encode returns a list of tensors shaped (x, token_dim), pad to uniform length
336
- pred = torch.nn.utils.rnn.pad_sequence(pred, batch_first=True, padding_value=0)
337
- return pred.cpu().numpy()
334
+ return pred
338
335
 
339
336
 
340
337
  colbert_v2 = ModelMeta(
@@ -1,9 +1,10 @@
1
+ from __future__ import annotations
2
+
1
3
  import hashlib
2
- from typing import Any, Literal
4
+ from typing import TYPE_CHECKING, Any, Literal
3
5
 
4
6
  import numpy as np
5
7
  import torch
6
- from PIL import Image
7
8
  from torch.utils.data import DataLoader
8
9
 
9
10
  from mteb.abstasks.task_metadata import TaskMetadata
@@ -14,6 +15,9 @@ from mteb.similarity_functions import (
14
15
  )
15
16
  from mteb.types._encoder_io import Array, BatchedInput, PromptType
16
17
 
18
+ if TYPE_CHECKING:
19
+ from PIL import Image
20
+
17
21
 
18
22
  def _string_to_vector(text: str | None, size: int) -> np.ndarray:
19
23
  """Generate a deterministic random vector based on a string.
@@ -1,14 +1,15 @@
1
+ from __future__ import annotations
2
+
1
3
  import base64
2
4
  import logging
3
5
  import os
4
6
  import time
5
7
  from concurrent.futures import ThreadPoolExecutor, as_completed
6
8
  from io import BytesIO
7
- from typing import Any
9
+ from typing import TYPE_CHECKING, Any
8
10
 
9
11
  import requests
10
12
  import torch
11
- from PIL import Image
12
13
  from torch.utils.data import DataLoader
13
14
 
14
15
  from mteb._requires_package import requires_package
@@ -19,6 +20,10 @@ from mteb.models.model_implementations.nvidia_models import nvidia_training_data
19
20
  from mteb.models.model_meta import ModelMeta
20
21
  from mteb.types import Array, BatchedInput, PromptType
21
22
 
23
+ if TYPE_CHECKING:
24
+ from PIL import Image
25
+
26
+
22
27
  logger = logging.getLogger(__name__)
23
28
 
24
29
 
@@ -1,8 +1,9 @@
1
+ from __future__ import annotations
2
+
1
3
  import logging
2
- from typing import Any, Literal
4
+ from typing import TYPE_CHECKING, Any, Literal
3
5
 
4
6
  import torch
5
- from PIL import Image
6
7
  from torch.utils.data import DataLoader
7
8
  from tqdm.auto import tqdm
8
9
 
@@ -12,6 +13,9 @@ from mteb.models.abs_encoder import AbsEncoder
12
13
  from mteb.models.model_meta import ModelMeta, ScoringFunction
13
14
  from mteb.types import Array, BatchedInput, PromptType
14
15
 
16
+ if TYPE_CHECKING:
17
+ from PIL import Image
18
+
15
19
 
16
20
  def _downsample_image(
17
21
  image: Image.Image, max_pixels: int = 16000000, target_longest_side: int = 4000
@@ -296,7 +296,7 @@ class BenchmarkResults(BaseModel):
296
296
 
297
297
  def to_dataframe(
298
298
  self,
299
- aggregation_level: Literal["subset", "split", "task"] = "task",
299
+ aggregation_level: Literal["subset", "split", "task", "language"] = "task",
300
300
  aggregation_fn: Callable[[list[Score]], Any] | None = None,
301
301
  include_model_revision: bool = False,
302
302
  format: Literal["wide", "long"] = "wide",
@@ -321,6 +321,7 @@ class BenchmarkResults(BaseModel):
321
321
  - "subset"/None: No aggregation will be done. The DataFrame will have one row per model, task, split and subset.
322
322
  - "split": Aggregates the scores by split. The DataFrame will have one row per model, task and split.
323
323
  - "task": Aggregates the scores by task. The DataFrame will have one row per model and task.
324
+ - "language": Aggregates the scores by language. The DataFrame will have one row per model and language.
324
325
  aggregation_fn: The function to use for aggregation. If None, the mean will be used.
325
326
  include_model_revision: If True, the model revision will be included in the DataFrame. If False, it will be excluded.
326
327
  If there are multiple revisions for the same model, they will be joined using the `join_revisions` method.
@@ -30,7 +30,7 @@ logger = logging.getLogger(__name__)
30
30
  def _aggregate_and_pivot(
31
31
  df: pd.DataFrame,
32
32
  columns: list[str],
33
- aggregation_level: Literal["subset", "split", "task"],
33
+ aggregation_level: Literal["subset", "split", "task", "language"],
34
34
  format: Literal["wide", "long"],
35
35
  aggregation_fn: Callable[[list[Score]], Any] | None,
36
36
  ) -> pd.DataFrame:
@@ -43,6 +43,12 @@ def _aggregate_and_pivot(
43
43
  elif aggregation_level == "task":
44
44
  index_columns = ["task_name"]
45
45
 
46
+ elif aggregation_level == "language":
47
+ index_columns = ["language"]
48
+ df = df.explode("language").reset_index(
49
+ drop=True
50
+ ) # each language in its own row before aggregation
51
+
46
52
  # perform aggregation
47
53
  if aggregation_fn is None:
48
54
  aggregation_fn = np.mean
@@ -227,7 +233,7 @@ class ModelResult(BaseModel):
227
233
  )
228
234
  return entries
229
235
 
230
- def _get_score_for_table(self) -> list[dict[str, str | float]]:
236
+ def _get_score_for_table(self) -> list[dict[str, str | float | list[str]]]:
231
237
  scores_data = []
232
238
  model_name = self.model_name
233
239
  for task_result in self.task_results:
@@ -239,10 +245,10 @@ class ModelResult(BaseModel):
239
245
  "model_revision": self.model_revision,
240
246
  "task_name": task_name,
241
247
  "split": split,
248
+ "language": score_item.get("languages", ["Unknown"]),
242
249
  "subset": score_item.get("hf_subset", "default"),
243
250
  "score": score_item.get("main_score", None),
244
251
  }
245
-
246
252
  scores_data.append(row)
247
253
 
248
254
  return scores_data
mteb/types/_encoder_io.py CHANGED
@@ -1,13 +1,18 @@
1
+ from __future__ import annotations
2
+
1
3
  from collections.abc import Mapping
2
4
  from enum import Enum
3
- from typing import TypedDict
5
+ from typing import TYPE_CHECKING, TypedDict
4
6
 
5
7
  import numpy as np
6
8
  import torch
7
9
  from datasets import Dataset
8
- from PIL import Image
9
10
  from typing_extensions import NotRequired
10
11
 
12
+ if TYPE_CHECKING:
13
+ from PIL import Image
14
+
15
+
11
16
  # --- Output types ---
12
17
  Array = np.ndarray | torch.Tensor
13
18
  """General array type, can be a numpy array or a torch tensor."""
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mteb
3
- Version: 2.3.9
3
+ Version: 2.3.11
4
4
  Summary: Massive Text Embedding Benchmark
5
5
  Author-email: MTEB Contributors <niklas@huggingface.co>, Kenneth Enevoldsen <kenneth.enevoldsen@cas.au.dk>, Nouamane Tazi <nouamane@huggingface.co>, Nils Reimers <info@nils-reimers.de>
6
6
  Maintainer-email: Kenneth Enevoldsen <kenneth.enevoldsen@cas.au.dk>, Roman Solomatin <risolomatin@gmail.com>, Isaac Chung <chungisaac1217@gmail.com>
@@ -34,6 +34,7 @@ Requires-Dist: pydantic>=2.0.0
34
34
  Requires-Dist: polars>=0.20.22
35
35
  Provides-Extra: image
36
36
  Requires-Dist: torchvision>0.2.1; extra == "image"
37
+ Requires-Dist: transformers[torch-vision,vision]; extra == "image"
37
38
  Provides-Extra: codecarbon
38
39
  Requires-Dist: codecarbon<3.0.0,>=2.0.0; extra == "codecarbon"
39
40
  Provides-Extra: leaderboard
@@ -24,17 +24,17 @@ mteb/_evaluators/retrieval_metrics.py,sha256=we0damQCJrdaRUD6JlU2MM7Ls9xERP_OBS5
24
24
  mteb/_evaluators/sklearn_evaluator.py,sha256=f9SgBbvgCrkltdTebQTixT7KmIagGkjQ_cNnKuHTb3w,3772
25
25
  mteb/_evaluators/zeroshot_classification_evaluator.py,sha256=dQq6g9my-0xn_0fLJXSnhN9Qu6PuJtWCKGIDrlkeyJk,2282
26
26
  mteb/_evaluators/image/__init__.py,sha256=CsQd7OMkeV2Phun7paPWjayZ5qRnvj8H0TYBFeqMxag,148
27
- mteb/_evaluators/image/imagetext_pairclassification_evaluator.py,sha256=RSJxEIVvOl_Za07fk2jfXE-7QOwKsLOhIyGhZtLVABs,4808
27
+ mteb/_evaluators/image/imagetext_pairclassification_evaluator.py,sha256=lVizL_11s0yFAZzuGqv-wtkBbMaK7cArD1eUkxwG4uU,4883
28
28
  mteb/_evaluators/text/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
29
29
  mteb/_evaluators/text/bitext_mining_evaluator.py,sha256=XS7AVml5-BpQWtG1XFHf6fx8VMVPRwibg-9si4b-A_U,6308
30
30
  mteb/_evaluators/text/summarization_evaluator.py,sha256=l0AwjVO594mtzPV9Kcqf_xtHHpkx6uhDJ61KnolcVAo,10461
31
31
  mteb/abstasks/__init__.py,sha256=1iAwpYTWX7U-goak2KMmacPFCzxPchLQAmZ_uI0t-p0,1130
32
- mteb/abstasks/_statistics_calculation.py,sha256=gf_BhkXbCdwT1w4xza3op6FmjFsZIsNjvyUMCgRyTrg,5578
32
+ mteb/abstasks/_statistics_calculation.py,sha256=UP2H2Cy8yqwtqeimTWfe4unmZ4iyyr5qiBNZzzFjy9o,5669
33
33
  mteb/abstasks/_stratification.py,sha256=zfwkIVmD7Aq7mR2Yt8jTeW1j5ZVV7CIweW842VzcfXc,14364
34
34
  mteb/abstasks/abstask.py,sha256=nZwiY_5d0VVtUrlCATngpFLG3JAovO5AvmD0nkkWsLE,25118
35
35
  mteb/abstasks/aggregate_task_metadata.py,sha256=vzt1z2wDl0sXD7ErZFwKojYwmFUBPAnGlXLuqLA_-6Q,5992
36
36
  mteb/abstasks/aggregated_task.py,sha256=puY6-EAqbL5ehKvFHTMriIdy3rAuqqYHF3ezog1eYxw,6671
37
- mteb/abstasks/classification.py,sha256=Es9pmRdjv6xbc-KnGqVdO6dR1cc7yAHhekCZES7n5o8,13441
37
+ mteb/abstasks/classification.py,sha256=k_wrM1rq2XcVEK97RpU_uEcqhiWWbV7sm3B0dtvP5yY,13376
38
38
  mteb/abstasks/clustering.py,sha256=4KcaU8_sNLmLvMhwDpNmcY2nD3BNyx_LcM-ddSv-wtY,14410
39
39
  mteb/abstasks/clustering_legacy.py,sha256=HZY8zgBgqqs5urF_to9wzqm3MnjFivs59hU6P3NrzcI,8684
40
40
  mteb/abstasks/dataset_card_template.md,sha256=aD6l8qc3_jxwoIGJNYLzse-jpRa8hu92AxpnUtNgges,5122
@@ -56,11 +56,11 @@ mteb/abstasks/text/bitext_mining.py,sha256=8m86XHJ3TxguC9itxZRq2Bt_p0NYojojS2Btk
56
56
  mteb/abstasks/text/reranking.py,sha256=rfRGRBeSjZLgkh8pneMgRm-vd9NHr5jSFH92YfOHfmU,7776
57
57
  mteb/abstasks/text/summarization.py,sha256=KYEb8gh4JjpSsrvGUmQ2VlrVdzzVxIWcitXOJUaHhO4,6954
58
58
  mteb/benchmarks/__init__.py,sha256=MQEVeli-zLaJ7Xg0z7RhXQwsdmm7Ht_W2Ln0rZo1Szc,225
59
- mteb/benchmarks/_create_table.py,sha256=OAiR44ynJ2fMzoBmVITQtOTYQzxIu9KUdS_HzlBlAck,20195
60
- mteb/benchmarks/benchmark.py,sha256=70RlMyyg_wkWTlU_IbfLl-KaqRWXGCKTd8fWe9X-AQE,4173
59
+ mteb/benchmarks/_create_table.py,sha256=b2RqGqi0ZonKbHecEcZiF4pkfE96smFRIzxOI82ETA8,22304
60
+ mteb/benchmarks/benchmark.py,sha256=UEllUtZQ0L10SNnxRyKbiv4wLCMcNF2nUPhBDKY3nz8,5097
61
61
  mteb/benchmarks/get_benchmark.py,sha256=-n_O-gitRKZi48gJKNgGuI36hsP7yLVSiwulnMHN7Gw,3935
62
62
  mteb/benchmarks/benchmarks/__init__.py,sha256=Ig5dSFunzI-F-OamruuKJVSstbG3xQNkXCxRY3Bj_Ck,2180
63
- mteb/benchmarks/benchmarks/benchmarks.py,sha256=vWX6QZgqF9iKAE1tIQwaXw9f8q_WiBtdgo8yj4_CHFI,94767
63
+ mteb/benchmarks/benchmarks/benchmarks.py,sha256=mZQ56KBQwnBj2qLSQFOv39Av0HBNpH9HXYsDoFmqvu4,95640
64
64
  mteb/benchmarks/benchmarks/rteb_benchmarks.py,sha256=QnCSrTTaBfcRlAQp2Nu81tgv1idMXqiM16Fp2zKJ5Ys,10607
65
65
  mteb/cli/__init__.py,sha256=v-csUr3eUZElIvrGB6QGtaIdndDfNWEe9oZchsGsJpg,64
66
66
  mteb/cli/_display_tasks.py,sha256=7A06dT9sSoTz6shyMvskPxuc5eHY_H7PGPlROzMP0yw,2196
@@ -1430,10 +1430,10 @@ mteb/languages/language_family.json,sha256=OUGcHeOIPcZPb2FWmYLhxTS0JxjK5y3Fo6x0P
1430
1430
  mteb/languages/language_scripts.py,sha256=5wix9HTYolNIpTiS5oXf2pGJyL7ftdGKs_m432w81V8,3998
1431
1431
  mteb/languages/programming_languages.py,sha256=zxAakT3OSUnAuTnQ34VyeFIECnNXMlleZmAake6jsZE,211
1432
1432
  mteb/leaderboard/__init__.py,sha256=991roXmtRwEQysV-37hWEzWpkvPgMCGRqZTHR-hm2io,88
1433
- mteb/leaderboard/app.py,sha256=29MxFLKEVT-roULHG5boHmsQVhld1rDGNS94r7MWlz8,33118
1433
+ mteb/leaderboard/app.py,sha256=-sBAkZ9JTr9czhsYEbSm92MfTmB8BOQ17WDkQ1dsP90,34282
1434
1434
  mteb/leaderboard/benchmark_selector.py,sha256=qd-2L20RQ4ACke01UlytkhZok1dkWgfUlXzfET52kGc,7956
1435
1435
  mteb/leaderboard/figures.py,sha256=mPO0go_23QEhAm1RJdLiBxPFCoUiA74_ztyl6yimc7k,7553
1436
- mteb/leaderboard/table.py,sha256=6SnrYC5GcBlvVSO6vOk6ObuqtoveBLv3JUuXqdKueG8,8333
1436
+ mteb/leaderboard/table.py,sha256=NxXAUkQRWtxjJwfIiO9yvdvw9do3ogzqmAn6az01SSc,10609
1437
1437
  mteb/leaderboard/text_segments.py,sha256=iMIkS04QQjPbT-SkU0x6fOcS8xRbUYevryu9HydipKM,6570
1438
1438
  mteb/models/__init__.py,sha256=ABTuoqiBjBtBWW3LYY7ItBHdylR6jWoy06HH0g6j6fU,910
1439
1439
  mteb/models/abs_encoder.py,sha256=m0JkRfRPMYadDgBR9eozRloI31ZSWkSzDFINpwbfLZk,16533
@@ -1447,7 +1447,7 @@ mteb/models/cache_wrappers/__init__.py,sha256=1w1TnMwulWJSzNkLXjbh5MY3sqgHWc6vUn
1447
1447
  mteb/models/cache_wrappers/cache_backend_protocol.py,sha256=TR7kD7KbN1J4piszIecpegtLZYGy7sRHZt3SDWlImKk,1665
1448
1448
  mteb/models/cache_wrappers/cache_wrapper.py,sha256=KLDeOCe_ndQshbZa5ep2u3jovsl--tfpQzvt9EXyxCA,6589
1449
1449
  mteb/models/cache_wrappers/cache_backends/__init__.py,sha256=hN2Tq7cpTxoOYSCJ1Wnpvb8dEm-kQLfCCahT1N9Bacw,123
1450
- mteb/models/cache_wrappers/cache_backends/_hash_utils.py,sha256=WeQjXlNUpGpb-CbaWpu_EtezML7zoDYfbwIo0Jswvsc,480
1450
+ mteb/models/cache_wrappers/cache_backends/_hash_utils.py,sha256=zAp7BDuYyGETn2kX58uk8_tn1G2B7bgcsItDDxgyn-w,488
1451
1451
  mteb/models/cache_wrappers/cache_backends/faiss_cache.py,sha256=i9IfaCv1-_BvVokXFW1UZ9hMLCuM6rZ0tI-ZesoBkt4,3734
1452
1452
  mteb/models/cache_wrappers/cache_backends/numpy_cache.py,sha256=GyTVC5DLph3EeRnDMO1EEQzBDoOgk2J1hPqpl07lefM,7442
1453
1453
  mteb/models/model_implementations/__init__.py,sha256=BZDdde6ajKv-yroy9mqE2YS3Hw1KBdKoxBPg8aPTZEs,1164
@@ -1471,8 +1471,8 @@ mteb/models/model_implementations/codefuse_models.py,sha256=19Y-d_qetVU64quzEvuU
1471
1471
  mteb/models/model_implementations/codesage_models.py,sha256=D4CdISGyv5f2GMYq4_efgm5qNq80SWAX5R2u5mjEiXM,2998
1472
1472
  mteb/models/model_implementations/cohere_models.py,sha256=OWFClVAN4phjBoxfGGDyGDmzMu-t2VrjCGFyAIWmz4w,13832
1473
1473
  mteb/models/model_implementations/cohere_v.py,sha256=K6VEw1NkyM2PuMd18kHE6aqPrcByYSwEmAKjvLods_w,15760
1474
- mteb/models/model_implementations/colpali_models.py,sha256=7PJ0SshVXasyncTfZRFIf_ZWzbqxJhhzNKAoGLhNktw,9004
1475
- mteb/models/model_implementations/colqwen_models.py,sha256=6upaxe19V8j5Ayu03Dgj5jPtC8SJBCITK_RionJRMSE,15545
1474
+ mteb/models/model_implementations/colpali_models.py,sha256=l-0A3J5rt1bhhTKFPQ3Ti0qvWf2qXYkiv3j1si04R8I,9108
1475
+ mteb/models/model_implementations/colqwen_models.py,sha256=wxR3sqyzObuXMlm1QLoFopJK3ZpQTzd3ZB5IrkzPfZk,15553
1476
1476
  mteb/models/model_implementations/colsmol_models.py,sha256=O2M7Ksydh94M_Iax4KytHb-wOL18N0BIYLKSsLF8BFs,2967
1477
1477
  mteb/models/model_implementations/conan_models.py,sha256=G-s7xo9VtNX-f7lWKtYVGHHiMMN0Xp44PlNIp7E0LAo,6502
1478
1478
  mteb/models/model_implementations/dino_models.py,sha256=QFgaFHR5YKrylqJGSljXCBn2W7qHhmF6KdXkvHrQNEI,16380
@@ -1487,18 +1487,18 @@ mteb/models/model_implementations/evaclip_models.py,sha256=cPMGYLDIq4s8zJxb4vPXq
1487
1487
  mteb/models/model_implementations/fa_models.py,sha256=WGal70_ezITWoNdjcMdbOCTSCtoaXzuPadYstLVXxhg,7478
1488
1488
  mteb/models/model_implementations/facebookai.py,sha256=uhE6rB1YgxE0SIc7u8heE1U62qRFFA23IMgpjxBq_Ok,3116
1489
1489
  mteb/models/model_implementations/geogpt_models.py,sha256=Juv86SwhgQX80lVLjAFtim2aSiJT1AcgjniyyiKyk1Q,1923
1490
- mteb/models/model_implementations/gme_v_models.py,sha256=NkfgR3_UdZzoBt1NnalVou6LOR-F7qXM4by9EbAVrys,13568
1490
+ mteb/models/model_implementations/gme_v_models.py,sha256=GEu1wl5q77RMM3BwtKMjkMwm38KX_r0qWxD_IEMVC2U,13657
1491
1491
  mteb/models/model_implementations/google_models.py,sha256=7QfsaJ5JNDRQxFl7Zh2AtiR2PR7PZcfeCBgviuOFBCo,9130
1492
- mteb/models/model_implementations/granite_vision_embedding_models.py,sha256=uqQ5-e_a-ADv3gf3sR9Drk0S4x8Gy8mZkpL-E4X16TM,7241
1492
+ mteb/models/model_implementations/granite_vision_embedding_models.py,sha256=cvG5NliPwDVMvGuJTo8rk5yL3m6cuJZ_fMLEc0ESNfc,7315
1493
1493
  mteb/models/model_implementations/gritlm_models.py,sha256=aS_CuioL95JAQMYiaKlGuAWU9wZjabn268Xut3bD8-w,3005
1494
1494
  mteb/models/model_implementations/gte_models.py,sha256=o26Xyu_tucUlP435Q_jB4-bl0xckgj4wtbutTwhYgIo,10073
1495
1495
  mteb/models/model_implementations/hinvec_models.py,sha256=I_d_dSNVaGIwMIwyvTlaPAzGMpwh_PzvsfE4y47GFyg,1575
1496
1496
  mteb/models/model_implementations/human.py,sha256=klMpuMAtYH92EIEwNMEhne_Baf9fNiTg1DNWYD11P44,532
1497
1497
  mteb/models/model_implementations/ibm_granite_models.py,sha256=YCT0jbgawy19ps5l8QlxpQoJLjq8Nh-3R-e6yxS0DRM,7902
1498
1498
  mteb/models/model_implementations/inf_models.py,sha256=lvXUFhAYDltq2_Xa9MHcwfhh1V20rbJLSgON76tkj6w,2906
1499
- mteb/models/model_implementations/jasper_models.py,sha256=ZY7qRRpBpD3eVryQb4rLs5E3KDXlgFBvyelataqLIWs,16213
1499
+ mteb/models/model_implementations/jasper_models.py,sha256=onX_ipI-UZbaZrjcHpZtk34tpy6DcT6Yvq6X3RMSmYA,16211
1500
1500
  mteb/models/model_implementations/jina_clip.py,sha256=CfiIxbhKspjQajNtObCfGPHOWPk6uLn4cuwydQHFTMo,5118
1501
- mteb/models/model_implementations/jina_models.py,sha256=HrHm2Io3g9gHwxU5icAaudy_E8rAVkAAIFSzVYWF-dM,34859
1501
+ mteb/models/model_implementations/jina_models.py,sha256=1bkGwIaRNIun2ghkWb4FG-7js4lJ39s97Q9KAW3wkXo,34858
1502
1502
  mteb/models/model_implementations/kalm_models.py,sha256=FmW7Z5Qs6WYBLuKvql3u4IJW36kj4k-Ypah8qTBEBkg,59837
1503
1503
  mteb/models/model_implementations/kblab.py,sha256=DDh8gDEI6YPjS4_yGYWC4HatE0mFf7vhGDU83zzV7V0,866
1504
1504
  mteb/models/model_implementations/kennethenevoldsen_models.py,sha256=DF-9nmsewYO9ikZ0kV81ujKGr7Ot36-9iPoxN7KX2mY,2993
@@ -1521,22 +1521,23 @@ mteb/models/model_implementations/mxbai_models.py,sha256=33ta2BnhvKYBUgE89wFgPNf
1521
1521
  mteb/models/model_implementations/nbailab.py,sha256=bqqR0qs10IH2g5HC6K962tDMBciw8qFsNVHADNS72jk,2396
1522
1522
  mteb/models/model_implementations/no_instruct_sentence_models.py,sha256=6i-xbLRRNKuDpU-hwklwdQjgu1wnz5CecLSoc6kyd7Q,3976
1523
1523
  mteb/models/model_implementations/nomic_models.py,sha256=mT-v5Gs5-sRH8-ziCw_CtxB9ox3C6FtwWJjNghNrunw,11334
1524
- mteb/models/model_implementations/nomic_models_vision.py,sha256=gEEieMThvw4p-QhRH0G_9-WWTvj-jqOlgFsh6O07dbc,6731
1525
- mteb/models/model_implementations/nvidia_llama_nemoretriever_colemb.py,sha256=14XSv7wGsitu0cF8P3A951gel_Py7PrKlRixkLS4qG4,6203
1524
+ mteb/models/model_implementations/nomic_models_vision.py,sha256=6aca0XVLXnkGk6GW8jVCIbbjPGq98lKq4c9Az4jbEkE,6805
1525
+ mteb/models/model_implementations/nvidia_llama_nemoretriever_colemb.py,sha256=OEhVrvA-zfX2PSm76VcCDPkRyAArSFkVeweyLyzpqPI,6255
1526
1526
  mteb/models/model_implementations/nvidia_models.py,sha256=acVverAt77lURkILCVkCdXsWgY1BJoG1-ugB7yIhlIM,21555
1527
1527
  mteb/models/model_implementations/openai_models.py,sha256=loU6JByNUwRidq7lmcu8iGOtUQvzejw6HVLaF_IKCR0,9352
1528
1528
  mteb/models/model_implementations/openclip_models.py,sha256=W8XcokgLU1nSmMaWpYXkWWizVd3sQezcP02YtF2fXpo,11436
1529
1529
  mteb/models/model_implementations/opensearch_neural_sparse_models.py,sha256=fuxIjOx_kPoDps5C7LW3JllG-AZj4ktqeTNgJESHZh4,8351
1530
1530
  mteb/models/model_implementations/ops_moa_models.py,sha256=luWw1j2iTMx1z1ydLCjvCI89E9Yvge7ruEawivJTmfE,2413
1531
1531
  mteb/models/model_implementations/ordalietech_solon_embeddings_mini_beta_1_1.py,sha256=qGXv71qRjNCIFluZOwvfBlFlKKyN2bXBokwUPk4KHmM,1066
1532
+ mteb/models/model_implementations/pawan_models.py,sha256=rV2ePGIuYroocvwqDXm4VU369Y_Vr67CyAE-08K5B9c,1151
1532
1533
  mteb/models/model_implementations/piccolo_models.py,sha256=d8Dtkv_ZTUOCmJLLOuwquq-gX-2UfKvAtl_LvAS0Xi0,2113
1533
1534
  mteb/models/model_implementations/promptriever_models.py,sha256=S7uWes_P74p3OZR_KBJHJN_ezlvvRx2__46DMCWqV5M,6328
1534
- mteb/models/model_implementations/pylate_models.py,sha256=yINGQL97S4xjj74-FTWpO4KHX-E9NDOEeyQWyRmmnaE,14772
1535
+ mteb/models/model_implementations/pylate_models.py,sha256=oNoPndZuiJahSd-ikR4dE4vL9261btXYiJbF3bk3Dco,14546
1535
1536
  mteb/models/model_implementations/qodo_models.py,sha256=JDqffDlQiOEariyheybOIf3iNkqot2gTkEIHWDnRbUE,2037
1536
1537
  mteb/models/model_implementations/qtack_models.py,sha256=biZLH5E3UWIcMZXIZNGgBZFEUvovPpAo6vUyL776W1w,1224
1537
1538
  mteb/models/model_implementations/qwen3_models.py,sha256=F_o6ciD-6gLFfIlQYD9MsNvcbkmGzJ39eKpFlEog1rM,5132
1538
1539
  mteb/models/model_implementations/qzhou_models.py,sha256=7KaZpHdap-YyK0QxOMHxU0W2aGismx7GZv_bNXkEOcI,3536
1539
- mteb/models/model_implementations/random_baseline.py,sha256=1VNnWBSi0Ph_RLON6clOuQI-Kli5BRtiiDFZMrTj7PM,7489
1540
+ mteb/models/model_implementations/random_baseline.py,sha256=z4xNs5fbH1HUZhtf3Ry5AKa264SWk2Y4eobRu8rmPKM,7563
1540
1541
  mteb/models/model_implementations/rasgaard_models.py,sha256=a8F3kDSBWHH0UR7wRioOrWGQUxtloD5mU7EG27iM-68,1260
1541
1542
  mteb/models/model_implementations/reasonir_model.py,sha256=wSCcJpUgZ0pG2g3vTEzYNmPlPG_CVn_rR0ENVCines0,2218
1542
1543
  mteb/models/model_implementations/repllama_models.py,sha256=89HoqEpzkNysHeuf_-YhU8WETamHTogSRztGIRo6G1s,7321
@@ -1549,7 +1550,7 @@ mteb/models/model_implementations/salesforce_models.py,sha256=KslTK-IKeLvNG-vQir
1549
1550
  mteb/models/model_implementations/samilpwc_models.py,sha256=oMwKNwCxoH1jZgCy04oo2oVlBZWu253QMpnEEC6emz8,2021
1550
1551
  mteb/models/model_implementations/sarashina_embedding_models.py,sha256=TSmr2FEX79mJTA9mbEV3meEZYSelGv58Veiw__TTGFM,8415
1551
1552
  mteb/models/model_implementations/searchmap_models.py,sha256=XvVl99emIgnNUCxkTuFQXW6py2R8vgsArfpyHveCugw,1904
1552
- mteb/models/model_implementations/seed_1_6_embedding_models.py,sha256=8J3htEddltyGTydIbnMUudgAV97FdD43-SQKaSA_Iuc,18534
1553
+ mteb/models/model_implementations/seed_1_6_embedding_models.py,sha256=Q8JTW2fjePR9dq4spuwK2lyVeL3mn1bl-H5wkQuEV_E,18609
1553
1554
  mteb/models/model_implementations/seed_models.py,sha256=SgK4kPVO6V33G3F1zSq06zSkWarPLEwBt1SWp4TUoVw,14142
1554
1555
  mteb/models/model_implementations/sentence_transformers_models.py,sha256=EtEaXg1yFFp3DQEOxu6am8bcVQR-ypcHj6DCqJGHOVU,21160
1555
1556
  mteb/models/model_implementations/shuu_model.py,sha256=KkcuVYjIzoha3Fvxh8ppqHQ9BfNMWeqDqn9dGCRKUjg,1167
@@ -1566,7 +1567,7 @@ mteb/models/model_implementations/vi_vn_models.py,sha256=quWmd3JT2J6SlAsFrV2gcnc
1566
1567
  mteb/models/model_implementations/vista_models.py,sha256=Q3I01kRtIPaoke0iMIcH4CLcCDTnMSIBFNCof7LPTX4,10832
1567
1568
  mteb/models/model_implementations/vlm2vec_models.py,sha256=HGGy_-z9Wc99xOKum71rBNipCPqWcM1efmmXgy5Rvxc,11724
1568
1569
  mteb/models/model_implementations/voyage_models.py,sha256=dOCccOQlloGrg0q44PxMQzx8dHuQ8VgkDUD01EydpJ0,19824
1569
- mteb/models/model_implementations/voyage_v.py,sha256=WnvwYNVv3c5K0ChzGA3v2iTQX2ekXYn_3402H721c6M,8088
1570
+ mteb/models/model_implementations/voyage_v.py,sha256=vT1MXCt6-_PWA9U7lNz-Qj2zyGHwm_79WqxH4elMm90,8162
1570
1571
  mteb/models/model_implementations/xyz_models.py,sha256=TePlrH6EHwRPO87U_J3Yce9-XHCn_X7I2cJ_6BZ2fUY,1296
1571
1572
  mteb/models/model_implementations/youtu_models.py,sha256=NB74E6z-_36HyXb8GXKn8CrmRLN68uX9eH4xcS57zl0,5938
1572
1573
  mteb/models/model_implementations/yuan_models.py,sha256=yZ6ki6YFaoVrJ_2pPSRQaMKOsIOUo3GtmhPx1qeUl2w,939
@@ -1576,8 +1577,8 @@ mteb/models/search_encoder_index/search_backend_protocol.py,sha256=TSjlx88stJcMl
1576
1577
  mteb/models/search_encoder_index/search_indexes/__init__.py,sha256=Wm60_oUemUpFsvrCMW111dcPH2L2rt1iZrXMskXmG7o,88
1577
1578
  mteb/models/search_encoder_index/search_indexes/faiss_search_index.py,sha256=WMs3QbbYV13fRuT3dakmdVMZLFdc_9ZzSupS3QxlbVQ,5555
1578
1579
  mteb/results/__init__.py,sha256=EXQqK4Am5eIYzD52dpcGAFSdqnC38oE6JHN302oidHc,158
1579
- mteb/results/benchmark_results.py,sha256=OWqeBxbNsPmOKRhxY980N5CikpdJXToDGJGTXUe64Lw,18209
1580
- mteb/results/model_result.py,sha256=pTyGFTLg6l1wmc3Ul1CJK6ESBqWJAuU4aeT8iFygAdU,13746
1580
+ mteb/results/benchmark_results.py,sha256=b_g0QmTbwue9ZpWTtyPfgf_nyavckZHUgTVE6zqqtzM,18342
1581
+ mteb/results/model_result.py,sha256=Y6b_xfJlw8EFZq464ZVhyw0Rryv111hvMjnXbEZJpXk,14059
1581
1582
  mteb/results/task_result.py,sha256=DgmAw6akotjp8m8E6gE8QP9mQMxUvyzu1hnZ5o01GkU,32303
1582
1583
  mteb/tasks/__init__.py,sha256=izAxU0ip1F_YUwx0dFCuN35BaktdmePh6vlDiHC0kLo,503
1583
1584
  mteb/tasks/aggregated_tasks/__init__.py,sha256=Ufgbh1AirxCQkojO3AUhUFWM8zQG10cfdVTkj_PeyLI,104
@@ -2576,14 +2577,14 @@ mteb/tasks/zeroshot_classification/eng/sun397.py,sha256=Nls7tXM2Svu008MmAUjt-o_N
2576
2577
  mteb/tasks/zeroshot_classification/eng/ucf101.py,sha256=kwNRYks-_Oe4VE3GyoHIvN-2OJ6zhkwFr76WDNL9ymU,1884
2577
2578
  mteb/tasks/zeroshot_classification/eng/templates/__init__.py,sha256=da1PTClDMl-IBkrSvq6JC1lnS-K_BASzCvxVhNxN5Ls,13
2578
2579
  mteb/types/__init__.py,sha256=7_q6_84RvMuHeZK51GbLc5gbpTb3C1WmnqDHm6bnCzw,1104
2579
- mteb/types/_encoder_io.py,sha256=YlIthHwi0o-ObANsWwVPcQc4pA1wpiRwIewDjNTMAdQ,5461
2580
+ mteb/types/_encoder_io.py,sha256=Q7llxv3FfiExFKiQGHtATvbSk4_DwdJolLMPTnAPrrI,5536
2580
2581
  mteb/types/_metadata.py,sha256=NN-W0S6a5TDV7UkpRx1pyWtGF4TyyCyoPUfHOwdeci8,2290
2581
2582
  mteb/types/_result.py,sha256=CRAUc5IvqI3_9SyXDwv-PWLCXwXdZem9RePeYESRtuw,996
2582
2583
  mteb/types/_string_validators.py,sha256=PY-dYq4E8O50VS3bLYdldPWp400fl_WzUjfVSkNWe8U,523
2583
2584
  mteb/types/statistics.py,sha256=YwJsxTf1eaCI_RE-J37a-gK5wDeGAsmkeZKoZCFihSo,3755
2584
- mteb-2.3.9.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
2585
- mteb-2.3.9.dist-info/METADATA,sha256=da_FgK7mGK2HivEwQfKDyIPYzDVMFaz-lTeVQVvp2q8,13923
2586
- mteb-2.3.9.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
2587
- mteb-2.3.9.dist-info/entry_points.txt,sha256=8IJoEJFKoDHmVnNev-qJ9pp4Ln7_1-ma9QsXnzVCzGU,39
2588
- mteb-2.3.9.dist-info/top_level.txt,sha256=OLVIjcQAlWBz0bdmutKlWHLF42FF0hp4uVAg3ZyiG4U,5
2589
- mteb-2.3.9.dist-info/RECORD,,
2585
+ mteb-2.3.11.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
2586
+ mteb-2.3.11.dist-info/METADATA,sha256=zK0XHgO0btF1XS2eXGROlNeh8jCSj6dQV4NAT3N_Hn8,13991
2587
+ mteb-2.3.11.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
2588
+ mteb-2.3.11.dist-info/entry_points.txt,sha256=8IJoEJFKoDHmVnNev-qJ9pp4Ln7_1-ma9QsXnzVCzGU,39
2589
+ mteb-2.3.11.dist-info/top_level.txt,sha256=OLVIjcQAlWBz0bdmutKlWHLF42FF0hp4uVAg3ZyiG4U,5
2590
+ mteb-2.3.11.dist-info/RECORD,,
File without changes