モデル別実行レシピ

小型モデルで英語文書を検索する UIBK-Embedding-v1

英語チェックポイントなので英語文書の検索実験に使います。

UIBK-Embedding-v1は179Mの英語埋め込みモデルです。denseとトークン1単位のlate interactionを組み合わせるため、文書規模と索引容量を一緒に評価します。

実行条件と要点
  • 英語専用の179Mチェックポイントです。
  • プール済みベクトルだけでなくトークン別late-interaction容量も測定します。

英語文書の検索候補を作るモデル

UIBK-Embedding-v1は英語の質問と文書を検索表現にする179Mモデルです。denseベクトルとトークン単位のlate-interactionスコアをPLAID検索で組み合わせます。モデルカードの検索経路に沿って評価します。

製品サポート文書500件で「battery health report」に答えるページを探す例では、質問と正解ページを固定し、索引を100・500・2,000件へ増やします。検索成功率とトークン単位の容量変化を確認できます。

文書が検索用の段落に分かれ、一部がローカルPCへ送られる様子
文書が増えるとトークン単位の表現も蓄積します。

PLAID経路と言語を合わせます

この例はPyLate ColBERTとPLAIDを接続する公開の検索経路です。dense単独のablationは含みません。独立した./uibk-plaid-demo folderとsupport-demo index名を使い、既存索引を変更しません。

文書4件を登録し質問1件を送ると、PLAID検索のIDとscoreを表示します。この小さな例はAPI2経路の確認用です。Recall@10比較には正解文書を付けた大きな英語質問セットを用意します。

独立したPLAID demo indexに4文書を登録して検索
from pylate import indexes, models, retrieve

model = models.ColBERT("DataScience-UIBK/uibk-embedding-v1", trust_remote_code=True)
document_ids = ["refund", "delivery", "battery", "warranty"]
documents = [
    "Refund requests are processed within five business days after cancellation.",
    "Delivery addresses can be changed before an order is prepared.",
    "The battery health report is available in Settings under Power.",
    "The limited warranty lasts for two years from the purchase date.",
]
index = indexes.PLAID(index_folder="./uibk-plaid-demo", index_name="support-demo", override=False)
doc_vectors = model.encode(documents, is_query=False, prompt_name="document")
index.add_documents(documents_ids=document_ids, documents_embeddings=doc_vectors)
search = retrieve.ColBERT(index=index)
query_vectors = model.encode(
    ["Where can I see the battery health report?"],
    is_query=True,
    prompt_name="query",
)
for result in search.retrieve(queries_embeddings=query_vectors, k=3)[0]:
    print(result)
公式PyLate経路をインストール
python -m venv .venv
source .venv/bin/activate
python -m pip install -U pylate 'transformers>=5.3' 'sentence-transformers>=5.3'
質問ごとの正解根拠をカードに整理した様子
固定した正解質問で英語検索を比較します。

ベクトル容量と索引全体を分けます

文書数を増やしながら埋め込み時間・検索遅延・Recall@10・PLAID索引フォルダーの実容量を記録します。late interactionはトークン表現を保持するため、pool済みベクトルのバイト数だけでは全容量を表しません。

200件の質問で正解文書が上位10件に入る割合を記録します。メモリ不足時はbatchサイズか索引設定を1つずつ変更します。品質と遅延が手元の機器に合えば採用できます。

英語以外の文書を扱うなら、このモデルを基準にしないでください。英語でも検索指標が目標に届かない場合は、文の分割方法とチャンクサイズから変えてみてください。

2台のPCで文書の索引作成と検索結果を比較する様子
精度と実際の索引容量を一緒に測定します。

用語の注釈

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

    本文に戻る
  2. API — 別のコードからプログラムの機能を呼び出すための決められたインターフェースです。

    本文に戻る

よくある質問

この記事で最初に確認すべきことは何ですか?
UIBK-Embedding-v1は179Mの英語埋め込みモデルです。denseとトークン単位のlate interactionを組み合わせるため、文書規模と索引容量を一緒に評価します。
必要なメモリはどのくらいですか?
200件の質問で正解文書が上位10件に入る割合を記録します。メモリ不足時はbatchサイズか索引設定を1つずつ変更します。品質と遅延が手元の機器に合えば採用できます。