RAGに必要な唯一の埋め込みモデル

RAG
この記事は約10分で読めます。

本動画では、テキストと画像の両方に対応し、29の異なる言語をサポートする革新的な埋め込みモデル「JA embedding V4」について解説している。このモデルは従来の単一ベクトル表現と多ベクトル表現の両方に対応し、LoRAアダプターを活用してタスク別の最適化を行うことができる。また、マトリョーシカ埋め込みにより異なるサイズの出力ベクトルを生成でき、最大32,000トークンまでの長いコンテキストを処理可能である。RAGシステムにおける多様な検索タスクに対応できる包括的なソリューションとして注目される。

The Only Embedding Model You Need for RAG
I walk you through a single, multimodal embedding model that handles text, images, tables —and even code —inside one vec...

新しい埋め込みモデルの登場

私は普段LLMのリリースについてカバーしていますが、今日は新しい埋め込みモデルについて見ていきます。なぜなら、この埋め込みモデルはあまりにも優秀すぎて信じられないからです。これはマルチモーダルな性質を持ち、多言語対応で、テキストとコードの検索タスクに同じモデルを使用することができます。これが新しいJA embedding V4で、マルチモーダルと多言語検索のための汎用埋め込みモデルです。

そして何より素晴らしいのは、重みがHugging Faceで利用可能だということです。ダウンロードして使い始めることができます。私の動画をご覧いただいた方なら、RAGと検索に関連する多くの内容をカバーしていることをご存知でしょう。そしておそらくこの画像を以前にも見たことがあるでしょう。埋め込みは検索タスクにおいて非常に重要な役割を果たします。しかし実際の生活では、ドキュメントには画像、テキスト、表が含まれています。

そして時には本当に複雑な配置になっていることもあります。従来、人々はそれらのテキストに変換したり、画像をテキスト記述に変換してから、同じテキスト埋め込みモデルを使用して埋め込み表現を作成していました。ご想像の通り、この翻訳の過程で多くの情報が失われてしまいます。ColPaLiのような他のアプローチもありました。これはPDFファイルからページを取得して画像に変換し、その後画像エンコーダーを使用してテキスト表現と同じ空間にその表現を投影します。

しかし重要なのは、テキストと画像のクエリの両方に同じモデルを使用しているということで、これは本当にうまく機能します。ColPaLi タイプのアプローチは、ColBERTスタイルの多ベクトル表現にインスパイアされています。人々がテキスト表現に使用する通常の密な埋め込みを見ると、入力テキストがあり、各トークンの埋め込みを計算し、それから単一のベクトルを作成します。

つまり、入力テキストのサイズに関係なく、出力ではまったく同じサイズのベクトルを得ることになります。多ベクトル表現は少し異なり、各トークンの埋め込みを作成します。つまり、チャンク全体レベルの埋め込みの代わりに、トークンレベルの埋め込みを取得することになり、これははるかに正確になります。

しかしこれらの問題は、埋め込みに必要なストレージサイズが爆発的に増加することです。ColPaLiは視覚表現や視覚エンコーダーに対して非常に似たようなことを行います。各ページを多数の異なるパッチに分割し、それらのパッチの埋め込みを計算します。

つまり、単純な密な表現と比較して、はるかに大きなベクトル空間になります。しかし最近、COはembed formをリリースしました。これは彼らのマルチモーダル埋め込みベクトル、または埋め込みアプローチで、多数の異なるベンチマークで最先端の性能を示しています。しかし美しいのは固定サイズのベクトルを得られることで、それはColaliのような他の表現と比較して、ストレージコストがそれほど法外にならないことを意味します。

包括的なアプローチを持つJenna V4

私はこれらすべてのアプローチを多数の動画でカバーしてきました。興味がある方は、動画の説明欄にリンクを載せます。この新しいJenna V4埋め込みモデルは、すべてを単一のモデルに統合しようとします。実際、彼らは埋め込みの上にLoRAアダプターを持っており、これがさらに興味深いものにしています。

それを見る前に、今日NvidiaがマルチモーダルRAG Nemo retrieverをリリースしました。これはLlama 3.2モデルの上に構築されています。これは前に見たColPaLiアプローチと非常に似ています。通常のテキスト埋め込みでは、画像からテキストへのパーサーがあり、先ほど述べたように、テキストと画像の両方に同じ表現を使用します。

