Text Classification
Transformers
Safetensors
sentence-transformers
English
Chinese
qwen3
text-generation
reranker
memory
agent
cross-encoder
text-embeddings-inference
Instructions to use IAAR-Shanghai/MemReranker-4B with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use IAAR-Shanghai/MemReranker-4B with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-classification", model="IAAR-Shanghai/MemReranker-4B")# Load model directly from transformers import AutoTokenizer, AutoModelForCausalLM tokenizer = AutoTokenizer.from_pretrained("IAAR-Shanghai/MemReranker-4B") model = AutoModelForCausalLM.from_pretrained("IAAR-Shanghai/MemReranker-4B") - sentence-transformers
How to use IAAR-Shanghai/MemReranker-4B with sentence-transformers:
from sentence_transformers import CrossEncoder model = CrossEncoder("IAAR-Shanghai/MemReranker-4B") query = "Which planet is known as the Red Planet?" passages = [ "Venus is often called Earth's twin because of its similar size and proximity.", "Mars, known for its reddish appearance, is often referred to as the Red Planet.", "Jupiter, the largest planet in our solar system, has a prominent red spot.", "Saturn, famous for its rings, is sometimes mistaken for the Red Planet." ] scores = model.predict([(query, passage) for passage in passages]) print(scores) - Notebooks
- Google Colab
- Kaggle
Integrate with Sentence Transformers v5.4 (#1)
Browse files- Mirror Qwen3-Reranker-4B integration of Sentence Transformers (13fa9ca18b42b11da229dd6885d063e59b706573)
- 1_LogitScore/config.json +4 -0
- chat_template.jinja +15 -85
- config_sentence_transformers.json +12 -0
- modules.json +14 -0
- sentence_bert_config.json +15 -0
- special_tokens_map.json +31 -0
1_LogitScore/config.json
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"true_token_id": 9693,
|
| 3 |
+
"false_token_id": 2152
|
| 4 |
+
}
|
chat_template.jinja
CHANGED
|
@@ -1,85 +1,15 @@
|
|
| 1 |
-
{%-
|
| 2 |
-
|
| 3 |
-
|
| 4 |
-
|
| 5 |
-
|
| 6 |
-
|
| 7 |
-
|
| 8 |
-
|
| 9 |
-
|
| 10 |
-
|
| 11 |
-
|
| 12 |
-
|
| 13 |
-
|
| 14 |
-
|
| 15 |
-
|
| 16 |
-
{%- endif %}
|
| 17 |
-
{%- set ns = namespace(multi_step_tool=true, last_query_index=messages|length - 1) %}
|
| 18 |
-
{%- for message in messages[::-1] %}
|
| 19 |
-
{%- set index = (messages|length - 1) - loop.index0 %}
|
| 20 |
-
{%- if ns.multi_step_tool and message.role == "user" and not(message.content.startswith('<tool_response>') and message.content.endswith('</tool_response>')) %}
|
| 21 |
-
{%- set ns.multi_step_tool = false %}
|
| 22 |
-
{%- set ns.last_query_index = index %}
|
| 23 |
-
{%- endif %}
|
| 24 |
-
{%- endfor %}
|
| 25 |
-
{%- for message in messages %}
|
| 26 |
-
{%- if (message.role == "user") or (message.role == "system" and not loop.first) %}
|
| 27 |
-
{{- '<|im_start|>' + message.role + '\n' + message.content + '<|im_end|>' + '\n' }}
|
| 28 |
-
{%- elif message.role == "assistant" %}
|
| 29 |
-
{%- set content = message.content %}
|
| 30 |
-
{%- set reasoning_content = '' %}
|
| 31 |
-
{%- if message.reasoning_content is defined and message.reasoning_content is not none %}
|
| 32 |
-
{%- set reasoning_content = message.reasoning_content %}
|
| 33 |
-
{%- else %}
|
| 34 |
-
{%- if '</think>' in message.content %}
|
| 35 |
-
{%- set content = message.content.split('</think>')[-1].lstrip('\n') %}
|
| 36 |
-
{%- set reasoning_content = message.content.split('</think>')[0].rstrip('\n').split('<think>')[-1].lstrip('\n') %}
|
| 37 |
-
{%- endif %}
|
| 38 |
-
{%- endif %}
|
| 39 |
-
{%- if loop.index0 > ns.last_query_index %}
|
| 40 |
-
{%- if loop.last or (not loop.last and reasoning_content) %}
|
| 41 |
-
{{- '<|im_start|>' + message.role + '\n<think>\n' + reasoning_content.strip('\n') + '\n</think>\n\n' + content.lstrip('\n') }}
|
| 42 |
-
{%- else %}
|
| 43 |
-
{{- '<|im_start|>' + message.role + '\n' + content }}
|
| 44 |
-
{%- endif %}
|
| 45 |
-
{%- else %}
|
| 46 |
-
{{- '<|im_start|>' + message.role + '\n' + content }}
|
| 47 |
-
{%- endif %}
|
| 48 |
-
{%- if message.tool_calls %}
|
| 49 |
-
{%- for tool_call in message.tool_calls %}
|
| 50 |
-
{%- if (loop.first and content) or (not loop.first) %}
|
| 51 |
-
{{- '\n' }}
|
| 52 |
-
{%- endif %}
|
| 53 |
-
{%- if tool_call.function %}
|
| 54 |
-
{%- set tool_call = tool_call.function %}
|
| 55 |
-
{%- endif %}
|
| 56 |
-
{{- '<tool_call>\n{"name": "' }}
|
| 57 |
-
{{- tool_call.name }}
|
| 58 |
-
{{- '", "arguments": ' }}
|
| 59 |
-
{%- if tool_call.arguments is string %}
|
| 60 |
-
{{- tool_call.arguments }}
|
| 61 |
-
{%- else %}
|
| 62 |
-
{{- tool_call.arguments | tojson }}
|
| 63 |
-
{%- endif %}
|
| 64 |
-
{{- '}\n</tool_call>' }}
|
| 65 |
-
{%- endfor %}
|
| 66 |
-
{%- endif %}
|
| 67 |
-
{{- '<|im_end|>\n' }}
|
| 68 |
-
{%- elif message.role == "tool" %}
|
| 69 |
-
{%- if loop.first or (messages[loop.index0 - 1].role != "tool") %}
|
| 70 |
-
{{- '<|im_start|>user' }}
|
| 71 |
-
{%- endif %}
|
| 72 |
-
{{- '\n<tool_response>\n' }}
|
| 73 |
-
{{- message.content }}
|
| 74 |
-
{{- '\n</tool_response>' }}
|
| 75 |
-
{%- if loop.last or (messages[loop.index0 + 1].role != "tool") %}
|
| 76 |
-
{{- '<|im_end|>\n' }}
|
| 77 |
-
{%- endif %}
|
| 78 |
-
{%- endif %}
|
| 79 |
-
{%- endfor %}
|
| 80 |
-
{%- if add_generation_prompt %}
|
| 81 |
-
{{- '<|im_start|>assistant\n' }}
|
| 82 |
-
{%- if enable_thinking is defined and enable_thinking is false %}
|
| 83 |
-
{{- '<think>\n\n</think>\n\n' }}
|
| 84 |
-
{%- endif %}
|
| 85 |
-
{%- endif %}
|
|
|
|
| 1 |
+
{%- set instruction = messages | selectattr("role", "eq", "system") | map(attribute="content") | first | default("Given a web search query, retrieve relevant passages that answer the query") -%}
|
| 2 |
+
{%- set query_text = messages | selectattr("role", "eq", "query") | map(attribute="content") | first -%}
|
| 3 |
+
{%- set document_text = messages | selectattr("role", "eq", "document") | map(attribute="content") | first -%}
|
| 4 |
+
<|im_start|>system
|
| 5 |
+
Judge whether the Document meets the requirements based on the Query and the Instruct provided. Note that the answer can only be "yes" or "no".<|im_end|>
|
| 6 |
+
<|im_start|>user
|
| 7 |
+
<Instruct>: {{ instruction }}
|
| 8 |
+
<Query>: {{ query_text }}
|
| 9 |
+
<Document>: {{ document_text }}<|im_end|>
|
| 10 |
+
<|im_start|>assistant
|
| 11 |
+
<think>
|
| 12 |
+
|
| 13 |
+
</think>
|
| 14 |
+
|
| 15 |
+
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
config_sentence_transformers.json
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"__version__": {
|
| 3 |
+
"pytorch": "2.10.0+cu128",
|
| 4 |
+
"sentence_transformers": "5.4.0"
|
| 5 |
+
},
|
| 6 |
+
"activation_fn": "torch.nn.modules.linear.Identity",
|
| 7 |
+
"default_prompt_name": "query",
|
| 8 |
+
"model_type": "CrossEncoder",
|
| 9 |
+
"prompts": {
|
| 10 |
+
"query": "Given a web search query, retrieve relevant passages that answer the query"
|
| 11 |
+
}
|
| 12 |
+
}
|
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_LogitScore",
|
| 12 |
+
"type": "sentence_transformers.cross_encoder.modules.logit_score.LogitScore"
|
| 13 |
+
}
|
| 14 |
+
]
|
sentence_bert_config.json
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"transformer_task": "text-generation",
|
| 3 |
+
"modality_config": {
|
| 4 |
+
"text": {
|
| 5 |
+
"method": "forward",
|
| 6 |
+
"method_output_name": "logits"
|
| 7 |
+
},
|
| 8 |
+
"message": {
|
| 9 |
+
"method": "forward",
|
| 10 |
+
"method_output_name": "logits",
|
| 11 |
+
"format": "flat"
|
| 12 |
+
}
|
| 13 |
+
},
|
| 14 |
+
"module_output_name": "causal_logits"
|
| 15 |
+
}
|
special_tokens_map.json
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"additional_special_tokens": [
|
| 3 |
+
"<|im_start|>",
|
| 4 |
+
"<|im_end|>",
|
| 5 |
+
"<|object_ref_start|>",
|
| 6 |
+
"<|object_ref_end|>",
|
| 7 |
+
"<|box_start|>",
|
| 8 |
+
"<|box_end|>",
|
| 9 |
+
"<|quad_start|>",
|
| 10 |
+
"<|quad_end|>",
|
| 11 |
+
"<|vision_start|>",
|
| 12 |
+
"<|vision_end|>",
|
| 13 |
+
"<|vision_pad|>",
|
| 14 |
+
"<|image_pad|>",
|
| 15 |
+
"<|video_pad|>"
|
| 16 |
+
],
|
| 17 |
+
"eos_token": {
|
| 18 |
+
"content": "<|im_end|>",
|
| 19 |
+
"lstrip": false,
|
| 20 |
+
"normalized": false,
|
| 21 |
+
"rstrip": false,
|
| 22 |
+
"single_word": false
|
| 23 |
+
},
|
| 24 |
+
"pad_token": {
|
| 25 |
+
"content": "<|endoftext|>",
|
| 26 |
+
"lstrip": false,
|
| 27 |
+
"normalized": false,
|
| 28 |
+
"rstrip": false,
|
| 29 |
+
"single_word": false
|
| 30 |
+
}
|
| 31 |
+
}
|