Lock in $30 Savings on PRO—Offer Ends Soon! ⏳

オープンな日本語埋め込みモデルの選択肢 / Exploring Publicly Availa...

オープンな日本語埋め込みモデルの選択肢 / Exploring Publicly Available Japanese Embedding Models

イノベーションセンター テクノロジー部門 Generative AI PJ の内部勉強会で発表した資料です。Retrieval-Augmented Generation (RAG) において重要な役割を果たす埋め込みモデル(特に日本語に特化したもの)について整理しました。

NTT Communications

January 30, 2024
Tweet

More Decks by NTT Communications

Other Decks in Research

Transcript

  1. © NTT Communications Corporation All Rights Reserved. 1 ⾃⼰紹介 杉本

    海⼈ 所属︓NTT Com IC テクノロジー部⾨ • Node-AI開発PJ • Node-AI (https://nodeai.io) のスクラム開発 • フロント (React/Redux w/ TypeScript)、バックエンド (Django & .NET)、 インフラ(Google Cloud)など、フルスタックなムーブをしている • Generative AI PJ(兼務) • LLMの技術の⽬利き 趣味で『⽇本語LLMまとめ』を作っています︕︕ (NII主宰の「LLM勉強会」で公開中) ↑アイコン https://github.com/llm-jp/awesome-japanese-llm
  2. © NTT Communications Corporation All Rights Reserved. 2 Agenda •

    背景: Retrieval-Augmented Generation (RAG) • オープンな⽇本語埋め込みモデルの紹介
  3. © NTT Communications Corporation All Rights Reserved. 3 Retrieval-Augmented Generation

    (RAG) • RAGの登場により、埋め込みモデル(ベクトルに変換するモデル)がますます脚光を浴びている • クラウドベンダーの提供するRAGのプラットフォームは埋め込みモデルも提供されていることが多い クエリ RAGサーベイ論⽂(https://arxiv.org/abs/2312.10997)の論⽂の図をもとに図を作成 ドキュメント (外部知識) embeddings text-embedding-ada-002 textembedding-gecko 抽出されたドキュメント Titan Embeddings ドキュメントに もとづいた 回答 GPT-4 text-bison(PaLM2) Claude 2
  4. © NTT Communications Corporation All Rights Reserved. 4 Retrieval-Augmented Generation

    (RAG) 知識を追加するという観点からの、追加事前学習やファインチューニング(SFT, LoRA, etc…)との⽐較 Pros • 素の LLM に抽出されたドキュメントを⼊れるだけなので、重みを更新するための追加学習をしなくて済む (データセット作成やモデル訓練のためのコストがかからない) • ⽣成する際に抽出されたドキュメントが分かるので、ある程度モデルの出⼒の根拠も分かる • 抽出されたドキュメントに事実関係を含むのであれば、ハルシネーションは(相対的に)起きにくい Cons • 埋め込みモデルの性能次第では、クエリに無関係なドキュメントが抽出され、質の悪い出⼒を出しうる • ドキュメントのサイズ次第では、抽出の部分で余計に時間がかかり、回答速度のオーバーヘッドになる • モデルの出⼒の⽂体・⼝調を変えるといったパーソナライゼーションは難しい RAGサーベイ論⽂(https://arxiv.org/abs/2312.10997)を参照
  5. © NTT Communications Corporation All Rights Reserved. 5 Retrieval-Augmented Generation

    (RAG) Node-AI (https://nodeai.io) 旧UI での活⽤例 素の GPT-4 では(残念ながら) Node-AI に関する質問には答え られないが、 Node-AI のマニュアルや ごちきか (https://gochikika.ntt.com/ )を外部知識としてRAGを⾏う ことで、 より正確で信頼性のあるフィー ドバックをもらうことができる AIアシスタント機能
  6. © NTT Communications Corporation All Rights Reserved. 6 本⽇ご紹介する⽇本語埋め込みモデル •

    埋め込みモデルの⼤前提 • ⽇本語特化モデル • ⽇本語SimCSE (cl-nagoya/sup-simcse-ja-large や pkshatech/simcse-ja-bert-base-clcmlp など) • GLuCoSE(pkshatech/GLuCoSE-base-ja) • JaColBERT(bclavie/JaColBERT) • 多⾔語モデル • Multilingual-E5(intfloat/multilingual-e5-large)
  7. © NTT Communications Corporation All Rights Reserved. 7 埋め込みモデルの⼤前提 埋め込みに関してよく聞く疑問

    『BERTの[CLS]トークンに対応する埋め込みを使えばいいのでは︖』 『⾔語モデル(LLM)の内部でトークンの埋め込みを計算しているから、 それを平均したりして使えばいいのでは︖』 → (⾃分の感覚としては)半分正解で半分間違い。 • ⽂やドキュメントをベクトルに変換する、それをしたいだけであればOK • しかし、得られたベクトルは、 ⽂やドキュメントの意味の近さをきちんと反映していないことが多い • 素朴に考えても、[“私”, “は”, “カレー”, “が”, “好き”, “です”, “。”] と [“私”, “は”, “カレー”, “が”, “嫌い”, “です”, “。”] の意味が反転していることは、⾔語モデルの事前学習だけでは反映させにくそうですよね︖ • 実験的にも、BERTの [CLS]トークン埋め込み や 平均プーリング埋め込み を使うぐらいだったら、 GloVe 等の(もっと古い時代の)単語埋め込みを使った⽅がマシということが知られている [1] • なので、現代の埋め込みモデルは、素の⾔語モデルに対して似た意味の⽂ペアやクエリ・ドキュメント対を使って 追加で fine-tuning を⾏うのが普通 [1] Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks (EMNLP-IJCNLP 2019) の実験結果を参照
  8. © NTT Communications Corporation All Rights Reserved. 9 SimCSE SimCSE

    [2] は現代の埋め込みモデルのベースライン。このモデルをおさえると後続の⾒通しが良くなります • SimCSE は Simple Contrastive Learning of Sentence Embeddings の略 • ”Contrastive Learning” という名前からも察するように、「近い⽂のペア」の埋め込みが近くなるように、 「遠い⽂のペア」の埋め込みが遠くなるように学習する [2] SimCSE: Simple Contrastive Learning of Sentence Embeddings (EMNLP 2021) 画像の出典は私の修論 • では、「近い⽂のペア」と「遠い⽂のペア」は どう集めるか︖ ⇒ このやり⽅の流儀で Unsupervised(教師なし) SimCSE と Supervised(教師あり) SimCSE の2通りに分かれる
  9. © NTT Communications Corporation All Rights Reserved. 10 SimCSE Unsupervised(教師なし)

    SimCSE 近い⽂のペア: 同⼀の2つの⽂(ただし別の Dropout を通したもの) 遠い⽂のペア: 同じ batch 内の異なる2つの⽂(in-batch negatives) なぜ別の Dropout を通す︖🤔🤔 ⇒ 例えば画像では回転や反転によって同⼀ペアを簡単に作れるが、⾃然⾔語は単純操作では難しいため (今はLLMで簡単に作れそうだが…) このEncoderはBERTなどで初期化
  10. © NTT Communications Corporation All Rights Reserved. 11 SimCSE Supervised(教師あり)

    SimCSE 近い⽂のペア: NLIデータセットで Entailment (含意)のペア 遠い⽂のペア: NLIデータセットで Contradiction (⽭盾) のペア ⽇本語LLMの評価をして いる⼈はJNLIでおなじみ ※ Unsupervised と Supervised を分けているのは研究の世界で実験条件(NLIデータセットを使えるか否か)を揃える だけのためで、実⽤上は Supervised の⽅が性能が⾼いのでそちらを使うべき
  11. © NTT Communications Corporation All Rights Reserved. 12 ⽇本語SimCSE •

    名⼤ 武⽥・笹野研の塚越さんが、詳細な実験レポートとともに⽇本語版のSimCSEを公開 • 実装 • cl-nagoya/sup-simcse-ja-base (東北⼤BERTbase で初期化、 JSNLI で学習) • cl-nagoya/sup-simcse-ja-large (東北⼤BERTlarge で初期化、JSNLI で学習) • CC BY-SA 4.0 • 実験レポート • https://github.com/hppRC/simple-simcse-ja • Japanese SimCSE Technical Report (論⽂) • 株式会社PKSHA Technology からも、⽇本語版のSimCSEが公開 • pkshatech/simcse-ja-bert-base-clcmlp (東北⼤BERTbase で初期化、 JSNLI で学習) • CC BY-SA 4.0
  12. © NTT Communications Corporation All Rights Reserved. 14 GLuCoSE •

    株式会社PKSHA Technologyが独⾃に開発した埋め込みモデル(General Luke-based COntrastive Sentence Embedding の略) • pkshatech/GLuCoSE-base-ja, Apache 2.0 • READMEによると、単に⽂埋め込みとして使うだけでなく、より幅広く検索の⽤途で使うことを志向している ポイント 1. モデルの重みは東北⼤BERTではなく、株式会社 Studio Ousia が研究開発した LUKE [3] で初期化されてお り、 モデル初期化の時点ですでにBERTよりも強い 2. (学習詳細は公開されていないが)学習データがNLI以外にも幅広く使われている →単に⽂の意味関係だけでなく、クエリ・ドキュメントの類似関係などにも より適している可能性がある • 実験結果では、 PKSHA Technology の SimCSE よりも、 STS(意味類似度ベンチマーク)や検索ベンチマークの性能が⾼い [3] LUKE: Deep Contextualized Entity Representations with Entity-aware Self-attention (EMNLP 2020)
  13. © NTT Communications Corporation All Rights Reserved. 16 JaColBERT •

    2023年末に彗星のように登場した⽇本語の⽂埋め込みモデル • bclavie/JaColBERT, MIT License • Benjamin Clavié という企業研究者が個⼈で(︕)開発したモデルで、プレプリントの論⽂も出している: JaColBERT and Hard Negatives, Towards Better Japanese-First Embeddings for Retrieval: Early Technical Report • この⽅は本業でもNLPでバリバリ論⽂を書いていたり、 RAGatouille という1ヶ⽉で GitHub スター数 800+ の RAGパイプラインライブラリを⾃作していたり、なかなかすごい GLuCoSEや名⼤の⽇本語SimCSEなどの 既存モデル 上記の論⽂にある実験結果(抽出タスク)の表 Multilingual-E5 (後述) JaColBERT
  14. © NTT Communications Corporation All Rights Reserved. 17 JaColBERT JaColBERTのポイントその1:

    ColBERT [4][5] のアーキテクチャを採⽤したこと [4] ColBERT: Efficient and Effective Passage Search via Contextualized Late Interaction over BERT (SIGIR 2020) [5] ColBERTv2: Effective and Efficient Retrieval via Lightweight Late Interaction (NAACL 2022) 従来の埋め込みモデル ColBERT ①クエリのトークンに対 して、ドキュメントのそ れぞれのトークンとの類 似度を計算し、その最⼤ 値を求める ② その総和が全体の 類似度
  15. © NTT Communications Corporation All Rights Reserved. 18 JaColBERT JaColBERTのポイントその1:

    ColBERT [4][5] のアーキテクチャを採⽤したこと [4] ColBERT: Efficient and Effective Passage Search via Contextualized Late Interaction over BERT (SIGIR 2020) [5] ColBERTv2: Effective and Efficient Retrieval via Lightweight Late Interaction (NAACL 2022) 従来の埋め込みモデル ColBERT カレー は 好き︖ 私 は 今⽇ カレー と … を ⾷べた ⽂章⻑すぎて カレーの情報を埋め込み に⼊れられなかったな〜 カレー は 好き︖ 私 は 今⽇ カレー と … を ⾷べた めっちゃ似てるペアあ るから、類似度⾼いね この2つは あんま似てない かな
  16. © NTT Communications Corporation All Rights Reserved. 19 JaColBERT JaColBERTのポイントその1:

    ColBERT [4][5] のアーキテクチャを採⽤したこと • ドキュメント側の埋め込みはどんなクエリに対しても変わらないので、通常の埋め込みによる検索で Vector Store を使うのと同様に、保存しておくことができる(offline indexing) • でも、Documentのトークンの数だけ埋め込みがあるから、計算コストやメモリ的に⼤変じゃない︖🤔 ⇒量⼦化してそれぞれの埋め込みの数値表現のビット数を減らせばOK! (それでも、RAGへの応⽤を考えると、ベクトルの類似度を⼀発で計算すればよい従来型の埋め込みモデルに⽐べると、若⼲計算が遅く なってしまいそうなのがネックになりそう。ここは論⽂の結果を鵜呑みにするだけではなく、実際に計測したほうが良さそう)
  17. © NTT Communications Corporation All Rights Reserved. 20 JaColBERT JaColBERTのポイントその2:

    Hard Negatives(難しい負例)を使って学習 • Contrastive Learning では「近い⽂のペア」と「遠い⽂のペア」を使って学習を⾏うが、「遠い⽂のペ ア」が簡単に遠いと分かるものだと、学習がうまく進まないことが(昔から)知られている • そこで、正解ドキュメント(正例)に最も類似したドキュメントをHard Negativesとして取ってくること により、データセットを新たに作成(bclavie/mmarco-japanese-hard-negatives) 正例 Hard Negatives (難しい負例) データセットの例︓
  18. © NTT Communications Corporation All Rights Reserved. 22 Multilingual-E5 [6]

    • Microsoft が開発した多⾔語の埋め込みモデル • intfloat/multilingual-e5-base, intfloat/multilingual-e5-large, MIT License • XLM-RoBERTa [7] というBERTの多⾔語版のようなモデルに対して、とにかく Web 上のあらゆるデータか ら似ているドキュメントのペアを集めて Contrastive Learning [6] Text Embeddings by Weakly-Supervised Contrastive Pre-training [7] Unsupervised Cross-lingual Representation Learning at Scale (ACL 2020)
  19. © NTT Communications Corporation All Rights Reserved. 23 Multilingual-E5 [6]

    • Microsoft が開発した多⾔語の埋め込みモデル • intfloat/multilingual-e5-base, intfloat/multilingual-e5-large, MIT License • XLM-RoBERTa [7] というBERTの多⾔語版のようなモデルに対して、とにかく Web 上のあらゆるデータか ら似ているドキュメントのペアを集めて Contrastive Learning [6] Text Embeddings by Weakly-Supervised Contrastive Pre-training [7] Unsupervised Cross-lingual Representation Learning at Scale (ACL 2020)
  20. © NTT Communications Corporation All Rights Reserved. 24 Multilingual-E5 •

    とにかく沢⼭のデータを使って Contrastive Learning をしただけなので⼿法の⽬新しさはない (そのためか、論⽂も著名な国際会議に通すことなく arXiv に置かれているだけ) • ただ、実⽤上は⾮常にパフォーマンスが強い • 特に、⽇本語に特化したモデルではないのに⽇本語データにも強いのが驚くべきこと • 現状では、テーブルデータ界で初⼿LightGBMを使うのと同様に、 ⽇本語埋め込み界でも初⼿ Multilingual-E5 を使うべし、と⾔えそう https://hironsan.hatenablog.com/entry/2023/07/05/073150
  21. © NTT Communications Corporation All Rights Reserved. 25 Multilingual-E5 •

    とにかく沢⼭のデータを使って Contrastive Learning をしただけなので⼿法の⽬新しさはない (そのためか、論⽂も著名な国際会議に通すことなく arXiv に置かれているだけ) • ただ、実⽤上は⾮常にパフォーマンスが強い • 特に、⽇本語に特化したモデルではないのに⽇本語データにも強いのが驚くべきこと • 現状では、テーブルデータ界で初⼿LightGBMを使うのと同様に、 ⽇本語埋め込み界でも初⼿ Multilingual-E5 を使うべし、と⾔えそう https://github.com/nouu-me/document_vector_search_benchmark
  22. © NTT Communications Corporation All Rights Reserved. 26 今回拾えなかったトピック •

    ドキュメント抽出の際のベクトルの最近傍探索について • ドキュメントの数が⾮常に膨⼤な場合は、探索の際にGPUを使ったり、厳密な最近傍探索ではなく近似最近 傍探索を使ったりすることも考えられる • 『近似最近傍探索の最前線』『グラフを⽤いた近似最近傍探索の理論と応⽤』 • プロンプトを活⽤した埋め込みモデルについて • 本来、2つの⽂の類似度計算と、クエリ・ドキュメント間の類似度計算は別物なので、それぞれに適した埋め 込みを作るべき • Multilingual-E5 でも実は⼊⼒⽂に “query:” “document:” というプロンプトを⼊れて、2つを識別でき る • この⽅針をさらに推し進めたのが instructor-embedding [8] で、⾊々なプロンプトを⼊れてタスクごとに 埋め込みを最適化できるらしい • 最近の⾃分の興味: 抽出されるドキュメントの多様性の⽣み⽅について • 素朴に最近傍探索するだけだと、同じような中⾝のドキュメントばかり抽出されうる • 同じような中⾝のドキュメントばかり抽出されるよりも、幅広い内容のドキュメントが抽出される⽅が、最終的に RAGで⽣成されるテキストも幅広い内容を含んでいて直感的には良さそう • NLPやIRの分野でこのあたりの問題に取り組んでいる論⽂をご存知の⽅がいらっしゃったらぜひ教えてください [8] One Embedder, Any Task: Instruction-Finetuned Text Embeddings (ACL 2023 Findings)