11/7/2024
Generative Retrieval という面白い検索手法のチュートリアルを読む(RAGじゃないよ!)2024/11/07
Generative Retrieval
前回の日報でGenerative Retrievalという概念全然わからんとなりました。
ので、今日はSIGIR2024のTutorial論 文でGR(Generative Retrieval)についての論文があったのでそれをピックアップしました。 スライドが見つからなかったので、自分が見たのは同じ内容と思われる違う学会でのスライドを見ます。 とりあえず長いので今回は一部だけ。(最終的にはまとめてわかりやすくするつもりですが、今回は箇条書きで、、)
- Recent Advances in Generative Information Retrieval
- 今回のものではないが、ほぼ同じ内容のスライド
- https://thewebconf2024-generative-ir.github.io/
- 今回のものではないが、ほぼ同じ内容のスライド
ちょっとGRに関連した日本の記事を軽くしらべたら、自分の研究室のOBの方の記事しかヒットしなかった 🙂
Transformer Memory as a Differentiable Search Index (NeurIPS 2022)
- GRは一般的な検索システムに比べて使用する容量が少なく、推論速度も速い
- GRは簡単に言えばテキストを入力したらそのクエリに対して適した文書のIDを出力するというもの
- もっと雑に言うとLLMに質問したらその質問に対して対応する文書のIDを返す
- (正直実装方法深く理解していない段階ではただ🤔になる)
Docid designs
- 文書ID(DocId)の決め方は色々と存在している
- GRは文書IDを出力させるので意外と重要ぽい
- 大きく二つ文書IDの付与方法が存在する
- Pre-defined static docids
- 以下のような変遷を辿っているらしい
- 最初はNumber-basedなIDの付与方法
- Unstructured atomic integers
- 簡単なのは0, 1, 2というようにIDを振って、通常のLMのように1docid1token embeddingとして扱うこと
- しかしDocidごとに学習する必要がある
- 大きいコーパスでは難しい
- 簡単なのは0, 1, 2というようにIDを振って、通常のLMのように1docid1token embeddingとして扱うこと
- Naively structured strings
- Docidをトークナイズさせる手法
- 243168というIDなのであれば
- 24 / 316 / 8 というように分割したトークンとして扱いそれを生成させる
- 243168というIDなのであれば
- コーパスサイズが大きくなっても大丈夫!
- 任意に識別方法を割り当てる必要がある
- docidに意味的構造がなくなる
- Docidをトークナイズさせる手法
- Semantically structured strings
- 意味的に類似した文書はdocidのprefixを共有する
- それを10進木として階層的に表現
- 1 -> 11, 12, 13 / 2 -> 21, 22, 23
- 意味的な処理が可能に
- コーパスサイズの制限がなくなる
- 意味的に類似した文書はdocidのprefixを共有する
- Product quantization strings
- ベクトル圧縮に使われる技術を用いる
- ベクトルをNこのグループに分けてクラスタリングして〜、、、とやるらしい()
- より小さな空間で意味を保持できる
- 局所的な意味情報を捕捉できる
- ベクトル圧縮に使われる技術を用いる
- ここまでの精度は以下の順に
- 精度良い Product quantization strings > Semantically structured strings > Unstructured atomic integers >> Naively structured strings 精度悪い
- (一般的な検索モデルとの比較は別のセクションで行うらしい)
- ここまでのまとめ(11/07 今日はここまで!)
- Number ベースのIDは比較的簡単に構築できる
- しかし、それらのIDは 読めない数字で構成さえる
- コーパスに対するモデルの理解を解釈するのは難しい
- Unstructured atomic integers
- 次にWord-based docids
- そこからMultiple docids
- 最初はNumber-basedなIDの付与方法
- 以下のような変遷を辿っているらしい
- Learnable docids
- Pre-defined static docids
明日この続きを読んでいきたいと思います;