Closed1
Jina AI「テキスト埋め込みによる語順の捕捉の失敗とその修正方法」
「一生懸命働いている」("Working hard")か「ほとんど働いていない」("hardly working")か?文の中の単語をシャッフルしても、そのテキスト埋め込み間のコサイン類似度は、元の文に比べて驚くほど高いままです。これは、jina-embeddings-v3/v2のようなmean-pooling-based embeddingsだけでなく、bge-1.5のようなCLS-based embeddingsでも同じことが言えます。つまりエンベッディング・モデルは、まだ単なる単語の集まりなのでしょうか?
私たちは次のことを発見しました:
- 短い文は、実際には長い文よりも、埋め込みにおける語順情報の保持が劣っています。 直感的には、短いテキストの方がモデルが適切に処理しやすいと思われるかもしれませんが、私たちの実験では、3~5 トークンの文では、シャッフルされたバージョンとシャッフルされていないバージョン間のコサイン類似度 (約 0.95) が、30 トークンの文 (約 0. 87)よりも高いことが示されています。
- より大きなモデルでは、語順の問題は実際には解決されません。BGE-small (33M パラメータ) から BGE-large (335M パラメータ) にスケールアップしても、語順の捕捉の改善は最小限でした。
幸いなことに、この問題を解決するのに必要な労力は驚くほど少なく、小さなデータセット (11,000 サンプル) を 5 分間微調整するだけで、語順の感度が劇的に向上します。詳細については、以下の記事をご覧ください。
https://jina.ai/news/text-embeddings-fail-to-capture-word-order-and-how-to-fix-it/
詳細はブログ記事。
ざっくりまとめが下にあったので、少しだけ補足追加。
- 短いテキストは単語の順序を捉えるのに失敗しやすい、長いテキストのほうが単語の順序を捉えやすい
- テキスト埋め込みモデルのサイズを大きくしても、単語の順序の理解は微々たる改善にとどまり、単に大きなモデルを使用することだけでは解決しない
- 対照学習がこれらの問題に対する潜在的な解決策となりうる
- 順序が重要になるのは以下のカテゴリー(注: 例文は日本語訳)
-
方向性
- 例1: 彼女は**パリから東京まで**飛行機で行った
- 例2: 彼女は東京からパリまで車で行った
-
時間的
- 例1: 彼女は映画を見る前に夕食を食べた
- 例2: 彼女は夕食を食べる前に映画を見た
-
因果関係
- 例1: 気温が上がって (→) 雪が溶けた
- 例2: 雪が溶けて (→) 気温が下がった
-
比較
- 例1: コーヒーは紅茶よりおいしい
- 例2: 紅茶はコーヒーよりおいしい
-
否定
- 例1: 彼はテーブルのそばに立っている
- 例2: 彼はテーブルから離れたところに立っています
-
方向性
- 以下のようなトリプレットを用意してFTする
- アンカー: 川は山から海へと流れる
- 肯定: 山から海へ水が流れる
- 否定: 川は海から山へ流れる川
- 順序が重要になるのは以下のカテゴリー(注: 例文は日本語訳)
日本語の場合でもこれは該当するのかな?
このスクラップは3時間前にクローズされました