Japanese Reranker Xsmall V2
模型概述
該模型是一個日語重排序模型,主要用於提升檢索增強生成(RAG)系統的精度,能夠在CPU或邊緣設備上以實用速度運行。
模型特點
小巧快速
在CPU或Apple Silicon環境中也能以實用速度運行
無需昂貴GPU
無需昂貴的GPU資源即可提升RAG系統的精度
邊緣設備友好
適用於邊緣設備部署或低延遲要求的實際環境
高效架構
基於ModernBert的ruri-v3-pt-30m架構優化
模型能力
文本相關性評分
檢索結果重排序
日語文本處理
使用案例
信息檢索
提升RAG系統精度
在檢索增強生成系統中對檢索結果進行重排序
顯著提升檢索結果的相關性
內容推薦
相關文檔排序
對搜索結果或推薦內容進行相關性排序
提高用戶獲取相關信息的效率
🚀 hotchpotch/japanese-reranker-xsmall-v2
這是一個非常小巧且快速的日語重排器模型系列(v2),能夠在多種環境下高效運行,提升文本排序的準確性。
🚀 快速開始
本模型運行需要 transformers
庫的 v4.48 以上版本。
pip install -U "transformers>=4.48.0" sentence-transformers sentencepiece
若 GPU 支持 Flash Attention 2,安裝 flash-attn
庫可實現高速推理。
pip install flash-attn --no-build-isolation
✨ 主要特性
小型重排器的特點
- 運行速度快:
japanese-reranker-tiny-v2
和japanese-reranker-xsmall-v2
可在 CPU 或 Apple 硅芯片環境下以實用速度運行。 - 節省資源:無需昂貴的 GPU 資源,就能提升 RAG 系統的精度。
- 應用場景廣:可用於邊緣設備部署或對低延遲有要求的生產環境。
- 模型基礎好:基於 ModernBert 的 ruri-v3-pt-30m 模型構建。
模型對比
模型名 | 層數 | 隱藏層大小 | 得分(avg) | 速度(GPU) |
---|---|---|---|---|
hotchpotch/japanese-reranker-tiny-v2 | 3 | 256 | 0.8138 | 2.1s |
hotchpotch/japanese-reranker-xsmall-v2 | 10 | 256 | 0.8699 | 6.5s |
hotchpotch/japanese-reranker-cross-encoder-xsmall-v1 | 6 | 384 | 0.8131 | 20.5s |
hotchpotch/japanese-reranker-cross-encoder-small-v1 | 12 | 384 | 0.8254 | 40.3s |
hotchpotch/japanese-reranker-cross-encoder-base-v1 | 12 | 768 | 0.8484 | 96.8s |
hotchpotch/japanese-reranker-cross-encoder-large-v1 | 24 | 1024 | 0.8661 | 312.2s |
hotchpotch/japanese-bge-reranker-v2-m3-v1 | 24 | 1024 | 0.8584 | 310.6s |
評估結果
模型名 | 平均分 | JQaRA | JaCWIR | MIRACL | JSQuAD |
---|---|---|---|---|---|
japanese-reranker-tiny-v2 | 0.8138 | 0.6455 | 0.9287 | 0.7201 | 0.9608 |
japanese-reranker-xsmall-v2 | 0.8699 | 0.7403 | 0.9409 | 0.8206 | 0.9776 |
japanese-reranker-cross-encoder-xsmall-v1 | 0.8131 | 0.6136 | 0.9376 | 0.7411 | 0.9602 |
japanese-reranker-cross-encoder-small-v1 | 0.8254 | 0.6247 | 0.9390 | 0.7776 | 0.9604 |
japanese-reranker-cross-encoder-base-v1 | 0.8484 | 0.6711 | 0.9337 | 0.8180 | 0.9708 |
japanese-reranker-cross-encoder-large-v1 | 0.8661 | 0.7099 | 0.9364 | 0.8406 | 0.9773 |
japanese-bge-reranker-v2-m3-v1 | 0.8584 | 0.6918 | 0.9372 | 0.8423 | 0.9624 |
bge-reranker-v2-m3 | 0.8512 | 0.6730 | 0.9343 | 0.8374 | 0.9599 |
ruri-v3-reranker-310m | 0.9171 | 0.8688 | 0.9506 | 0.8670 | 0.9820 |
推理速度
以下是對約 15 萬對數據進行重排序時的推理速度結果(不包括分詞時間的純模型推理時間)。MPS(Apple 硅芯片)和 CPU 測量使用 M4 Max,GPU 使用 RTX5090,GPU 處理使用了 flash-attention2。
模型名 | 層數 | 隱藏層大小 | 速度(GPU) | 速度(MPS) | 速度(CPU) |
---|---|---|---|---|---|
japanese-reranker-tiny-v2 | 3 | 256 | 2.1s | 82s | 702s |
japanese-reranker-xsmall-v2 | 10 | 256 | 6.5s | 303s | 2300s |
japanese-reranker-cross-encoder-xsmall-v1 | 6 | 384 | 20.5s | ||
japanese-reranker-cross-encoder-small-v1 | 12 | 384 | 40.3s | ||
japanese-reranker-cross-encoder-base-v1 | 12 | 768 | 96.8s | ||
japanese-reranker-cross-encoder-large-v1 | 24 | 1024 | 312.2s | ||
japanese-bge-reranker-v2-m3-v1 | 24 | 1024 | 310.6s | ||
bge-reranker-v2-m3 | 24 | 1024 | 310.7s | ||
ruri-v3-reranker-310m | 25 | 768 | 81.4s |
推理速度基準測試使用的腳本在此。
💻 使用示例
基礎用法
SentenceTransformers
from sentence_transformers import CrossEncoder
import torch
MODEL_NAME = "hotchpotch/japanese-reranker-xsmall-v2"
model = CrossEncoder(MODEL_NAME)
if model.device == "cuda" or model.device == "mps":
model.model.half()
query = "感動的な映畫について"
passages = [
"深いテーマを持ちながらも、観る人の心を揺さぶる名作。登場人物の心情描寫が秀逸で、ラストは涙なしでは見られない。",
"重要なメッセージ性は評価できるが、暗い話が続くので気分が落ち込んでしまった。もう少し明るい要素があればよかった。",
"どうにもリアリティに欠ける展開が気になった。もっと深みのある人間ドラマが見たかった。",
"アクションシーンが楽しすぎる。見ていて飽きない。ストーリーはシンプルだが、それが逆に良い。",
]
scores = model.predict(
[(query, passage) for passage in passages],
show_progress_bar=True,
)
print("Scores:", scores)
SentenceTransformers + onnx 的使用
若想在 CPU 環境或 arm 環境等中更快運行,可使用 onnx 或量化模型。
pip install onnx onnxruntime accelerate optimum
from sentence_transformers import CrossEncoder
# oxxn のモデルを選ばないと model.onnx が自動で使われる
# onnx_filename = None
# 量子化された最適なモデルを使う場合は、onnx_filename にファイル名を指定する
# onnx_filename = "onnx/model_qint8_avx2.onnx"
onnx_filename = "onnx/model_qint8_arm64.onnx"
if onnx_filename:
model = CrossEncoder(
MODEL_NAME,
device="cpu",
backend="onnx",
model_kwargs={"file_name": onnx_filename},
)
else:
model = CrossEncoder(MODEL_NAME, device="cpu", backend="onnx")
...
HuggingFace transformers
from transformers import AutoTokenizer, AutoModelForSequenceClassification
from torch.nn import Sigmoid
def detect_device():
if torch.cuda.is_available():
return "cuda"
elif hasattr(torch, "mps") and torch.mps.is_available():
return "mps"
return "cpu"
device = detect_device()
tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME)
model = AutoModelForSequenceClassification.from_pretrained(MODEL_NAME)
model.to(device)
model.eval()
if device == "cuda":
model.half()
query = "感動的な映畫について"
passages = [
"深いテーマを持ちながらも、観る人の心を揺さぶる名作。登場人物の心情描寫が秀逸で、ラストは涙なしでは見られない。",
"重要なメッセージ性は評価できるが、暗い話が続くので気分が落ち込んでしまった。もう少し明るい要素があればよかった。",
"どうにもリアリティに欠ける展開が気になった。もっと深みのある人間ドラマが見たかった。",
"アクションシーンが楽しすぎる。見ていて飽きない。ストーリーはシンプルだが、それが逆に良い。",
]
inputs = tokenizer(
[(query, passage) for passage in passages],
padding=True,
truncation=True,
max_length=512,
return_tensors="pt",
)
inputs = {k: v.to(device) for k, v in inputs.items()}
logits = model(**inputs).logits
activation = Sigmoid()
scores = activation(logits).squeeze().tolist()
print("Scores:", scores)
📚 詳細文檔
關於重排器的更多信息、技術報告和評估等內容,請參考以下鏈接:
- とても小さく速く実用的な日本語リランカー japanese-reranker-tiny,xsmall v2 を公開
- 日本語最高性能のRerankerをリリース / そもそも Reranker とは?
- 日本語 Reranker 作成のテクニカルレポート
📄 許可證
本項目採用 MIT License。
Jina Embeddings V3
Jina Embeddings V3 是一個多語言句子嵌入模型,支持超過100種語言,專注於句子相似度和特徵提取任務。
文本嵌入
Transformers 支持多種語言

