neeeeser commited on
Commit
f6ebb16
·
0 Parent(s):

Release hs-rerank-1

Browse files
.gitattributes ADDED
@@ -0,0 +1,38 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ *.7z filter=lfs diff=lfs merge=lfs -text
2
+ *.arrow filter=lfs diff=lfs merge=lfs -text
3
+ *.bin filter=lfs diff=lfs merge=lfs -text
4
+ *.bz2 filter=lfs diff=lfs merge=lfs -text
5
+ *.ckpt filter=lfs diff=lfs merge=lfs -text
6
+ *.ftz filter=lfs diff=lfs merge=lfs -text
7
+ *.gz filter=lfs diff=lfs merge=lfs -text
8
+ *.h5 filter=lfs diff=lfs merge=lfs -text
9
+ *.joblib filter=lfs diff=lfs merge=lfs -text
10
+ *.lfs.* filter=lfs diff=lfs merge=lfs -text
11
+ *.mlmodel filter=lfs diff=lfs merge=lfs -text
12
+ *.model filter=lfs diff=lfs merge=lfs -text
13
+ *.msgpack filter=lfs diff=lfs merge=lfs -text
14
+ *.npy filter=lfs diff=lfs merge=lfs -text
15
+ *.npz filter=lfs diff=lfs merge=lfs -text
16
+ *.onnx filter=lfs diff=lfs merge=lfs -text
17
+ *.ot filter=lfs diff=lfs merge=lfs -text
18
+ *.parquet filter=lfs diff=lfs merge=lfs -text
19
+ *.pb filter=lfs diff=lfs merge=lfs -text
20
+ *.pickle filter=lfs diff=lfs merge=lfs -text
21
+ *.pkl filter=lfs diff=lfs merge=lfs -text
22
+ *.pt filter=lfs diff=lfs merge=lfs -text
23
+ *.pth filter=lfs diff=lfs merge=lfs -text
24
+ *.rar filter=lfs diff=lfs merge=lfs -text
25
+ *.safetensors filter=lfs diff=lfs merge=lfs -text
26
+ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
27
+ *.tar.* filter=lfs diff=lfs merge=lfs -text
28
+ *.tar filter=lfs diff=lfs merge=lfs -text
29
+ *.tflite filter=lfs diff=lfs merge=lfs -text
30
+ *.tgz filter=lfs diff=lfs merge=lfs -text
31
+ *.wasm filter=lfs diff=lfs merge=lfs -text
32
+ *.xz 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
+ tokenizer.json filter=lfs diff=lfs merge=lfs -text
37
+ assets/banner.png filter=lfs diff=lfs merge=lfs -text
38
+ assets/benchmarks.png filter=lfs diff=lfs merge=lfs -text
README.md ADDED
@@ -0,0 +1,155 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ license: mit
3
+ base_model: jhu-clsp/mmBERT-small
4
+ base_model_relation: finetune
5
+ library_name: sentence-transformers
6
+ pipeline_tag: text-ranking
7
+ language:
8
+ - en
9
+ - es
10
+ - fr
11
+ - de
12
+ - pt
13
+ - ja
14
+ - ko
15
+ - zh
16
+ tags:
17
+ - sentence-transformers
18
+ - cross-encoder
19
+ - reranker
20
+ - multilingual
21
+ - onnx
22
+ - text-embeddings-inference
23
+ - hindsight
24
+ ---
25
+
26
+ ![Hindsight](assets/banner.png)
27
+
28
+ # hs-rerank-1
29
+
30
+ hs-rerank-1 is a multilingual cross-encoder reranker built for [Hindsight](https://github.com/vectorize-io/hindsight).
31
+ It reads a query and a document together and returns a relevance score.
32
+
33
+ ## Highlights
34
+
35
+ - **Multilingual:** English, Spanish, French, German, Portuguese, Japanese, Korean and Chinese
36
+ (Simplified and Traditional).
37
+ - **Long inputs:** up to 8,192 tokens per query and document pair.
38
+ - **Small:** 114M parameters. 98M of them are the token embedding table, so each forward pass
39
+ runs a 15M-parameter transformer.
40
+ - **CPU and GPU:** ships an int8 ONNX export for CPU, and safetensors for GPU in FP16.
41
+ - **Serves on TEI:** CPU and GPU images.
42
+
43
+ ## Model overview
44
+
45
+ | | |
46
+ |---|---|
47
+ | Model type | Cross-encoder reranker |
48
+ | Base model | `jhu-clsp/mmBERT-small` |
49
+ | Parameters | 114M |
50
+ | Languages | en, es, fr, de, pt, ja, ko, zh |
51
+ | Context length | 8,192 tokens |
52
+ | Output | One relevance score per query and document pair |
53
+ | Formats | safetensors stored in FP16 (FP32 copy on the `fp32` branch), ONNX (`onnx/model.onnx`, int8 vocabulary table) |
54
+
55
+ ## Evaluation
56
+
57
+ ![hs-rerank-1 benchmarks](assets/benchmarks.png)
58
+
59
+ ## Usage
60
+
61
+ ### Sentence Transformers
62
+
63
+ ```bash
64
+ pip install -U sentence-transformers
65
+ ```
66
+
67
+ ```python
68
+ from sentence_transformers import CrossEncoder
69
+
70
+ model = CrossEncoder("hindsight-ai/hs-rerank-1")
71
+
72
+ query = "¿Qué app de presupuesto estoy creando?"
73
+ documents = [
74
+ "El usuario quiere tooltips en su app de presupuesto.",
75
+ "El usuario corre los domingos por la mañana.",
76
+ ]
77
+
78
+ print(model.rank(query, documents))
79
+ # [{'corpus_id': 0, 'score': 0.9647}, {'corpus_id': 1, 'score': 0.0003}]
80
+ ```
81
+
82
+ `predict` and `rank` return scores between 0 and 1. Pass `activation_fn=torch.nn.Identity()`
83
+ for raw logits.
84
+
85
+ ### Text Embeddings Inference
86
+
87
+ CPU (uses `onnx/model.onnx`):
88
+
89
+ ```bash
90
+ docker run -p 8080:80 \
91
+ ghcr.io/huggingface/text-embeddings-inference:cpu-1.9.3 \
92
+ --model-id hindsight-ai/hs-rerank-1 --auto-truncate
93
+ ```
94
+
95
+ GPU:
96
+
97
+ ```bash
98
+ docker run --gpus all -p 8080:80 \
99
+ ghcr.io/huggingface/text-embeddings-inference:89-1.9.3 \
100
+ --model-id hindsight-ai/hs-rerank-1 --auto-truncate
101
+ ```
102
+
103
+ Use the GPU image tag for your GPU: `89-1.9.3` for L4 and other Ada GPUs, `1.9.3` for A100
104
+ and H100.
105
+
106
+ ```bash
107
+ curl 127.0.0.1:8080/rerank \
108
+ -H 'Content-Type: application/json' \
109
+ -d '{
110
+ "query": "¿Qué app de presupuesto estoy creando?",
111
+ "texts": [
112
+ "El usuario quiere tooltips en su app de presupuesto.",
113
+ "El usuario corre los domingos por la mañana."
114
+ ]
115
+ }'
116
+ ```
117
+
118
+ ### Hindsight
119
+
120
+ ```bash
121
+ HINDSIGHT_API_RERANKER_PROVIDER=local
122
+ HINDSIGHT_API_RERANKER_LOCAL_MODEL=hindsight-ai/hs-rerank-1
123
+ ```
124
+
125
+ Or point Hindsight at a TEI server:
126
+
127
+ ```bash
128
+ HINDSIGHT_API_RERANKER_PROVIDER=tei
129
+ HINDSIGHT_API_RERANKER_TEI_URL=http://localhost:8080
130
+ ```
131
+
132
+ ### Hindsight Inference
133
+
134
+ hs-rerank-1 is also served at `https://inference.hindsight.vectorize.io`. To use it from
135
+ Hindsight:
136
+
137
+ ```bash
138
+ HINDSIGHT_API_RERANKER_PROVIDER=hindsight
139
+ HINDSIGHT_API_RERANKER_HINDSIGHT_API_KEY=<your Hindsight Inference API key>
140
+ ```
141
+
142
+ ## License
143
+
144
+ MIT
145
+
146
+ ## Citation
147
+
148
+ ```bibtex
149
+ @misc{hindsightai2026hsrerank1,
150
+ title = {hs-rerank-1},
151
+ author = {{Hindsight AI}},
152
+ year = {2026},
153
+ url = {https://huggingface.co/hindsight-ai/hs-rerank-1}
154
+ }
155
+ ```
assets/banner.png ADDED

Git LFS Details

  • SHA256: 3b17109164e78bd1ab73d5ffb225dcdf6f608f9360622263425a18ac72d31b8e
  • Pointer size: 131 Bytes
  • Size of remote file: 379 kB
assets/benchmarks.png ADDED

Git LFS Details

  • SHA256: abbeeafc6fc7c60d4e5122135ffbad2319ef4ee73a648c61db145906ae6e110b
  • Pointer size: 131 Bytes
  • Size of remote file: 251 kB
config.json ADDED
@@ -0,0 +1,72 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "architectures": [
3
+ "ModernBertForSequenceClassification"
4
+ ],
5
+ "attention_bias": false,
6
+ "attention_dropout": 0.0,
7
+ "bos_token_id": 1,
8
+ "classifier_activation": "gelu_pytorch_tanh",
9
+ "classifier_bias": false,
10
+ "classifier_dropout": 0.0,
11
+ "classifier_pooling": "cls",
12
+ "cls_token_id": 1,
13
+ "decoder_bias": true,
14
+ "deterministic_flash_attn": true,
15
+ "dtype": "float32",
16
+ "embedding_dropout": 0.0,
17
+ "eos_token_id": 1,
18
+ "global_attn_every_n_layers": 3,
19
+ "global_rope_theta": 160000.0,
20
+ "gradient_checkpointing": false,
21
+ "hidden_activation": "gelu_pytorch_tanh",
22
+ "hidden_size": 384,
23
+ "id2label": {
24
+ "0": "LABEL_0"
25
+ },
26
+ "initializer_cutoff_factor": 2.0,
27
+ "initializer_range": 0.02,
28
+ "intermediate_size": 1152,
29
+ "label2id": {
30
+ "LABEL_0": 0
31
+ },
32
+ "layer_norm_eps": 1e-05,
33
+ "layer_types": [
34
+ "full_attention",
35
+ "sliding_attention",
36
+ "sliding_attention",
37
+ "full_attention",
38
+ "sliding_attention",
39
+ "sliding_attention",
40
+ "full_attention",
41
+ "sliding_attention"
42
+ ],
43
+ "local_attention": 128,
44
+ "local_rope_theta": 160000.0,
45
+ "mask_token_id": 4,
46
+ "max_position_embeddings": 8192,
47
+ "mlp_bias": false,
48
+ "mlp_dropout": 0.0,
49
+ "model_type": "modernbert",
50
+ "norm_bias": false,
51
+ "norm_eps": 1e-05,
52
+ "num_attention_heads": 6,
53
+ "num_hidden_layers": 8,
54
+ "pad_token_id": 0,
55
+ "position_embedding_type": "sans_pos",
56
+ "rope_parameters": {
57
+ "full_attention": {
58
+ "rope_theta": 160000,
59
+ "rope_type": "default"
60
+ },
61
+ "sliding_attention": {
62
+ "rope_theta": 160000,
63
+ "rope_type": "default"
64
+ }
65
+ },
66
+ "sep_token_id": 1,
67
+ "sparse_pred_ignore_index": -100,
68
+ "sparse_prediction": false,
69
+ "tie_word_embeddings": true,
70
+ "transformers_version": "5.16.1",
71
+ "vocab_size": 256000
72
+ }
config_sentence_transformers.json ADDED
@@ -0,0 +1 @@
 
 
1
+ {"model_type": "CrossEncoder", "activation_fn": "torch.nn.modules.linear.Identity"}
model.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:4a3b0d9a505dd9fe810bfa411e23a45c33d6c6d5801e1b680f390edea7db2782
3
+ size 227593826
onnx/model.onnx ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:c866580692c6bf274b11ca622db4329f4cbfd6f08f96af964badc31d748ef243
3
+ size 160582339
sentence_bert_config.json ADDED
@@ -0,0 +1,4 @@
 
 
 
 
 
1
+ {
2
+ "max_seq_length": 8192,
3
+ "do_lower_case": false
4
+ }
tokenizer.json ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:609d8f4c067cd3950f88594c5a802616cea245823836ef5848ee4fc40aab5b6f
3
+ size 34363188
tokenizer_config.json ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "backend": "tokenizers",
3
+ "bos_token": "<bos>",
4
+ "clean_up_tokenization_spaces": false,
5
+ "cls_token": "<bos>",
6
+ "eos_token": "<eos>",
7
+ "extra_special_tokens": [
8
+ "<start_of_turn>",
9
+ "<end_of_turn>"
10
+ ],
11
+ "mask_token": "<mask>",
12
+ "model_input_names": [
13
+ "input_ids",
14
+ "attention_mask"
15
+ ],
16
+ "model_max_length": 8192,
17
+ "pad_token": "<pad>",
18
+ "padding_side": "right",
19
+ "sep_token": "<eos>",
20
+ "spaces_between_special_tokens": false,
21
+ "tokenizer_class": "TokenizersBackend",
22
+ "unk_token": "<unk>"
23
+ }