japanese-reranker-small-v2-coreml
Model Summary
This is an unofficial Core ML conversion of hotchpotch/japanese-reranker-small-v2 (a lightweight Japanese reranker based on ModernBERT), for running directly on iOS/macOS. All credit for the original model goes to its author.
Output: a relevance score in [0, 1] (sigmoid-applied logit). The query/document pair is tokenized together as a single sequence.
Models are split by fixed sequence length.
Live demo: Ruri Atlas — explore Japanese & English sentence embeddings as a 3-D map in your browser (WebGPU), switch embedding models, toggle the reranker, and see where a prompt-injection lands. Nothing is sent to a server.
File list
| File | Seq len | Precision | Approx. size |
|---|---|---|---|
japanese-reranker-small-v2_seq128_fp16.mlpackage |
128 | fp16 | ~280MB |
japanese-reranker-small-v2_seq256_fp16.mlpackage |
256 | fp16 | ~280MB |
japanese-reranker-small-v2_seq512_fp16.mlpackage |
512 | fp16 | ~280MB |
japanese-reranker-small-v2_seq128_int8.mlpackage |
128 | int8 | ~140MB |
japanese-reranker-small-v2_seq256_int8.mlpackage |
256 | int8 | ~140MB |
japanese-reranker-small-v2_seq512_int8.mlpackage |
512 | int8 | ~140MB |
Swift (Core ML) usage example
import CoreML
let configuration = MLModelConfiguration()
configuration.computeUnits = .all
let model = try MLModel(
contentsOf: Bundle.main.url(forResource: "japanese-reranker-small-v2_seq256_int8", withExtension: "mlmodelc")!,
configuration: configuration
)
let inputIDs: MLMultiArray = ... // shape [1, 256], Int32 (query+document tokenized as a pair)
let attentionMask: MLMultiArray = ... // shape [1, 256], Int32
let input = try MLDictionaryFeatureProvider(dictionary: [
"input_ids": MLFeatureValue(multiArray: inputIDs),
"attention_mask": MLFeatureValue(multiArray: attentionMask),
])
let output = try model.prediction(from: input)
let score = output.featureValue(for: "relevance_score")!.multiArrayValue![0]
// relevance score in [0, 1]
Python verification example
import numpy as np
import coremltools as ct
from transformers import AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("hotchpotch/japanese-reranker-small-v2")
mlmodel = ct.models.MLModel("japanese-reranker-small-v2_seq256_int8.mlpackage")
query = "瑠璃色はどんな色?"
document = "瑠璃色(るりいろ)は、紫みを帯びた濃い青。"
enc = tokenizer(query, document, return_tensors="np", padding="max_length", truncation=True, max_length=256)
out = mlmodel.predict({
"input_ids": enc["input_ids"].astype(np.int32),
"attention_mask": enc["attention_mask"].astype(np.int32),
})
print(out["relevance_score"])
Notes
- This is a community conversion, not an official release from the original author.
Security
Audited against its upstream with model-audit-lite: weight format, bundled code, and a machine-readable lineage (ML-BOM). Details, checksums and how to reproduce: SECURITY.md.
モデルの概要
hotchpotch/japanese-reranker-small-v2(軽量な日本語reranker、ModernBERTベース)を、iOS/macOS (Core ML) で直接動かせるように変換したものです。元モデルの著作権はその作者に帰属します。
出力: 0〜1の関連度スコア(sigmoid適用済みのlogit)。query/documentのペアを1つのシーケンスとしてまとめてトークナイズして入力します。
系列長ごとに固定長でモデルを分けています。
ライブデモ: Ruri Atlas — 日本語・英語の文の埋め込みを、ブラウザ上(WebGPU)で3Dの地図として見られます。埋め込みモデルの切り替え、リランカーのON/OFF、プロンプトインジェクションの効き方の可視化もできます。文章はサーバーに送られません。
ファイル一覧
| ファイル | 系列長 | 精度 | サイズ目安 |
|---|---|---|---|
japanese-reranker-small-v2_seq128_fp16.mlpackage |
128 | fp16 | 約280MB |
japanese-reranker-small-v2_seq256_fp16.mlpackage |
256 | fp16 | 約280MB |
japanese-reranker-small-v2_seq512_fp16.mlpackage |
512 | fp16 | 約280MB |
japanese-reranker-small-v2_seq128_int8.mlpackage |
128 | int8 | 約140MB |
japanese-reranker-small-v2_seq256_int8.mlpackage |
256 | int8 | 約140MB |
japanese-reranker-small-v2_seq512_int8.mlpackage |
512 | int8 | 約140MB |
Swift (Core ML) での使用例
import CoreML
let configuration = MLModelConfiguration()
configuration.computeUnits = .all
let model = try MLModel(
contentsOf: Bundle.main.url(forResource: "japanese-reranker-small-v2_seq256_int8", withExtension: "mlmodelc")!,
configuration: configuration
)
let inputIDs: MLMultiArray = ... // shape [1, 256], Int32(query+documentをペアでトークナイズ)
let attentionMask: MLMultiArray = ... // shape [1, 256], Int32
let input = try MLDictionaryFeatureProvider(dictionary: [
"input_ids": MLFeatureValue(multiArray: inputIDs),
"attention_mask": MLFeatureValue(multiArray: attentionMask),
])
let output = try model.prediction(from: input)
let score = output.featureValue(for: "relevance_score")!.multiArrayValue![0]
// 0〜1の関連度スコア
Python での検証例
import numpy as np
import coremltools as ct
from transformers import AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("hotchpotch/japanese-reranker-small-v2")
mlmodel = ct.models.MLModel("japanese-reranker-small-v2_seq256_int8.mlpackage")
query = "瑠璃色はどんな色?"
document = "瑠璃色(るりいろ)は、紫みを帯びた濃い青。"
enc = tokenizer(query, document, return_tensors="np", padding="max_length", truncation=True, max_length=256)
out = mlmodel.predict({
"input_ids": enc["input_ids"].astype(np.int32),
"attention_mask": enc["attention_mask"].astype(np.int32),
})
print(out["relevance_score"])
備考
- 本変換は非公式のコミュニティ版です。
セキュリティー
model-audit-lite で変換元と突き合わせて監査済みです(重みの形式、同梱コード、機械可読な系譜=ML-BOM)。詳細・チェックサム・再現方法は SECURITY.md をご覧ください。
- Downloads last month
- 63
Model tree for masahiroid/japanese-reranker-small-v2-coreml
Base model
sbintuitions/modernbert-ja-70m