tomaarsen HF Staff commited on
Commit
ffd2587
·
verified ·
1 Parent(s): 10ef3a4

Add new MultiVectorEncoder model

Browse files
.gitattributes CHANGED
@@ -33,3 +33,10 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
 
 
 
 
 
 
 
 
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
36
+ assets/example_image_0.jpg filter=lfs diff=lfs merge=lfs -text
37
+ assets/example_image_1.jpg filter=lfs diff=lfs merge=lfs -text
38
+ assets/example_image_2.jpg filter=lfs diff=lfs merge=lfs -text
39
+ assets/image_0.jpg filter=lfs diff=lfs merge=lfs -text
40
+ assets/image_1.jpg filter=lfs diff=lfs merge=lfs -text
41
+ assets/image_2.jpg filter=lfs diff=lfs merge=lfs -text
42
+ tokenizer.json filter=lfs diff=lfs merge=lfs -text
1_MultiVectorMask/config.json ADDED
@@ -0,0 +1,4 @@
 
 
 
 
 
1
+ {
2
+ "skiplist_words": [],
3
+ "keep_only_token_ids": null
4
+ }
README.md ADDED
@@ -0,0 +1,567 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ language:
3
+ - en
4
+ license: apache-2.0
5
+ tags:
6
+ - sentence-transformers
7
+ - multi-vector
8
+ - colbert
9
+ - late-interaction
10
+ - generated_from_trainer
11
+ - dataset_size:3475
12
+ - loss:MultiVectorMultipleNegativesRankingLoss
13
+ base_model: vidore/colqwen2-v1.0-hf
14
+ widget:
15
+ - text: What is the aim of this book according to the introduction?
16
+ - text: What is the purpose of a wet-bulb thermometer in a sling psychrometer?
17
+ - text: What are the different switching states for DCC and FCC topologies of a converter?
18
+ - text: What is the topic discussed in this page?
19
+ - text: What do these graphs show?
20
+ datasets:
21
+ - vidore/syntheticDocQA_energy_train
22
+ pipeline_tag: feature-extraction
23
+ library_name: sentence-transformers
24
+ metrics:
25
+ - maxsim_accuracy@1
26
+ - maxsim_accuracy@3
27
+ - maxsim_accuracy@5
28
+ - maxsim_accuracy@10
29
+ - maxsim_precision@1
30
+ - maxsim_precision@3
31
+ - maxsim_precision@5
32
+ - maxsim_precision@10
33
+ - maxsim_recall@1
34
+ - maxsim_recall@3
35
+ - maxsim_recall@5
36
+ - maxsim_recall@10
37
+ - maxsim_ndcg@10
38
+ - maxsim_mrr@10
39
+ - maxsim_map@100
40
+ model-index:
41
+ - name: colqwen2-v1.0-hf finetuned on energy document pages
42
+ results:
43
+ - task:
44
+ type: multi-vector-information-retrieval
45
+ name: Multi Vector Information Retrieval
46
+ dataset:
47
+ name: energy dev
48
+ type: energy-dev
49
+ metrics:
50
+ - type: maxsim_accuracy@1
51
+ value: 0.935
52
+ name: Maxsim Accuracy@1
53
+ - type: maxsim_accuracy@3
54
+ value: 0.9675
55
+ name: Maxsim Accuracy@3
56
+ - type: maxsim_accuracy@5
57
+ value: 0.9725
58
+ name: Maxsim Accuracy@5
59
+ - type: maxsim_accuracy@10
60
+ value: 0.9825
61
+ name: Maxsim Accuracy@10
62
+ - type: maxsim_precision@1
63
+ value: 0.935
64
+ name: Maxsim Precision@1
65
+ - type: maxsim_precision@3
66
+ value: 0.3225
67
+ name: Maxsim Precision@3
68
+ - type: maxsim_precision@5
69
+ value: 0.1945
70
+ name: Maxsim Precision@5
71
+ - type: maxsim_precision@10
72
+ value: 0.09824999999999999
73
+ name: Maxsim Precision@10
74
+ - type: maxsim_recall@1
75
+ value: 0.935
76
+ name: Maxsim Recall@1
77
+ - type: maxsim_recall@3
78
+ value: 0.9675
79
+ name: Maxsim Recall@3
80
+ - type: maxsim_recall@5
81
+ value: 0.9725
82
+ name: Maxsim Recall@5
83
+ - type: maxsim_recall@10
84
+ value: 0.9825
85
+ name: Maxsim Recall@10
86
+ - type: maxsim_ndcg@10
87
+ value: 0.9592186005800499
88
+ name: Maxsim Ndcg@10
89
+ - type: maxsim_mrr@10
90
+ value: 0.9517777777777776
91
+ name: Maxsim Mrr@10
92
+ - type: maxsim_map@100
93
+ value: 0.952218176489611
94
+ name: Maxsim Map@100
95
+ ---
96
+
97
+ # colqwen2-v1.0-hf finetuned on energy document pages
98
+
99
+ This is a [Multi-Vector Encoder](https://www.sbert.net/docs/multi_vector_encoder/usage/usage.html) model finetuned from [vidore/colqwen2-v1.0-hf](https://huggingface.co/vidore/colqwen2-v1.0-hf) on the [synthetic_doc_qa_energy_train](https://huggingface.co/datasets/vidore/syntheticDocQA_energy_train) dataset using the [sentence-transformers](https://www.SBERT.net) library. It maps inputs to sequences of 128-dimensional token-level vectors and scores them with late interaction (MaxSim), useful for semantic search with late interaction.
100
+ ## Model Details
101
+
102
+ ### Model Description
103
+ - **Model Type:** Multi-Vector Encoder
104
+ - **Base model:** [vidore/colqwen2-v1.0-hf](https://huggingface.co/vidore/colqwen2-v1.0-hf) <!-- at revision 0d3e414967fde994dd99a0ccc29bcb34b5355712 -->
105
+ - **Maximum Sequence Length:** 32768 tokens
106
+ - **Output Dimensionality:** 128 dimensions
107
+ - **Similarity Function:** maxsim
108
+ - **Supported Modalities:** Text, Image
109
+ - **Training Dataset:**
110
+ - [synthetic_doc_qa_energy_train](https://huggingface.co/datasets/vidore/syntheticDocQA_energy_train)
111
+ - **Language:** en
112
+ - **License:** apache-2.0
113
+
114
+ ### Model Sources
115
+
116
+ - **Documentation:** [Sentence Transformers Documentation](https://sbert.net)
117
+ - **Documentation:** [Multi-Vector Encoder Documentation](https://www.sbert.net/docs/multi_vector_encoder/usage/usage.html)
118
+ - **Repository:** [Sentence Transformers on GitHub](https://github.com/huggingface/sentence-transformers)
119
+ - **Hugging Face:** [Multi-Vector Encoders on Hugging Face](https://huggingface.co/models?library=sentence-transformers&other=multi-vector)
120
+
121
+ ### Full Model Architecture
122
+
123
+ ```
124
+ MultiVectorEncoder(
125
+ (0): Transformer({'transformer_task': 'retrieval', 'modality_config': {'text': {'method': 'forward', 'method_output_name': 'embeddings'}, 'image': {'method': 'forward', 'method_output_name': 'embeddings'}}, 'module_output_name': 'token_embeddings', 'architecture': 'ColQwen2ForRetrieval'})
126
+ (1): MultiVectorMask({'skiplist_words': [], 'keep_only_token_ids': None})
127
+ )
128
+ ```
129
+
130
+ ## Usage
131
+
132
+ ### Direct Usage (Sentence Transformers)
133
+
134
+ First install the Sentence Transformers library:
135
+
136
+ ```bash
137
+ pip install -U sentence-transformers
138
+ ```
139
+ Then you can load this model and run inference.
140
+ ```python
141
+ from sentence_transformers import MultiVectorEncoder
142
+
143
+ # Download from the 🤗 Hub
144
+ model = MultiVectorEncoder("tomaarsen/multivector-colqwen2-v1.0-hf-docqa-energy")
145
+ # Run inference: each input becomes a sequence of per-token vectors (variable length).
146
+ queries = [
147
+ 'What topics are covered in this index?',
148
+ ]
149
+ documents = [
150
+ 'https://huggingface.co/tomaarsen/multivector-colqwen2-v1.0-hf-docqa-energy/resolve/main/assets/image_0.jpg',
151
+ 'https://huggingface.co/tomaarsen/multivector-colqwen2-v1.0-hf-docqa-energy/resolve/main/assets/image_1.jpg',
152
+ 'https://huggingface.co/tomaarsen/multivector-colqwen2-v1.0-hf-docqa-energy/resolve/main/assets/image_2.jpg',
153
+ ]
154
+ query_embeddings = model.encode_query(queries)
155
+ document_embeddings = model.encode_document(documents)
156
+ print(query_embeddings[0].shape, document_embeddings[0].shape)
157
+ # (20, 128) (759, 128)
158
+
159
+ # Get the MaxSim similarity scores
160
+ similarities = model.similarity(query_embeddings, document_embeddings)
161
+ print(similarities)
162
+ # tensor([[15.7523, 8.2611, 11.6049]])
163
+ ```
164
+ <!--
165
+ ### Direct Usage (Transformers)
166
+
167
+ <details><summary>Click to see the direct usage in Transformers</summary>
168
+
169
+ </details>
170
+ -->
171
+
172
+ <!--
173
+ ### Downstream Usage (Sentence Transformers)
174
+
175
+ You can finetune this model on your own dataset.
176
+
177
+ <details><summary>Click to expand</summary>
178
+
179
+ </details>
180
+ -->
181
+
182
+ <!--
183
+ ### Out-of-Scope Use
184
+
185
+ *List how the model may foreseeably be misused and address what users ought not to do with the model.*
186
+ -->
187
+
188
+ ## Evaluation
189
+
190
+ ### Metrics
191
+
192
+ #### Multi Vector Information Retrieval
193
+
194
+ * Dataset: `energy-dev`
195
+ * Evaluated with [<code>MultiVectorInformationRetrievalEvaluator</code>](https://sbert.net/docs/package_reference/multi_vector_encoder/evaluation.html#sentence_transformers.multi_vector_encoder.evaluation.MultiVectorInformationRetrievalEvaluator)
196
+
197
+ | Metric | Value |
198
+ |:--------------------|:-----------|
199
+ | maxsim_accuracy@1 | 0.935 |
200
+ | maxsim_accuracy@3 | 0.9675 |
201
+ | maxsim_accuracy@5 | 0.9725 |
202
+ | maxsim_accuracy@10 | 0.9825 |
203
+ | maxsim_precision@1 | 0.935 |
204
+ | maxsim_precision@3 | 0.3225 |
205
+ | maxsim_precision@5 | 0.1945 |
206
+ | maxsim_precision@10 | 0.0982 |
207
+ | maxsim_recall@1 | 0.935 |
208
+ | maxsim_recall@3 | 0.9675 |
209
+ | maxsim_recall@5 | 0.9725 |
210
+ | maxsim_recall@10 | 0.9825 |
211
+ | **maxsim_ndcg@10** | **0.9592** |
212
+ | maxsim_mrr@10 | 0.9518 |
213
+ | maxsim_map@100 | 0.9522 |
214
+
215
+ <!--
216
+ ## Bias, Risks and Limitations
217
+
218
+ *What are the known or foreseeable issues stemming from this model? You could also flag here known failure cases or weaknesses of the model.*
219
+ -->
220
+
221
+ <!--
222
+ ### Recommendations
223
+
224
+ *What are recommendations with respect to the foreseeable issues? For example, filtering explicit content.*
225
+ -->
226
+
227
+ ## Training Details
228
+
229
+ ### Training Dataset
230
+
231
+ #### synthetic_doc_qa_energy_train
232
+
233
+ * Dataset: [synthetic_doc_qa_energy_train](https://huggingface.co/datasets/vidore/syntheticDocQA_energy_train) at [438dd85](https://huggingface.co/datasets/vidore/syntheticDocQA_energy_train/tree/438dd859839b0a48eba43c0e9f853195f2e61384)
234
+ * Size: 3,475 training samples
235
+ * Columns: <code>query</code> and <code>image</code>
236
+ * Approximate statistics based on the first 100 samples:
237
+ | | query | image |
238
+ |:---------|:-----------------------------------------------------------------------------------|:---------------------------------------------------------------------------------------|
239
+ | type | string | image |
240
+ | modality | text | image |
241
+ | details | <ul><li>min: 18 tokens</li><li>mean: 28.12 tokens</li><li>max: 48 tokens</li></ul> | <ul><li>min: 932x312 px</li><li>mean: 1717x2057 px</li><li>max: 3200x2339 px</li></ul> |
242
+ * Samples:
243
+ | query | image |
244
+ |:--------------------------------------------------------------------------------------------------------------------------------|:---------------------------------------------------|
245
+ | <code>What is the objective of the research task related to reactor pressure vessel steels?</code> | <img src="https://huggingface.co/tomaarsen/multivector-colqwen2-v1.0-hf-docqa-energy/resolve/main/assets/example_image_0.jpg" width="200"> |
246
+ | <code>What recommendations does this study make regarding energy policy options?</code> | <img src="https://huggingface.co/tomaarsen/multivector-colqwen2-v1.0-hf-docqa-energy/resolve/main/assets/example_image_1.jpg" width="200"> |
247
+ | <code>What are the typical materials used for the cathode, electrolyte, and anode in conventional solid-state batteries?</code> | <img src="https://huggingface.co/tomaarsen/multivector-colqwen2-v1.0-hf-docqa-energy/resolve/main/assets/example_image_2.jpg" width="200"> |
248
+ * Loss: [<code>MultiVectorMultipleNegativesRankingLoss</code>](https://sbert.net/docs/package_reference/multi_vector_encoder/losses.html#multivectormultiplenegativesrankingloss) with these parameters:
249
+ ```json
250
+ {
251
+ "score_metric": "colbert_scores",
252
+ "scale": 1.0,
253
+ "score_mini_batch_size": null,
254
+ "size_average": true,
255
+ "gather_across_devices": false
256
+ }
257
+ ```
258
+
259
+ ### Evaluation Dataset
260
+
261
+ #### synthetic_doc_qa_energy_train
262
+
263
+ * Dataset: [synthetic_doc_qa_energy_train](https://huggingface.co/datasets/vidore/syntheticDocQA_energy_train) at [438dd85](https://huggingface.co/datasets/vidore/syntheticDocQA_energy_train/tree/438dd859839b0a48eba43c0e9f853195f2e61384)
264
+ * Size: 400 evaluation samples
265
+ * Columns: <code>query</code> and <code>image</code>
266
+ * Approximate statistics based on the first 100 samples:
267
+ | | query | image |
268
+ |:---------|:-----------------------------------------------------------------------------------|:----------------------------------------------------------------------------------------|
269
+ | type | string | image |
270
+ | modality | text | image |
271
+ | details | <ul><li>min: 18 tokens</li><li>mean: 27.27 tokens</li><li>max: 44 tokens</li></ul> | <ul><li>min: 827x1125 px</li><li>mean: 1728x2103 px</li><li>max: 3400x3042 px</li></ul> |
272
+ * Samples:
273
+ | query | image |
274
+ |:--------------------------------------------------------------------------------------|:-------------------------------------------|
275
+ | <code>What topics are covered in this index?</code> | <img src="https://huggingface.co/tomaarsen/multivector-colqwen2-v1.0-hf-docqa-energy/resolve/main/assets/image_0.jpg" width="200"> |
276
+ | <code>What are the different funding sources for projects listed in the table?</code> | <img src="https://huggingface.co/tomaarsen/multivector-colqwen2-v1.0-hf-docqa-energy/resolve/main/assets/image_1.jpg" width="200"> |
277
+ | <code>What are the main sections covered in this report?</code> | <img src="https://huggingface.co/tomaarsen/multivector-colqwen2-v1.0-hf-docqa-energy/resolve/main/assets/image_2.jpg" width="200"> |
278
+ * Loss: [<code>MultiVectorMultipleNegativesRankingLoss</code>](https://sbert.net/docs/package_reference/multi_vector_encoder/losses.html#multivectormultiplenegativesrankingloss) with these parameters:
279
+ ```json
280
+ {
281
+ "score_metric": "colbert_scores",
282
+ "scale": 1.0,
283
+ "score_mini_batch_size": null,
284
+ "size_average": true,
285
+ "gather_across_devices": false
286
+ }
287
+ ```
288
+
289
+ ### Training Hyperparameters
290
+ #### Non-Default Hyperparameters
291
+
292
+ - `num_train_epochs`: 1
293
+ - `learning_rate`: 2e-05
294
+ - `warmup_steps`: 0.05
295
+ - `bf16`: True
296
+ - `save_only_model`: True
297
+ - `load_best_model_at_end`: True
298
+
299
+ #### All Hyperparameters
300
+ <details><summary>Click to expand</summary>
301
+
302
+ - `per_device_train_batch_size`: 8
303
+ - `num_train_epochs`: 1
304
+ - `max_steps`: -1
305
+ - `learning_rate`: 2e-05
306
+ - `lr_scheduler_type`: linear
307
+ - `lr_scheduler_kwargs`: None
308
+ - `warmup_steps`: 0.05
309
+ - `optim`: adamw_torch_fused
310
+ - `optim_args`: None
311
+ - `weight_decay`: 0.0
312
+ - `adam_beta1`: 0.9
313
+ - `adam_beta2`: 0.999
314
+ - `adam_epsilon`: 1e-08
315
+ - `optim_target_modules`: None
316
+ - `gradient_accumulation_steps`: 1
317
+ - `average_tokens_across_devices`: True
318
+ - `max_grad_norm`: 1.0
319
+ - `label_smoothing_factor`: 0.0
320
+ - `bf16`: True
321
+ - `fp16`: False
322
+ - `bf16_full_eval`: False
323
+ - `fp16_full_eval`: False
324
+ - `tf32`: None
325
+ - `gradient_checkpointing`: False
326
+ - `gradient_checkpointing_kwargs`: None
327
+ - `torch_compile`: False
328
+ - `torch_compile_backend`: None
329
+ - `torch_compile_mode`: None
330
+ - `use_liger_kernel`: False
331
+ - `liger_kernel_config`: None
332
+ - `use_cache`: False
333
+ - `neftune_noise_alpha`: None
334
+ - `torch_empty_cache_steps`: None
335
+ - `auto_find_batch_size`: False
336
+ - `log_on_each_node`: True
337
+ - `logging_nan_inf_filter`: True
338
+ - `include_num_input_tokens_seen`: no
339
+ - `log_level`: passive
340
+ - `log_level_replica`: warning
341
+ - `disable_tqdm`: False
342
+ - `project`: huggingface
343
+ - `trackio_space_id`: None
344
+ - `trackio_bucket_id`: None
345
+ - `trackio_static_space_id`: None
346
+ - `per_device_eval_batch_size`: 8
347
+ - `prediction_loss_only`: True
348
+ - `eval_on_start`: False
349
+ - `eval_do_concat_batches`: True
350
+ - `eval_use_gather_object`: False
351
+ - `eval_accumulation_steps`: None
352
+ - `include_for_metrics`: []
353
+ - `batch_eval_metrics`: False
354
+ - `save_only_model`: True
355
+ - `save_on_each_node`: False
356
+ - `enable_jit_checkpoint`: False
357
+ - `push_to_hub`: False
358
+ - `hub_private_repo`: None
359
+ - `hub_model_id`: None
360
+ - `hub_strategy`: every_save
361
+ - `hub_always_push`: False
362
+ - `hub_revision`: None
363
+ - `load_best_model_at_end`: True
364
+ - `ignore_data_skip`: False
365
+ - `restore_callback_states_from_checkpoint`: False
366
+ - `full_determinism`: False
367
+ - `seed`: 42
368
+ - `data_seed`: None
369
+ - `use_cpu`: False
370
+ - `accelerator_config`: {'split_batches': False, 'dispatch_batches': None, 'even_batches': True, 'use_seedable_sampler': True, 'non_blocking': False, 'gradient_accumulation_kwargs': None}
371
+ - `parallelism_config`: None
372
+ - `dataloader_drop_last`: False
373
+ - `dataloader_num_workers`: 0
374
+ - `dataloader_pin_memory`: True
375
+ - `dataloader_persistent_workers`: False
376
+ - `dataloader_prefetch_factor`: None
377
+ - `remove_unused_columns`: True
378
+ - `label_names`: None
379
+ - `train_sampling_strategy`: random
380
+ - `length_column_name`: length
381
+ - `ddp_find_unused_parameters`: None
382
+ - `ddp_bucket_cap_mb`: None
383
+ - `ddp_broadcast_buffers`: False
384
+ - `ddp_static_graph`: None
385
+ - `ddp_backend`: None
386
+ - `ddp_timeout`: 1800
387
+ - `fsdp`: None
388
+ - `fsdp_config`: None
389
+ - `deepspeed`: None
390
+ - `debug`: []
391
+ - `skip_memory_metrics`: True
392
+ - `do_predict`: False
393
+ - `resume_from_checkpoint`: None
394
+ - `warmup_ratio`: None
395
+ - `local_rank`: -1
396
+ - `prompts`: None
397
+ - `batch_sampler`: batch_sampler
398
+ - `multi_dataset_batch_sampler`: proportional
399
+ - `router_mapping`: {}
400
+ - `learning_rate_mapping`: {}
401
+ - `max_length`: None
402
+
403
+ </details>
404
+
405
+ ### Training Logs
406
+ | Epoch | Step | Training Loss | Validation Loss | energy-dev_maxsim_ndcg@10 |
407
+ |:-------:|:-------:|:-------------:|:---------------:|:-------------------------:|
408
+ | -1 | -1 | - | - | 0.9571 |
409
+ | 0.0115 | 5 | 0.0964 | - | - |
410
+ | 0.0230 | 10 | 0.0489 | - | - |
411
+ | 0.0345 | 15 | 0.1147 | - | - |
412
+ | 0.0460 | 20 | 0.0682 | - | - |
413
+ | 0.0575 | 25 | 0.0311 | - | - |
414
+ | 0.0690 | 30 | 0.0563 | - | - |
415
+ | 0.0805 | 35 | 0.0086 | - | - |
416
+ | 0.0920 | 40 | 0.0599 | - | - |
417
+ | 0.1011 | 44 | - | 0.0606 | 0.9554 |
418
+ | 0.1034 | 45 | 0.0014 | - | - |
419
+ | 0.1149 | 50 | 0.0163 | - | - |
420
+ | 0.1264 | 55 | 0.0684 | - | - |
421
+ | 0.1379 | 60 | 0.0364 | - | - |
422
+ | 0.1494 | 65 | 0.0973 | - | - |
423
+ | 0.1609 | 70 | 0.0744 | - | - |
424
+ | 0.1724 | 75 | 0.0444 | - | - |
425
+ | 0.1839 | 80 | 0.0047 | - | - |
426
+ | 0.1954 | 85 | 0.1064 | - | - |
427
+ | 0.2023 | 88 | - | 0.0516 | 0.9548 |
428
+ | 0.2069 | 90 | 0.1071 | - | - |
429
+ | 0.2184 | 95 | 0.0783 | - | - |
430
+ | 0.2299 | 100 | 0.0627 | - | - |
431
+ | 0.2414 | 105 | 0.0181 | - | - |
432
+ | 0.2529 | 110 | 0.0073 | - | - |
433
+ | 0.2644 | 115 | 0.0430 | - | - |
434
+ | 0.2759 | 120 | 0.0013 | - | - |
435
+ | 0.2874 | 125 | 0.0500 | - | - |
436
+ | 0.2989 | 130 | 0.0044 | - | - |
437
+ | 0.3034 | 132 | - | 0.0442 | 0.9548 |
438
+ | 0.3103 | 135 | 0.0891 | - | - |
439
+ | 0.3218 | 140 | 0.0260 | - | - |
440
+ | 0.3333 | 145 | 0.0302 | - | - |
441
+ | 0.3448 | 150 | 0.0229 | - | - |
442
+ | 0.3563 | 155 | 0.1208 | - | - |
443
+ | 0.3678 | 160 | 0.0367 | - | - |
444
+ | 0.3793 | 165 | 0.0361 | - | - |
445
+ | 0.3908 | 170 | 0.0409 | - | - |
446
+ | 0.4023 | 175 | 0.0103 | - | - |
447
+ | 0.4046 | 176 | - | 0.0427 | 0.9559 |
448
+ | 0.4138 | 180 | 0.0072 | - | - |
449
+ | 0.4253 | 185 | 0.0649 | - | - |
450
+ | 0.4368 | 190 | 0.0405 | - | - |
451
+ | 0.4483 | 195 | 0.0026 | - | - |
452
+ | 0.4598 | 200 | 0.0352 | - | - |
453
+ | 0.4713 | 205 | 0.0342 | - | - |
454
+ | 0.4828 | 210 | 0.0098 | - | - |
455
+ | 0.4943 | 215 | 0.0057 | - | - |
456
+ | 0.5057 | 220 | 0.0235 | 0.0416 | 0.9567 |
457
+ | 0.5172 | 225 | 0.0026 | - | - |
458
+ | 0.5287 | 230 | 0.0119 | - | - |
459
+ | 0.5402 | 235 | 0.0013 | - | - |
460
+ | 0.5517 | 240 | 0.0417 | - | - |
461
+ | 0.5632 | 245 | 0.0118 | - | - |
462
+ | 0.5747 | 250 | 0.0060 | - | - |
463
+ | 0.5862 | 255 | 0.0069 | - | - |
464
+ | 0.5977 | 260 | 0.0620 | - | - |
465
+ | 0.6069 | 264 | - | 0.0410 | 0.9583 |
466
+ | 0.6092 | 265 | 0.0700 | - | - |
467
+ | 0.6207 | 270 | 0.0287 | - | - |
468
+ | 0.6322 | 275 | 0.1266 | - | - |
469
+ | 0.6437 | 280 | 0.0015 | - | - |
470
+ | 0.6552 | 285 | 0.0147 | - | - |
471
+ | 0.6667 | 290 | 0.0145 | - | - |
472
+ | 0.6782 | 295 | 0.0976 | - | - |
473
+ | 0.6897 | 300 | 0.0027 | - | - |
474
+ | 0.7011 | 305 | 0.0341 | - | - |
475
+ | 0.7080 | 308 | - | 0.0404 | 0.9583 |
476
+ | 0.7126 | 310 | 0.0570 | - | - |
477
+ | 0.7241 | 315 | 0.0302 | - | - |
478
+ | 0.7356 | 320 | 0.0047 | - | - |
479
+ | 0.7471 | 325 | 0.0238 | - | - |
480
+ | 0.7586 | 330 | 0.0514 | - | - |
481
+ | 0.7701 | 335 | 0.0022 | - | - |
482
+ | 0.7816 | 340 | 0.0579 | - | - |
483
+ | 0.7931 | 345 | 0.0030 | - | - |
484
+ | 0.8046 | 350 | 0.0407 | - | - |
485
+ | 0.8092 | 352 | - | 0.0404 | 0.9577 |
486
+ | 0.8161 | 355 | 0.0363 | - | - |
487
+ | 0.8276 | 360 | 0.0570 | - | - |
488
+ | 0.8391 | 365 | 0.0031 | - | - |
489
+ | 0.8506 | 370 | 0.0603 | - | - |
490
+ | 0.8621 | 375 | 0.0067 | - | - |
491
+ | 0.8736 | 380 | 0.0022 | - | - |
492
+ | 0.8851 | 385 | 0.0129 | - | - |
493
+ | 0.8966 | 390 | 0.0072 | - | - |
494
+ | 0.9080 | 395 | 0.0052 | - | - |
495
+ | 0.9103 | 396 | - | 0.0405 | 0.9574 |
496
+ | 0.9195 | 400 | 0.0165 | - | - |
497
+ | 0.9310 | 405 | 0.0060 | - | - |
498
+ | 0.9425 | 410 | 0.0020 | - | - |
499
+ | 0.9540 | 415 | 0.0144 | - | - |
500
+ | 0.9655 | 420 | 0.0572 | - | - |
501
+ | 0.9770 | 425 | 0.1479 | - | - |
502
+ | 0.9885 | 430 | 0.0381 | - | - |
503
+ | **1.0** | **435** | **0.0337** | **0.0405** | **0.9592** |
504
+ | -1 | -1 | - | - | 0.9592 |
505
+
506
+ * The bold row denotes the saved checkpoint.
507
+
508
+ ### Training Time
509
+ - **Training**: 14.2 minutes
510
+ - **Evaluation**: 24.0 minutes
511
+ - **Total**: 38.2 minutes
512
+
513
+ ### Framework Versions
514
+ - Python: 3.11.13
515
+ - Sentence Transformers: 5.7.0.dev0
516
+ - Transformers: 5.14.1
517
+ - PyTorch: 2.11.0+cu128
518
+ - Accelerate: 1.5.2
519
+ - Datasets: 3.5.0
520
+ - Tokenizers: 0.22.2
521
+
522
+ ## Citation
523
+
524
+ ### BibTeX
525
+
526
+ #### Sentence Transformers
527
+ ```bibtex
528
+ @inproceedings{reimers-2019-sentence-bert,
529
+ title = "Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks",
530
+ author = "Reimers, Nils and Gurevych, Iryna",
531
+ booktitle = "Proceedings of the 2019 Conference on Empirical Methods in Natural Language Processing",
532
+ month = "11",
533
+ year = "2019",
534
+ publisher = "Association for Computational Linguistics",
535
+ url = "https://arxiv.org/abs/1908.10084",
536
+ }
537
+ ```
538
+
539
+ #### MultiVectorMultipleNegativesRankingLoss
540
+ ```bibtex
541
+ @misc{henderson2017efficient,
542
+ title={Efficient Natural Language Response Suggestion for Smart Reply},
543
+ 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},
544
+ year={2017},
545
+ eprint={1705.00652},
546
+ archivePrefix={arXiv},
547
+ primaryClass={cs.CL}
548
+ }
549
+ ```
550
+
551
+ <!--
552
+ ## Glossary
553
+
554
+ *Clearly define terms in order to be accessible across audiences.*
555
+ -->
556
+
557
+ <!--
558
+ ## Model Card Authors
559
+
560
+ *Lists the people who create the model card, providing recognition and accountability for the detailed work that goes into its construction.*
561
+ -->
562
+
563
+ <!--
564
+ ## Model Card Contact
565
+
566
+ *Provides a way for people who have updates to the Model Card, suggestions, or questions, to contact the Model Card authors.*
567
+ -->
assets/example_image_0.jpg ADDED

Git LFS Details

  • SHA256: 0e0321e32eeedfc14f04e571f3468b376b680b498cf164c7d77f47850e0b6d03
  • Pointer size: 131 Bytes
  • Size of remote file: 607 kB
assets/example_image_1.jpg ADDED

Git LFS Details

  • SHA256: aedec885d8f45ccb707a440085cf75d7b881017bec81a259b2201bfca8113c0d
  • Pointer size: 131 Bytes
  • Size of remote file: 172 kB
assets/example_image_2.jpg ADDED

Git LFS Details

  • SHA256: c8500f3010d6e09b6390267157364fa157500638543e868daeb116ea503c867b
  • Pointer size: 131 Bytes
  • Size of remote file: 282 kB
assets/image_0.jpg ADDED

Git LFS Details

  • SHA256: a0d655a947c2029d842a7a8609c7e432a2af30dd129ed586aa163623c9821022
  • Pointer size: 131 Bytes
  • Size of remote file: 255 kB
assets/image_1.jpg ADDED

Git LFS Details

  • SHA256: 1a163ea4381b66113e66d98d1044dba329c68770c7d4ff79e549b8536c437e3a
  • Pointer size: 131 Bytes
  • Size of remote file: 379 kB
assets/image_2.jpg ADDED

Git LFS Details

  • SHA256: 907a24865983efd35f4ee4d73b130b36fdc48413f567e657b1dca19096757c55
  • Pointer size: 131 Bytes
  • Size of remote file: 318 kB
chat_template.jinja ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ {% set image_count = namespace(value=0) %}{% set video_count = namespace(value=0) %}{% for message in messages %}{% if loop.first and message['role'] != 'system' %}<|im_start|>system
2
+ You are a helpful assistant.<|im_end|>
3
+ {% endif %}<|im_start|>{{ message['role'] }}
4
+ {% if message['content'] is string %}{{ message['content'] }}<|im_end|>
5
+ {% else %}{% for content in message['content'] %}{% if content['type'] == 'image' or 'image' in content or 'image_url' in content %}{% set image_count.value = image_count.value + 1 %}{% if add_vision_id %}Picture {{ image_count.value }}: {% endif %}<|vision_start|><|image_pad|><|vision_end|>{% elif content['type'] == 'video' or 'video' in content %}{% set video_count.value = video_count.value + 1 %}{% if add_vision_id %}Video {{ video_count.value }}: {% endif %}<|vision_start|><|video_pad|><|vision_end|>{% elif 'text' in content %}{{ content['text'] }}{% endif %}{% endfor %}<|im_end|>
6
+ {% endif %}{% endfor %}{% if add_generation_prompt %}<|im_start|>assistant
7
+ {% endif %}
config.json ADDED
@@ -0,0 +1,177 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "architectures": [
3
+ "ColQwen2ForRetrieval"
4
+ ],
5
+ "dtype": "bfloat16",
6
+ "embedding_dim": 128,
7
+ "eos_token_id": 151645,
8
+ "initializer_range": 0.02,
9
+ "is_composition": false,
10
+ "model_type": "colqwen2",
11
+ "pad_token_id": 151643,
12
+ "transformers_version": "5.14.1",
13
+ "use_cache": false,
14
+ "vlm_config": {
15
+ "_name_or_path": "Qwen/Qwen2-VL-2B-Instruct",
16
+ "dtype": "bfloat16",
17
+ "image_token_id": 151655,
18
+ "model_type": "qwen2_vl",
19
+ "text_config": {
20
+ "_name_or_path": "vidore/colqwen2-base",
21
+ "add_cross_attention": false,
22
+ "architectures": [
23
+ "ColQwen2"
24
+ ],
25
+ "attention_dropout": 0.0,
26
+ "bos_token_id": 151643,
27
+ "chunk_size_feed_forward": 0,
28
+ "cross_attention_hidden_size": null,
29
+ "decoder_start_token_id": null,
30
+ "dtype": "bfloat16",
31
+ "eos_token_id": 151645,
32
+ "finetuning_task": null,
33
+ "hidden_act": "silu",
34
+ "hidden_size": 1536,
35
+ "id2label": {
36
+ "0": "LABEL_0",
37
+ "1": "LABEL_1"
38
+ },
39
+ "image_token_id": null,
40
+ "initializer_range": 0.02,
41
+ "intermediate_size": 8960,
42
+ "is_decoder": false,
43
+ "is_encoder_decoder": false,
44
+ "label2id": {
45
+ "LABEL_0": 0,
46
+ "LABEL_1": 1
47
+ },
48
+ "layer_types": [
49
+ "full_attention",
50
+ "full_attention",
51
+ "full_attention",
52
+ "full_attention",
53
+ "full_attention",
54
+ "full_attention",
55
+ "full_attention",
56
+ "full_attention",
57
+ "full_attention",
58
+ "full_attention",
59
+ "full_attention",
60
+ "full_attention",
61
+ "full_attention",
62
+ "full_attention",
63
+ "full_attention",
64
+ "full_attention",
65
+ "full_attention",
66
+ "full_attention",
67
+ "full_attention",
68
+ "full_attention",
69
+ "full_attention",
70
+ "full_attention",
71
+ "full_attention",
72
+ "full_attention",
73
+ "full_attention",
74
+ "full_attention",
75
+ "full_attention",
76
+ "full_attention"
77
+ ],
78
+ "max_position_embeddings": 32768,
79
+ "max_window_layers": 28,
80
+ "model_type": "qwen2_vl_text",
81
+ "num_attention_heads": 12,
82
+ "num_hidden_layers": 28,
83
+ "num_key_value_heads": 2,
84
+ "output_attentions": false,
85
+ "output_hidden_states": false,
86
+ "pad_token_id": null,
87
+ "prefix": null,
88
+ "problem_type": null,
89
+ "pruned_heads": {},
90
+ "return_dict": true,
91
+ "rms_norm_eps": 1e-06,
92
+ "rope_parameters": {
93
+ "mrope_section": [
94
+ 16,
95
+ 24,
96
+ 24
97
+ ],
98
+ "rope_theta": 1000000.0,
99
+ "rope_type": "default",
100
+ "type": "default"
101
+ },
102
+ "sep_token_id": null,
103
+ "sliding_window": null,
104
+ "task_specific_params": null,
105
+ "tf_legacy_loss": false,
106
+ "tie_encoder_decoder": false,
107
+ "tie_word_embeddings": true,
108
+ "tokenizer_class": null,
109
+ "torchscript": false,
110
+ "use_bfloat16": false,
111
+ "use_cache": true,
112
+ "use_sliding_window": false,
113
+ "video_token_id": null,
114
+ "vision_end_token_id": 151653,
115
+ "vision_start_token_id": 151652,
116
+ "vision_token_id": 151654,
117
+ "vocab_size": 151936
118
+ },
119
+ "tie_word_embeddings": false,
120
+ "video_token_id": 151656,
121
+ "vision_config": {
122
+ "_name_or_path": "",
123
+ "add_cross_attention": false,
124
+ "architectures": null,
125
+ "bos_token_id": null,
126
+ "chunk_size_feed_forward": 0,
127
+ "cross_attention_hidden_size": null,
128
+ "decoder_start_token_id": null,
129
+ "depth": 32,
130
+ "dtype": "bfloat16",
131
+ "embed_dim": 1280,
132
+ "eos_token_id": null,
133
+ "finetuning_task": null,
134
+ "hidden_act": "quick_gelu",
135
+ "hidden_size": 1536,
136
+ "id2label": {
137
+ "0": "LABEL_0",
138
+ "1": "LABEL_1"
139
+ },
140
+ "in_channels": 3,
141
+ "in_chans": 3,
142
+ "initializer_range": 0.02,
143
+ "is_decoder": false,
144
+ "is_encoder_decoder": false,
145
+ "label2id": {
146
+ "LABEL_0": 0,
147
+ "LABEL_1": 1
148
+ },
149
+ "mlp_ratio": 4,
150
+ "model_type": "qwen2_vl_vision",
151
+ "num_heads": 16,
152
+ "output_attentions": false,
153
+ "output_hidden_states": false,
154
+ "pad_token_id": null,
155
+ "patch_size": 14,
156
+ "prefix": null,
157
+ "problem_type": null,
158
+ "pruned_heads": {},
159
+ "return_dict": true,
160
+ "sep_token_id": null,
161
+ "spatial_merge_size": 2,
162
+ "spatial_patch_size": 14,
163
+ "task_specific_params": null,
164
+ "temporal_patch_size": 2,
165
+ "tf_legacy_loss": false,
166
+ "tie_encoder_decoder": false,
167
+ "tie_word_embeddings": true,
168
+ "tokenizer_class": null,
169
+ "torchscript": false,
170
+ "use_bfloat16": false
171
+ },
172
+ "vision_end_token_id": 151653,
173
+ "vision_start_token_id": 151652,
174
+ "vision_token_id": 151654,
175
+ "vocab_size": 151936
176
+ }
177
+ }
config_sentence_transformers.json ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "__version__": {
3
+ "pytorch": "2.11.0+cu128",
4
+ "sentence_transformers": "5.7.0.dev0",
5
+ "transformers": "5.14.1"
6
+ },
7
+ "default_prompt_name": null,
8
+ "model_type": "MultiVectorEncoder",
9
+ "prompts": {
10
+ "document": "",
11
+ "query": ""
12
+ },
13
+ "similarity_fn_name": "maxsim"
14
+ }
model.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:096d1f4b642ac1d95de3fd1551c20deea6333982e522f55f4919d0c31ed4dc64
3
+ size 4418454832
modules.json ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ [
2
+ {
3
+ "idx": 0,
4
+ "name": "0",
5
+ "path": "",
6
+ "type": "sentence_transformers.base.modules.transformer.Transformer"
7
+ },
8
+ {
9
+ "idx": 1,
10
+ "name": "1",
11
+ "path": "1_MultiVectorMask",
12
+ "type": "sentence_transformers.multi_vector_encoder.modules.multi_vector_mask.MultiVectorMask"
13
+ }
14
+ ]
processor_config.json ADDED
@@ -0,0 +1,31 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "image_processor": {
3
+ "do_convert_rgb": true,
4
+ "do_normalize": true,
5
+ "do_rescale": true,
6
+ "do_resize": true,
7
+ "image_mean": [
8
+ 0.48145466,
9
+ 0.4578275,
10
+ 0.40821073
11
+ ],
12
+ "image_processor_type": "Qwen2VLImageProcessor",
13
+ "image_std": [
14
+ 0.26862954,
15
+ 0.26130258,
16
+ 0.27577711
17
+ ],
18
+ "merge_size": 2,
19
+ "patch_size": 14,
20
+ "resample": 3,
21
+ "rescale_factor": 0.00392156862745098,
22
+ "size": {
23
+ "longest_edge": 602112,
24
+ "shortest_edge": 3136
25
+ },
26
+ "temporal_patch_size": 2
27
+ },
28
+ "processor_class": "ColQwen2Processor",
29
+ "query_prefix": "Query: ",
30
+ "visual_prompt_prefix": "<|im_start|>user\n<|vision_start|><|image_pad|><|vision_end|>Describe the image.<|im_end|><|endoftext|>"
31
+ }
sentence_bert_config.json ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "transformer_task": "retrieval",
3
+ "modality_config": {
4
+ "text": {
5
+ "method": "forward",
6
+ "method_output_name": "embeddings"
7
+ },
8
+ "image": {
9
+ "method": "forward",
10
+ "method_output_name": "embeddings"
11
+ }
12
+ },
13
+ "module_output_name": "token_embeddings"
14
+ }
tokenizer.json ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:bac488975eccb4e1cbcf65979b644ac7e0ba71721f1ea36a52bd4b5fb81497b3
3
+ size 11420634
tokenizer_config.json ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "add_prefix_space": false,
3
+ "backend": "tokenizers",
4
+ "bos_token": null,
5
+ "clean_up_tokenization_spaces": false,
6
+ "eos_token": "<|im_end|>",
7
+ "errors": "replace",
8
+ "extra_special_tokens": [
9
+ "<|im_start|>",
10
+ "<|im_end|>",
11
+ "<|object_ref_start|>",
12
+ "<|object_ref_end|>",
13
+ "<|box_start|>",
14
+ "<|box_end|>",
15
+ "<|quad_start|>",
16
+ "<|quad_end|>",
17
+ "<|vision_start|>",
18
+ "<|vision_end|>",
19
+ "<|vision_pad|>",
20
+ "<|image_pad|>",
21
+ "<|video_pad|>"
22
+ ],
23
+ "is_local": false,
24
+ "local_files_only": false,
25
+ "model_max_length": 32768,
26
+ "pad_token": "<|endoftext|>",
27
+ "padding_side": "left",
28
+ "processor_class": "ColQwen2Processor",
29
+ "split_special_tokens": false,
30
+ "tokenizer_class": "Qwen2Tokenizer",
31
+ "unk_token": null
32
+ }