この場合、画像をエンコードする視覚エンコーダーがありますが、テキストと画像の両方に同じ埋め込み空間を使用しています。これは10億パラメーターモデルの上で訓練されています。つまり、比較的小さなモデルですが、従来の密な埋め込みモデルと比較すると少し大きく、しかしGena V4埋め込みモデルと比較するとずっと小さいです。

Nemo RetrieverはすでにNvidiaのウェブサイトで利用可能です。このモデルで遊んでみたい場合は、動画の説明欄にリンクを載せます。

Jenna AIのembedding V4の革新的アーキテクチャ

では、Jenna AIのembedding V4に戻りましょう。これが埋め込みのアーキテクチャ表現で、これはおそらく私が見た中で最も魅力的な検索埋め込みアーキテクチャの一つです。

これについて説明させてください。これは、この動画で議論したいくつかの異なるアイデアと、文献で利用可能な他のアイデアを組み合わせています。述べたように、テキストと画像の両方を処理できます。画像は視覚デコーダーに送られます。これはQwen 2.5視覚言語モデルに基づいています。38億パラメーターモデルを使用しています。

つまり、バックボーンはほぼ40億パラメーターです。画像をエンコードすると、テキストと画像の両方に対して同じ言語モデルデコーダーがあります。しかし、彼らはLoRAも持っています。4つの異なるタイプのLoRAがあると思います。一つはテキスト検索用の検索用、もう一つはコード検索用です。分類用もあると思います。

タスクに応じて、入力画像テキストを提供するだけでなく、どのタイプのタスクを行っているかも伝え、それに基づいてそのタスクに特化したLoRAアダプターを追加します。しかしそれだけではありません。埋め込みベクトルを生成しますが、密な埋め込みまたは多ベクトル表現のどちらを持ちたいかも定義できます。

これに戻ると、基本的にすべてのトークンレベルの埋め込みを単一の埋め込みベクトルにプールする固定サイズの密な埋め込みベクトルを生成するか、または多ベクトル表現を持つためにまったく同じモデルを使用できます。これはちょっとクレイジーです。しかしそれだけではありません。

彼らが行っているもう一つのトリックがあり、それはマトリョーシカ埋め込みモデルを使用することです。つまり、同じモデルを使用して異なるサイズの出力埋め込みを生成できます。OpenAIの新しい埋め込みモデルを見ると、同じモデルを使用して、ニーズに応じて出力モデルまたは出力埋め込みサイズを切り詰めることができます。

例えば、text embedding largeモデルを使用している場合、最初の256次元を抽出するか、最大で私が思うに3072次元まで行くことができます。しかしこれは基本的に同じ埋め込みベクトルで、より小さなサイズに切り詰めているだけです。より小さなサイズは、コストと速度を節約します。同じ埋め込みモデルが、ニーズに基づいて異なるベクトルサイズまたは異なる次元を提供できます。

そしてJenna embedding V4は実際にそれをサポートしています。128次元まで下げることも、2448次元まで上げることもできます。単一の埋め込みベクトルで非常に多くのことが起こっており、これはちょっとクレイジーです。しかしそれだけではありません。最大32,000トークンをサポートしています。つまり、理論的にはチャンクサイズを最大32,000トークンにできます。

しかし、チャンクサイズは小さく保つことを強くお勧めします。この巨大なサイズまたはコンテキストサイズは、レイトチャンキングにとっても非常に良い候補になります。レイトチャンキングに馴染みがない場合は、簡単な概要をお伝えします。私のチャンネルには詳細な動画があり、強くお勧めします。通常、ドキュメントを小さなチャンクに分割すると、コンテキストを失いますよね。一つのアイデアは、ドキュメント全体を取り、長いコンテキストをサポートする埋め込みモデルを使用し、ドキュメント全体の埋め込みを生成することです。

多ベクトル表現になるので、ドキュメント全体のトークンレベルの埋め込みを作成し、その後埋め込みを生成した後でドキュメントをチャンクし、その特定のチャンクのトークンレベル埋め込みをプールします。最終的にチャンクレベルの埋め込みを得ますが、ドキュメントレベルの埋め込みから始めて、これがグローバル情報を保持します。

このトピックに興味がある場合は、動画を作成しました。動画の説明欄にリンクを載せます。

モデルの詳細と実例

このシステムの使用方法を示すサンプルノートブックを見る前に、いくつかの詳細をお話しします。これは埋め込みモデルとしては比較的大きなモデルです。そのことを念頭に置いてください。テキストと画像をサポートし、最大20メガピクセルの画像を処理できます。これは特にページの高解像度画像には素晴らしいことです。