J
jinaai
3.7M
911
Ms Marco MiniLM L6 V2
Apache-2.0
基於MS Marco段落排序任務訓練的交叉編碼器模型,用於信息檢索中的查詢-段落相關性評分
文本嵌入 英語
M
cross-encoder
2.5M
86
Opensearch Neural Sparse Encoding Doc V2 Distill
Apache-2.0
基於蒸餾技術的稀疏檢索模型,專為OpenSearch優化,支持免推理文檔編碼,在搜索相關性和效率上優於V1版本
文本嵌入
Transformers 英語

O
opensearch-project
1.8M
7
Sapbert From PubMedBERT Fulltext
Apache-2.0
基於PubMedBERT的生物醫學實體表徵模型,通過自對齊預訓練優化語義關係捕捉
文本嵌入 英語
S
cambridgeltl
1.7M
49
Gte Large
MIT
GTE-Large 是一個強大的句子轉換器模型,專注於句子相似度和文本嵌入任務,在多個基準測試中表現出色。
文本嵌入 英語
G
thenlper
1.5M
278
Gte Base En V1.5
Apache-2.0
GTE-base-en-v1.5 是一個英文句子轉換器模型,專注於句子相似度任務,在多個文本嵌入基準測試中表現優異。
文本嵌入
Transformers 支持多種語言

