SGPT: 意味検索のためのGPTによる文章埋め込み
SGPT: GPT Sentence Embeddings for Semantic Search
- 2022/02
- https://arxiv.org/abs/2202.08904
- モデル・コード https://github.com/Muennighoff/sgpt
- GPTをバイエンコーダやクロスエンコーダとして対称検索や非対称検索に適用するためのSGPT-BEとSGPT-CEを提案
- バイエンコーダはdocumentとqueryそれぞれをGPTに通してposition-weighted mean pooling(後のトークンほど重みが大きい)を適用し,queryベクトルとそれぞれのdocument vectorとcos similarityを測りargmax
- クロスエンコーダはqueryとdocumentを結合してGPTにいれ,query token上のlog probability sumをとりargmax
背景
クロスエンコーダー:
- クエリとドキュメントを同時にエンコードする方法
バイエンコーダー:
- クエリとドキュメントを別々にエンコードする方法
- 新しいクエリはクエリベクトルを生成するために、変換器を一回通過するだけでよい。このクエリベクトルは、キャッシュされた文書ベクトルに対して類似性関数でスコアリングされる。バイエンコーダの埋め込みは、クラスタリングや機械学習モデルの入力特徴など、検索以外のタスクに利用可能
- クロスエンコーダーはBi-Encoderよりも性能が高いが遅い
非対称検索:
- クエリと文書が交換可能でない。ある質問から答えを見つけることは非対称検索問題
対称検索:
- クエリと文書が交換可能である。クエリと文書がともに質問である場合、重複質問を見つけることは対称検索問題