29の異なる言語をサポートし、述べたように単一ベクトル多ベクトル表現に対応しており、これは非常に素晴らしいです。こちらはJenna AIチームからの簡単なノートブックです。40億パラメーターモデルであることを念頭に置いてください。いくつかの例は単一のT4 GPUでは実行されません。このノートブックを実行しようとする場合は、そのことを念頭に置いてください。

ここでモデルの重みはHugging Faceで利用可能です。これらのモデルの重みをダウンロードし、実際にここでアーキテクチャを見ることができます。この例では、英語、スペイン語、日本語、ポルトガル語、ドイツ語、アラビア語の異なる言語があります。すべて「フォースと共にあらんことを」の翻訳だと思います。

そしてここに3つの異なる画像があります。実際に、この埋め込みモデルを使用してマルチモーダルRAGについてより詳細な動画を作成したいかどうか、教えてください。これが最初の画像です。これが2番目です。そしてこれが3番目です。それらは異なるテーマからインスパイアされていますが、すべてのクエリはスター・ウォーズに関連しています。

何らかの類似性測定や距離計算を行うと、すべてこの画像を最も近いものとして選ぶはずです。ここが興味深い部分です。基本的にテキスト記述であるクエリを埋め込む際は、どのタスクを行っているかを伝える必要があります。検索を行いたいので、検索タスク用の特定のLoRAアダプターを選択します。

また、それがクエリなのかドキュメントなのかも伝える必要があります。これらのテキスト埋め込みについては、これらがクエリであり、検索タスクを行いたいと伝えます。その後、同じ空間で画像を埋め込みます。これはT4 GPUでは比較的遅いです。しかしその後、それぞれのクエリに対してそれら3つの画像に対するコサイン類似度を計算しています。

コサイン類似度を計算するためのヘルパー関数がここにあります。テキスト埋め込みと画像埋め込みを提供し、その後結果を基本的に示しています。例えば、これがクエリの場合、スター・ウォーズのシーンやライトセーバーの戦いを上位に選択します。すべてのクエリで一貫してこれを行い、これは非常に素晴らしいです。

マルチモーダルRAGパイプラインまたはRAGシステムでは、まずドキュメントを画像に変換してからこれらの埋め込みを計算し、その後それらの上でクエリを実行してドキュメントの埋め込みを計算します。私は以前の動画で同様のシステムをカバーしました。説明欄に他の動画へのリンクを載せます。

テキストマッチング用の埋め込みという別の例もあると思います。この場合、T4 GPUでVRAMが不足しました。特に多くの画像データの埋め込みを行おうとしている場合は、この問題に簡単に遭遇する可能性があることに注意する必要があります。他のタスクの一つはテキストマッチングです。これは基本的にトピッククラスタリングで、同様のトピックが何かも判断できると思います。

コード検索に同じ埋め込みモデルを使用できます。これは非常に素晴らしいですよね。コード検索タスク専用に訓練された別の埋め込みモデルは必要ありません。何らかのコーディングエージェントを作成している場合は、このモデルを使用できる可能性があります。多ベクトル表現に同じモデルを使用できます。

より多くの画像が関与していたと思いますし、多ベクトル表現ははるかに大きくなるので、VRAMの問題に遭遇しました。すぐに使えるマルチモーダルRAGシステムをお探しの場合は、私のlocal GPT visionリポジトリまたはプロジェクトをチェックすることを強くお勧めします。これはマルチモーダル検索システムと視覚言語モデルの組み合わせを使用して、エンドツーエンドのマルチモーダルRAGシステムを作成します。

これは多数の異なるモデルをサポートしており、オープンソースだけでなく、いくつかのプロプライエタリモデルもサポートしています。ぜひチェックしてください。プロジェクトが気に入ったら、GitHubでスターを付けることを忘れないでください。とにかく、これは非常に興味深いアプローチで、RAGと検索システムに対する私自身の興味と非常によく一致しています。

RAGや検索に関連することを行っていて、アドバイスやコンサルティングをお探しの場合は、ぜひご連絡ください。私は多数の異なる会社を支援しています。あなたにもお手伝いできればと思います。詳細は動画の説明欄に載せます。とにかく、この動画が役に立ったことを願っています。ご視聴ありがとうございました。いつものように、次回もお会いしましょう。

コメント

タイトルとURLをコピーしました