Jina AIによるテキスト埋め込み学習

最近、Berlin Unstructured Data MeetupでBo Wangから、最先端の一般的なテキスト埋め込みのトレーニング状況について聞いた。テキスト埋め込みは、すでに最新の[ベクトル検索]やRAG([Retrieval-Augmented Generation]](https://zilliz.com/blog/advanced-rag-apps-with-llamaindex)) システムをパワーアップしています。 Wangは、Jinaエンベッディングを中心に、最先端のテキストエンベッディングの開発の複雑さを理解するのに役立ちます。
なぜJinaテキスト埋め込みにこだわるのか?
Jina-Embeddings-V2](https://arxiv.org/pdf/2310.19923)のリリースはAIコミュニティで波紋を呼び、Hugging Faceで300万以上のダウンロードを集めました。このモデルは、LangChainやLlamaIndexのような多くのAIフレームワークや、MilvusやZilliz Cloudのようなベクトルデータベースに統合されています。Jinaエンベッディングの話題は、Hacker Newsのトップにまで達し、ロングコンテキストのエンコーダに関する広範な議論や討論を巻き起こした。Jinaエンベッディングは、業界で最も優れたエンベッディングの一つであるOpenAIエンベッディングと密接に競合しています。
そのことを念頭に置いて、Jinaテキストエンベッディングの開発の複雑さについて王さんの話を掘り下げてみよう。
エンベッディングモデルの微調整から大規模トレーニングへの進化
Jina AIは、独自の埋め込みモデルのトレーニングから始めたわけではない。その代わりに、BERTのような既存のモデルを微調整することから始めた。ファインチューニングされたモデルは、既存のモデルよりも優れた性能を発揮した。統計を見てみよう。末尾のデルタ値は、微調整されたモデルが、元の事前訓練されたモデルと比較してどの程度のパフォーマンスを示したかを表しています。
訓練前モデルと微調整モデルの性能比較](https://assets.zilliz.com/jina_embeddings_3b39e50ac6.jpeg)
ご覧の通り、すべてのファインチューニング・モデルは大幅に改善され、このアルゴリズムがうまく機能したことを示唆している。しかし、この製品は技術業界に受け入れられたのだろうか?簡単な答えはノーだ。
当時は、検索業界でさえも、ベクターに徐々に移行しつつあり、訓練済みの埋め込みモデルを使い始めたばかりだった。しかし、エンベッディング・モデルを微調整する準備は整っていなかった。他の業界においても、LLMやRAGシステムが存在しなかったため、埋め込みモデルは広く採用されていませんでした。
ファインチューニングによって、ジーナAIは漸進的な改善を達成することができたが、彼らはすぐに、業界がファインチューニング技術に対応していないことに気づいた。この認識により、彼らはエンベッディング・モデルをゼロからトレーニングするという野心的な試みに着手した。彼らは、国産のソリューションを開発することで、可能性の限界を押し広げることができると信じていた。
Jina-Embeddings-V1の作成
Jina-Embeddings-V1](https://arxiv.org/pdf/2307.11224)の作成には、包括的なアプローチが必要だった。王は、使用されたアプローチについて説明する:
1.最先端モデルの研究:最初のステップは、minilm、mpnet、sentence-t5、GTR、マイクロソフトやグーグルのようなハイテク大手のインストラクターなど、最先端の埋め込みモデルを研究することです。このアプローチは、既存のソリューションの長所と限界を理解し、改善が必要な分野を特定するのに役立ちます。
2.**膨大なトレーニングデータセットの収集次のステップは、巨大なデータセットを集めることだ。Jina AIは20億レコードの英語学習データを使用した。この膨大なコーパスは、様々なタスクやドメインに対応できる高品質で汎用的なエンベッディングモデルをトレーニングするために不可欠です。
3.広範なデータクリーニングとキュレーション:学習データの品質を確保するため、重複排除、言語検出、品質フィルタリングなど、広範囲に及ぶデータクリーニングとキュレーションが行われる。この厳格なプロセスを経て、Jina AIには4億件の高品質な事前学習データと500万行の人間による注釈付き微調整データが残された。
4.分散トレーニングのためのリファクタリング:Jina AIはFinetunerのコードベースをリファクタリングし、効率的な大規模モデル学習を可能にした。このスケーラブルなインフラは、このような膨大なデータセットでモデルをトレーニングするために非常に重要です。
このモデルは成功を収めたが、コンテキストの長さが限られていたため、業界の他のモデルから際立った存在ではなかった。この制限を解決するために、Jina AIはJina-Embeddings-V2を訓練した。
Jina-Embeddings-V2の紹介:短い訓練、長い推論
512トークンの壁を乗り越え、より長いシーケンスを扱うという目標を達成するために、Jina AIはJina-Embeddings-V2を導入します。これは、より短いシーケンスで学習しながら、推論時に8,192トークンまでのシーケンスを扱うことができる埋め込みモデルです。これは、いくつかの重要な修正によって実現されている。Wang氏は、これらの改良点をさらりと説明している。もっと深く掘り下げてみよう:
位置の埋め込みを削除する
BERTを含む従来の変換モデルは、シーケンス内のトークンの順序をエンコードするために位置埋め込みに依存しています。これらの位置埋め込みは、各トークンの他のトークンに対する相対位置を表す固定ベクトルです。しかし、これには限界があります:
- コンテキストの長さ**:位置埋め込みは、コンテキストウィンドウを固定サイズ(例えば、BERT では 512 トークン)に制限する。長い文書やシーケンスはこの制限を超え、情報損失につながる。512トークンを超えるとBERTモデルの当惑度が急上昇しますが、これは情報損失があることを意味します。当惑度は、モデルがテキストのセマンティクスをどの程度理解できるかを測定します。当惑度は低ければ低いほど良い。
BERTにおける推論シーケンスの長さと当惑度](https://assets.zilliz.com/Inference_sequence_length_vs_perplexity_on_BERT_8a4d7fc310.jpeg)
- 位置制約**:離れた位置にあるトークンは、文脈を無視して同様の埋め込みを受ける。
Jina-Embeddings-V2は位置の埋め込みを完全に除去し、位置の制約なしに長いシーケンスを扱えるようにした。このモデルは広範な文書にわたるコンテキストを捕捉するため、文書の要約、法的分析、長文の内容理解に適している。
線形バイアスを持つ注意 (ALiBi)
ALiBiは大規模な言語モデルのために開発された手法です。ALiBiは固定的な位置埋め込みに依存する代わりに、アテンション計算中に語順情報を動的に取得する。ALiBiは各トークンの文脈に適応し、位置の制約なしに前後のトークンを考慮することができる。
エンベッディングへの影響:ALiBiは長いテキストでも文脈理解を強化します。これにより、Jina-Embeddings-V2は、トークンの位置に関係なく、トークン間の豊かな意味的関係を捉えることができる。
ALiBiの双方向変換器への適応
双方向の理解は、質問応答、要約、意味検索のようなタスクにとって極めて重要です。Jina-Embeddings-V2がそれをどのように実現しているかを紹介しよう:
コンセプトALiBiはもともとデコーダのみのモデルのために設計された。Jina AIは、それをBERTのような双方向アーキテクチャに拡張します。
双方向コンテキスト**:Jina-Embeddings-V2は、左右両方の文脈を考慮し、シーケンス全体の依存関係を捉えます。
エンベッディングへの影響:このモデルは、両方向のコンテキストを理解することが重要なタスクに優れています。例えば、セマンティック検索は、ユーザークエリと文書内容を同時に分析する必要があるため、双方向埋め込みから恩恵を受ける。
BERT をゼロから再トレーニングする
Jina AIは高度な技術でBERTを再トレーニングし、Jina-Embeddings-V2のバックボーンとして機能するJinaBERTを生み出しました:
コンセプトJina AI は、全単語マスキング、RoBERTa レシピ、GeGLU 活性化、積極的マスキングなど、様々なトリックを適用する。
ALiBiサポート**:JinaBERTはALiBiで学習され、動的なコンテキストモデリングを保証します。
エンベッディングへの影響:Jina-Embeddings-V2は、多様なタスクに対応できる強固なバックボーンを持っている。長い記事を要約し、必要な情報を抽出し、コンテキストの整合性を維持する。
保持されるJinaBERTの当惑度は、512トークンの制限を超えても低いままである。位置埋込みの削除とAliBiの適応のおかげである。BERTとJinaBERTを比較した新しいグラフをご覧ください:
JinaBERTとBERTの推論シーケンス長対当惑度](https://assets.zilliz.com/Inference_sequence_length_vs_perplexity_on_Jina_BERT_and_BERT_f9027c2e03.jpeg)
言語の橋渡し:対訳埋め込み
Jina AIは、既存の多言語埋め込みモデルの限界を認識し、英語のトレーニングデータに大きく依存することが多い、バイリンガル埋め込みモデルの開発を開始した。彼らの目標は、複数の言語とそれらの間のクロスリンガルな関係を扱えるモデルを作ることだ。
Jina AIの二言語エンベッディングへのアプローチは、通常とは異なる。多言語BERTや多言語E5など、ほとんどの多言語モデルは、学習データの分布に大きな偏りがある。例えば、人気のある多言語E5モデルは、学習データの91.5%が英語であり、中国語は4.2%、その他の言語は4.3%しかない。
多言語E5 vs Jina Embedding v2 on pre-trained multilingual data](https://assets.zilliz.com/Multilingual_E5_vs_Jina_Embedding_v2_on_pre_trained_multilingual_data_beb93ca2c1.jpeg)
対照的に、Jina AIのJina-Embeddings-V2-Based-Germanモデルは、バランスの取れた50%の英語と50%のドイツ語のトレーニングデータ分布を特徴としています。このクロスリンガルデータは、2つの言語間の類似性と関係性に対するモデルの理解を向上させるために特別に設計されています。
Jina-Embeddings-V2-Based-Germanは、多言語モデルよりも小さいにもかかわらず、常に競合他社を凌駕し、ドイツ語からドイツ語、ドイツ語から英語、英語からドイツ語の検索タスクで高いスコアを達成しています。
異なる埋め込みモデル間の検索パフォーマンス比較](https://assets.zilliz.com/Search_performance_comparison_between_different_embedding_models_9fdf67f31d.jpeg)
この結果は、Multilingual E5やCohere Embed V3のような一般的な多言語モデルよりも、Jina AIの二言語エンベッディングが優れていることを示しています。
Jina-Embeddings-V2でRAGアプリケーションを構築する際の注意点
Jina-Embeddings-V2を使って検索補強生成(RAG)アプリケーションを開発する際には、このモデルがどのように様々な長さの文書を扱うのか、そしてこれらの文書内での関連情報の位置づけを理解することが不可欠です。Bo Wang氏は、いくつかの重要な検討事項を強調した:
1.短い文書:あなたの文書が常に512トークンより小さい場合、Jina-Embeddings-V2はE5やBGEのような他の平均的なエンコーダーと同等の性能を発揮します。
2.長い文書(初期情報):* 文書が512トークンより長く、関連情報が先頭にある場合、Jina-Embeddings-V2の性能は落ちるかもしれません。
3.長い文書(後の情報):* 文書が512トークンより長く、関連情報が中間または最後にある場合、Jina-Embeddings-V2は検索性能を大幅に向上させます。
Jina AIとMilvusベクトルデータベースとの統合
ベクトルデータベース](https://zilliz.com/learn/what-is-vector-database)と埋め込みモデルの両方は、効率的な情報検索システムやRAGアプリケーションを構築するために不可欠です。これらのコンポーネントは、ベクトル類似検索や検索タスクを実行するために統合されることが多い。
Milvusは、10億スケールのベクトル埋め込みを効率的に格納・検索するために設計されたオープンソースのベクトルデータベースです。最近、Jina埋め込みはPyMilvusモデルライブラリに統合され、追加の埋め込みコンポーネントの必要性を排除することで、RAGや他のGenAIアプリケーションの開発を合理化しています。
最近、Milvusの軽量版であるMilvus Liteが導入され、このプロセスがさらに簡素化されました。Milvus Liteは、DockerやKubernetes上にデプロイされるフルバージョンのMilvusと同じAPIを共有しますが、サーバーをセットアップすることなく、1行のpipコマンドで簡単にインストールできます。プロトタイピングに理想的であり、要件の成長に合わせて様々なMilvusデプロイメントにシームレスに移行することができます。
この統合の詳細については、以下のリソースを参照してください:
MilvusドキュメントMilvusとJina Embeddingsの統合
Looking Ahead:Jina-Embeddings-V3
Jina AIのチームはすでにJina-Embeddings-V3に取り組んでおり、さらなる進化をもたらすことを約束している:
スピードと効率性:** Jina-Embeddings-V3は、特に長いシーケンスに対して、より速く、よりメモリ効率的になります。
多言語サポート:** 新バージョンは、最適化された言語分布と多言語データのより良い取り扱いを提供します。
実世界の問題解決:** Jina-Embeddings-V3は、V2や他の埋め込みモデルにおける圧縮故障解析で、実世界の問題に対処します。
タスクに特化した機能強化:*** Jina-Embdings-V3は、異なるタスクをより良く処理するための賢いルーティングと共に、注意深く設計されたタスク命令とタスクヘッドを含みます。
チャンクとスキーマの認識:*** このモデルはチャンクとスキーマを認識し、半構造化データと階層的な埋め込みに対する理解を向上させます。
要約
Jinaのエンベッディングモデルは、8192トークン長の入力ウィンドウを備え、包括的なデータ表現に優れ、高い性能を誇ります。多言語サポートとOpenAIのような主要プラットフォームとのシームレスな統合により、これらのエンベッディングはクロスリンガルアプリケーションに理想的です。
埋め込みモデルとベクトルデータベースは、効率的な類似検索と情報検索に不可欠です。MilvusのPython SDKであるPyMilvusとJinaエンベッディングモデルを統合することで、RAGや様々なGenAIアプリケーションの開発がより効率的で簡単になります。
Bo Wang氏による最近の講演では、最新のベクトル検索とRAGシステムのためのJinaテキスト埋め込みモデルの作成について議論した。彼はまた、広範な情報を効果的にエンコードする埋め込みモデルをトレーニングするための方法論と、様々なビジネスニーズに最適な埋め込みモデルを選択するためのガイダンスを共有した。
詳細については、YoutubeでBo Wangの講演のリプレイを見るをご覧ください。
読み続けて

The Great AI Agent Protocol Race: Function Calling vs. MCP vs. A2A
Compare Function Calling, MCP, and A2A protocols for AI agents. Learn which standard best fits your development needs and future-proof your applications.

Leveraging Milvus and Friendli Serverless Endpoints for Advanced RAG and Multi-Modal Queries
This tutorial has demonstrated how to leverage Milvus and Friendli Serverless Endpoints to implement advanced RAG and multi-modal queries.

Stop Waiting, Start Building: Voice Assistant With Milvus and Llama 3.2
We'll learn to build a Voice Assistant, a specialized Agentic RAG system designed for voice interactions, with Milvus, Llama 3.2, and other GenAI tools.