G
Alibaba-NLP
1.5M
63
Gte Multilingual Base
Apache-2.0
GTE Multilingual Base 是一個多語言的句子嵌入模型,支持超過50種語言,適用於句子相似度計算等任務。
文本嵌入
Transformers 支持多種語言

G
Alibaba-NLP
1.2M
246
Polybert
polyBERT是一個化學語言模型,旨在實現完全由機器驅動的超快聚合物信息學。它將PSMILES字符串映射為600維密集指紋,以數值形式表示聚合物化學結構。
文本嵌入
Transformers

P
kuelumbus
1.0M
5
Bert Base Turkish Cased Mean Nli Stsb Tr
Apache-2.0
基於土耳其語BERT的句子嵌入模型,專為語義相似度任務優化
文本嵌入
Transformers 其他

B
emrecan
1.0M
40
GIST Small Embedding V0
MIT
基於BAAI/bge-small-en-v1.5模型微調的文本嵌入模型,通過MEDI數據集與MTEB分類任務數據集訓練,優化了檢索任務的查詢編碼能力。
文本嵌入
Safetensors 英語
G
avsolatorio
945.68k
29
精選推薦AI模型
Llama 3 Typhoon V1.5x 8b Instruct
專為泰語設計的80億參數指令模型,性能媲美GPT-3.5-turbo,優化了應用場景、檢索增強生成、受限生成和推理任務
大型語言模型
Transformers 支持多種語言

L
scb10x
3,269
16
Cadet Tiny
Openrail
Cadet-Tiny是一個基於SODA數據集訓練的超小型對話模型,專為邊緣設備推理設計,體積僅為Cosmo-3B模型的2%左右。
對話系統
Transformers 英語

C
ToddGoldfarb
2,691
6
Roberta Base Chinese Extractive Qa
基於RoBERTa架構的中文抽取式問答模型,適用於從給定文本中提取答案的任務。
問答系統 中文
R
uer
2,694
98