BGE-M3とSplade: スパース埋め込みを生成する2つの機械学習モデルの探究
このブログでは、ベクトル埋め込みという複雑な世界を旅し、BGE-M3とSpladeがどのように学習されたスパース埋め込みを生成するのかを探ってきました。
シリーズ全体を読む
- BGE-M3とSplade: スパース埋め込みを生成する2つの機械学習モデルの探究
- SPLADEスパース・ベクターとBM25の比較
- ColBERTの探求:効率的な類似検索のためのトークン・レベルの埋め込みとランキング・モデル
- UnstructuredとMilvusによるEPUBコンテンツのベクトル化とクエリ
- バイナリ・エンベッディングとは?
- RAGアプリケーションのためのウェブサイト・チャンキングと埋め込み入門ガイド
- ベクトル埋め込み入門:ベクトル埋め込みとは何か?
- 画像検索のための画像埋め込み:詳細な説明
- OpenAIのテキスト埋め込みモデルを使うための初心者ガイド
- DistilBERT:BERTの蒸留バージョン
- ベクトル量子化のパワーを解き放つ:効率的なデータ圧縮と検索のテクニック
前回のブログ](https://zilliz.com/learn/enhancing-information-retrieval-learned-sparse-embeddings#Summary)では、単純なキーワードマッチングから洗練された文脈理解への情報検索技術の進化を探り、スパース埋め込みが "学習 "できるという概念を紹介した。この巧妙な埋め込みは、密な検索手法と疎な検索手法の両方の長所を併せ持つ。学習されたスパース埋め込みは、密な検索に蔓延する典型的な領域外の問題に対処し、文脈情報を統合することで従来のスパース手法を強化する。
学習されたスパース埋め込みが持つ多くの利点を考えると、どのようなモデルがどのようにそれを生成するのか疑問に思うかもしれない。この記事では、これらの埋め込みを作成するための2つの最先端のモデルについて見ていく:BGE-M3とSpladeです。BGE-M3とSplade**の設計とその背後にある原理について説明します。
ベクトル埋め込みに関する簡単なまとめ
ベクトル埋め込み、またはベクトル表現は、高次元ベクトル空間内のオブジェクト、概念、またはエンティティの数値表現です。各エンティティは、通常固定長の実数からなるベクトルで表現され、各ベクトルの次元は、エンティティの明確な属性や特徴を表します。エンベッディングには3つのタイプがある:**伝統的な)疎埋め込み、密埋め込み、そして "学習された "疎埋め込みである。
伝統的なスパース埋め込みは、一般的に言語処理で使用され、多くの次元がゼロ値を含む高次元である。これらの次元は多くの場合、1つまたは複数の言語にわたる異なるトークンを表し、0以外の値は特定の文書におけるトークンの相対的な重要性を示す。用語頻度飽和関数と長さ正規化係数を追加することでTF-IDFアプローチを改良したBM25アルゴリズムによって生成されるような疎な埋め込みは、キーワードマッチングタスクに最適である。
対照的に、dense embeddingsは低次元ですが、情報が詰まっており、すべての次元がゼロ以外の値を含んでいます。これらのベクトルは、しばしばBERTのようなモデルによって生成され、キーワードの完全一致ではなく、意味的な意味の近さに基づいて結果がランク付けされる意味検索タスクで使用されます。
学習型」スパース埋め込みは、従来のスパース埋め込みが持つ精度と、密な埋め込みが持つ意味的な豊かさを組み合わせた、高度な埋め込みです。文脈情報を組み込むことで、スパース検索アプローチを強化する。SpladeやBGE-M3のような機械学習モデルは、学習されたスパース埋め込みを生成します。SpladeやBGE-M3のような機械学習モデルは、テキスト中に明示的に存在しない関連するトークンの重要性を**学習することができ、その結果、すべての関連するキーワードとクラスを効果的にキャプチャする「学習された」スパース表現が得られます。
Milvus](https://zilliz.com/what-is-milvus)のようなベクトルデータベースを使ったスパース検索、またはスパースと密のハイブリッドベクトル検索の詳細については、こちらのステップバイステップガイドをご覧ください。
BERT: BGE-M3とSpladeの基盤モデル
BGE-M3とSpladeモデルは、基礎となるBERTアーキテクチャの上に構築されています。そのため、それらの機能を掘り下げる前に、BERT の基本的な仕組みと、それがどのようにエンベデッド技術の進歩の礎石として機能しているかを理解する必要があります。さっそく見ていきましょう。
BERT(Bidirectional Encoder Representations from Transformers)は、自然言語処理(NLP)の飛躍を象徴しています。テキストを左から右へ、または右から左へと順次処理する従来のモデルとは異なり、BERT は、一方向ではなく、単語のシーケンス全体を同時に調べることによって、単語のコンテキストを捉えます。
BERTの本質は、単なるルーチンではなく、2つの革新的な戦略を組み合わせた事前学習プロセスにある:
マスク言語モデリング(MLM)**である:このタスクは、入力トークンの一部をランダムに隠し、これらのマスクされたトークンを予測するようにモデルを訓練する。一方向の文脈しか理解できないかもしれない以前の言語モデルとは異なり、BERT は、マスクされた単語の左右両方の文の文脈全体を考慮することによって、空白を埋める。
次文予測(NSP):** このタスクでは、BERT は、ある文が論理的に別の文に続くかどうかを予測することを学習します。
BERT のアーキテクチャの不可欠な特徴は、自己注意メカニズムである。変換器内の各エンコーダ層は、特定の単語を解釈する際に、文中の他の単語の重要性を量るために自己注意を使用し、異なる文脈における単語の意味を豊富に理解できるようにする。
位置エンコーディングは、BERTに単語の順序を理解させるもう一つの重要な要素であり、そうでなければ位置にとらわれない自己注意プロセスに「順序」の感覚を加える。
BERTはどのように機能するのか?
では、BERT はどのように機能するのでしょうか?次の文章をBERTに埋め込んでもらいましょう。
ユーザークエリ**Milvusはスケーラブルな類似検索のために構築されたベクトルデータベースである。
単語からトークンへ](https://assets.zilliz.com/From_words_to_tokens_8d06300f9a.png)
トークンからBERT密埋め込みへ](https://assets.zilliz.com/From_tokens_to_BERT_dense_embeddings_6cdf1212dd.png)
BERT にクエリを投入すると、プロセスは次のように展開する:
トークン化:トークン化:テキストはまず、一連の単語片にトークン化される。CLS]
トークンは文レベルのタスクのために入力の前に付加され、[SEP]
トークンは文を区切り、終わりを示すために挿入される。埋め込み:**各トークンはWord2Vecのようなモデルに似た埋め込み行列を用いてベクトルに変換される。位置埋め込みは、単語の順序に関する情報を保持するために、これらのトークン埋め込みに追加され、セグメント埋め込みは、異なる文を区別する。
エンコーダ:*** ベクトルは、自己アテンション機構とフィードフォワード・ニューラル・ネットワークで構成されるエンコーダの多層を通過する。これらの層は、シーケンス内の他のすべてのトークンによって提供されるコンテキストに基づいて、各トークンの表現を繰り返し改良する。
出力:** 最後の層は埋め込みシーケンスを出力する。通常、文レベルのタスクでは、
[CLS]
トークンの埋め込みは入力全体の表現となる。個々のトークンの埋め込みは、きめの細かいタスクに利用されるか、最大値や和のプーリングのような操作によって結合され、特異な密な表現を形成する。
BERTは、個々の単語の意味と文内の相互関係を捕捉する密な埋め込みを生成する。このアプローチは、様々な言語理解タスクにおいて絶大な成功を収め、NLPベンチマークにおいて新たな基準を設定している。
BERTがどのように密な埋め込みを生成するかを理解したので、BGE-M3とSpladeと、それらがどのように学習された疎な埋め込みを生成するかを調べてみよう。
BGE-M3
BGE-M3は、BERTの機能を拡張した高度な機械学習モデルです。BGE-M3は、多機能性、多言語性、および多粒度によってテキスト表現を強化することに重点を置いている。その設計は、密な埋め込みを生成することにとどまらず、意味的な意味と語彙的な正確さのバランスをとる、学習された疎な埋め込みを生成する能力を統合している。
BGE-M3はどのように動作しますか?
BGE-M3はどのように学習されたスパース埋め込みを生成するのでしょうか?このプロセスを説明するために、上記と同じユーザクエリを使いましょう。
単語からトークンへ](https://assets.zilliz.com/From_words_to_tokens_8d06300f9a.png)
これらの学習された疎な埋め込みを生成することは、BERT-トークン化と同じ基礎的なステップから始まり、入力テキストを文脈化された埋め込み(embeddings)のシーケンスにエンコードします୧⃛(๑⃙⃘⁼̴̀꒳⁼̴́๑⃙⃘)
トークンからスパース埋め込みへ.png
しかし、BGE-M3は、各トークンの重要性を捕捉するために、より粒度の細かいアプローチを利用することで、このプロセスを革新します:
1.トークンの重要度推定:BGE-M3は、[CLS]`トークン表現(H[0] Ⓐ)だけに依存するのではなく、各トークンのシーケンス内における文脈化された埋め込み(H[i] Ⓐ)を評価します。 2.線形変換:エンコーダのスタックの出力に、追加の線形レイヤが追加される。この層は各トークンの重要度重みを計算する。トークンの埋め込みをこの線形層に通すことで、BGE-M3は重みのセットを得る。 3.活性化関数W_{lex} ⒶとH[i] Ⓐの積にReLU(Rectified Linear Unit)活性化関数を適用し、各トークンの項重み Ⓐ(w_{t} Ⓐ)を計算します。ReLUを使用することで、項重みが非負であることが保証され、埋込みのスパース性に寄与する。 4.学習された疎な埋め込み**:各トークンは、入力テキスト全体の文脈における重要性を示す重み値と関連付けられる。
この表現により、言語のニュアンスに対するモデルの理解が強化され、大規模データベースの検索など、意味的要素と語彙的要素の両方が重要なタスクのための埋め込みが調整される。これは、膨大なテキストデータをふるいにかけ、意味を理解するための、より正確で効率的なメカニズムへの重要な一歩である。
SPLADE
SPLADEは、学習されたスパース埋め込みを生成する際の進化を表しており、基礎となるBERTアーキテクチャの上に、埋め込みスパース性を洗練させる独自の方法論を構築している。この方法論を把握するために、BERTの学習メカニズムの中核であるマスク言語モデリング(MLM)を再考する必要がある。
MLMは強力な教師なし学習タスクであり、入力トークンの一部を隠して、その文脈のみに基づいて隠された単語を推論するようにモデルを強制する。この技術は、隣接するトークンに依存して正確な予測でギャップを埋めるため、モデルの言語理解と言語の構造認識を強化する。
MLMは[MASK]のBERT埋め込みに基づいて元のトークンを予測する](https://assets.zilliz.com/MLM_predicts_the_original_token_based_on_the_BERT_embedding_of_MASK_9473778df6.png)
実際には、事前学習中のマスクされたスロットごとに、モデルは、BERT からの文脈化された埋め込み Ⓐ( H[i] Ⓐ)を利用して確率分布Ⓐ( w_i Ⓐ)を出力し、Ⓐ( w_{ij} Ⓐ)は、特定の BERT 語彙トークンがマスクされた位置を占める尤度を示す。長さが BERT の広範な語彙(通常、30,522 語)のサイズに一致するこの出力ベクトルΓ( w_i Γ)は、モデルの 予測を改良するための極めて重要な学習信号として機能します。
MLMはすべての位置の各トークンのスコアを集約する](https://assets.zilliz.com/MLM_aggregates_the_score_of_each_token_from_all_positions_5e66a619d5.png)
注:この図の確率はでっち上げですが、イメージはつかめるでしょう。
SPLADEはエンコード段階でMLMの力を活用する。最初のトークン化と BERT 埋め込みへの変換の後、SPLADE はすべてのトークン位置に MLM を適用し、各トークンが BERT の語彙内のすべての単語に対応する確率を計算します。次に SPLADE は、対数飽和効果を実装することによってスパース性を促進する正則化手法を適用して、全ポジションにわたっ て各単語のこれらの確率を集約する。その結果得られる重みは、入力トークンに対する各単語の関連性を参照し、学習されたスパースベクトルを作成する。
SPLADEの埋め込み手法の大きな利点は、その固有の用語拡張能力である。SPLADEは、原文には存在しない関連語を特定し、それを埋め込む。例えば、この例では、"exploration "や "created "といったトークンが、最初の文章にはなかったにもかかわらず、スパースベクトルに出現している。驚くべきことに、"milvus is a vector database built for scalable similarity search"(milvusはスケーラブルな類似検索のために構築されたベクトルデータベースである)のような短い入力に対して、SPLADEは118個のトークンを含むように文脈を拡張することによって、文脈を豊かにすることができる。これは検索タスクにおける厳密な用語マッチング能力を著しく高め、モデルの精度を向上させる。
この精巧なプロセスは、SPLADEがいかに従来のBERTエンベッディングを拡張し、より高い粒度と、用語の関連性の広さと特異性が重要である検索や検索のようなタスクに対する有用性を付与するかを強調している。
まとめ
このブログでは、伝統的なスパース、デンスから革新的な学習型スパース埋め込みまで、ベクトル埋め込みという複雑な世界を旅してきました。また、BGE-M3とSpladeという2つの機械学習モデルと、それらがどのように学習されたスパース埋め込みを生成するのかを探りました。
このような洗練された埋め込みを用いて検索システムを改良する能力は、直感的で応答性の高いプラットフォームを開発するための新たな可能性を開く。情報検索の標準を再定義することが期待される、これらの技術のインパクトを示す実用的なアプリケーションと使用例に関する今後の投稿にご期待ください。