Research / 情報検索 · 基盤技術

文をベクトルにして探す Sentence-BERTの速度と精度

BERTを文の類似度比較へ直接使う計算負荷を、文ごとの埋め込みで減らした。検索の速さと、対にした文章を直接読むモデルとの精度差を両方確認する。原論文の実験条件に沿って限界も整理する。

論文初公開(arXiv)
参照版
v1
TRAIL公開
  • 対の文を毎回BERTへ入れる代わりに、各文を一度だけベクトル化する。
  • 1万文の類似ペア探索は、論文の見積もりでBERT約65時間からSBERT約5秒へ短縮した。
  • 計算速度の比較と、類似度の精度比較は別の条件で読む必要がある。

何を確かめた研究か

文章を探す時、候補の全組み合わせをBERTでペア入力すれば精密に比較できるが、候補が多いと組み合わせは急増する。Sentence-BERTは、同じ重みを使う二本のBERTで各文章を独立にベクトル化し、余弦類似度で比較できる表現を学習した。論文は意味類似度と転移課題での成績、検索時の計算量を調べた。

どう検証したか

自然言語推論データで文の関係を教師信号にし、必要に応じてSTSの連続した類似度点数でも追加学習した。意味類似度の複数集合では、人間の評点と余弦類似度の順位相関を測った。直接二文を同時入力するBERT、既存の文ベクトル手法とも比較した。論文は分類や文クラスタリングも試すが、どの課題でも同じベクトルが最適だとは言っていない。

何が分かったか

要旨は1万文から最も似る組を探す場合、全ペアBERTなら約5000万回の推論で約65時間、SBERTなら1万文の埋め込み生成が約5秒で、余弦類似度の計算が約0.01秒と説明する。5秒は埋め込み生成の時間であり、比較の費用を分けて読む。前計算した候補ベクトルを使う運用なら、問い合わせ時の費用をさらに分けて考える。

表2のSTS benchmarkでは、STS向けに調整したBERT-NLI-STSb-largeのSpearman相関は88.77、SBERT-NLI-STSb-largeは86.10だった。SBERTの速さにはこの設定での精度差もある。他の表ではSTS専用学習をしない条件や転移課題があり、都合のよい値を混ぜて比較しない。

限界は何か

意味類似度のベンチマークは、企業文書の版違いや権限、最新性を評価しない。長文を一つのベクトルへ圧縮すると、少数の重要な語が埋もれ得る。文ごとのベクトルは大量候補の絞り込みに向く一方、最終判定では文の対を直接読む方式が役立つ場合もある。

仕事との接点

社内検索ではまず取りこぼしを許せる候補数と応答時間を決める。埋め込み検索で候補を絞り、必要なら別のモデルで並べ替える。類似文を返すだけでなく、正しい文書版に到達した割合を測る。

01

出典

Research の一覧へ戻る