モデル別実行レシピ

UltraBERT-Embed-150Mで英語文書を検索する

backboneではなく検索用Embed-150M checkpointを評価します。

英語文書検索向けの150M embedding modelです。model cardの例はtrust_remote_code=Trueを要求するため、読み込み前にremote codeを確認し、英語検索セットで評価します。

実行条件と要点
  • UltraBERT-Embed-150Mは英語検索用embedding checkpointです。
  • UltraBERT-150M・380M backboneとは区別します。

検索用checkpointを選びます

UltraBERTはencoder backboneと検索用embedding checkpoint1を公開しています。文書検索にはdmis-lab/UltraBERT-Embed-150Mを使い、UltraBERT-150M・UltraBERT-380Mを同じ検索embedderとして扱いません。

公式カードは英語専用・150M parameter・768次元・32K token2・Apache-2.0と記載します。公開MTEBはbenchmark値であり、手元ドメインの精度や機器速度ではありません。

文書が検索用の段落に分かれ、一部がローカルPCへ送られる様子
英語文書・質問・正解IDの固定評価セットを作ります。

同じ英語評価セットで検索します

下のcodeは英語文書3件を埋め込み、1つの質問との類似度順を表示します。Hit@5・Recall@10は集計しないため、model選定には正解付きのより大きなsetを使います。

BGE-M3のような多言語モデルも比較対象にできます。この実験では入力と正解ラベルをすべて英語にそろえ、UltraBERT-Embed-150Mと同じcorpusで比べます。韓国語は韓国語の評価セットで別に確認します。

UltraBERT-Embed-150M — 3文書・1質問の例
from sentence_transformers import SentenceTransformer

model = SentenceTransformer(
    "dmis-lab/UltraBERT-Embed-150M",
    revision="367d5343b5a0164d57b810cedf5de4b8983d5984",
    trust_remote_code=True,
)
documents = [
    "The battery health report is available in Settings under Power.",
    "Refunds are processed within five business days after cancellation.",
    "The delivery address can be changed before the order is prepared.",
]
query = "Where can I view the battery health report?"
doc_vectors = model.encode(documents, normalize_embeddings=True)
query_vector = model.encode(
    [query],
    prompt_name="query",
    normalize_embeddings=True,
)
scores = model.similarity(query_vector, doc_vectors)[0]
for index in scores.argsort(descending=True).tolist():
    print(f"{float(scores[index]):.4f}\t{documents[index]}")
UltraBERT検索環境を導入
python -m venv .venv
source .venv/bin/activate
python -m pip install -U "sentence-transformers>=6.0" "transformers>=5"
質問ごとの正解根拠をカードに整理した様子
文書長と検索順位の変化を記録します。

remote codeと結果を確認します

例はtrust_remote_code=Trueを使用し、model revision 367d5343b5a0164d57b810cedf5de4b8983d5984を固定します。実行前に同revisionのrepository codeを確認してください。

英語benchmark・手元の検索指標・ローカル処理時間を別列に記録します。公開スコアが高くても正解ページの欠落や遅延が目標外なら、chunk規則や候補数を調整して再測定します。

韓国語の文書を検索するなら、このモデルを先に選ばないでください。英語文書の中で該当箇所を探す用途で比較し、他の言語はその言語を明記した埋め込みモデルで別に評価します。

2台のPCで文書の索引作成と検索結果を比較する様子
検索品質と遅延・索引容量を合わせて比較します。

用語の注釈

  1. チェックポイント — 学習済みモデルの重みなどを保存したファイルです。同じモデル系列でも、版や用途によって異なるチェックポイントを使うことがあります。

    本文に戻る
  2. トークン — モデルが入力や出力を分けて処理する単位です。

    本文に戻る

よくある質問

この記事で最初に確認すべきことは何ですか?
英語文書検索向けの150M embedding modelです。model cardの例は`trust_remote_code=True`を要求するため、読み込み前にremote codeを確認し、英語検索セットで評価します。
選ばないほうがよいのはどのような場合ですか?
韓国語の文書を検索するなら、このモデルを先に選ばないでください。英語文書の中で該当箇所を探す用途で比較し、他の言語はその言語を明記した埋め込みモデルで別に評価します。