8分で体験するGemini Embedding 2のハンズオン

Google・DeepMind・Alphabet
この記事は約9分で読めます。

Googleが静かにリリースしたGemini Embedding 2は、テキスト、画像、動画、音声、PDFをネイティブにサポートする初の完全マルチモーダル埋め込みモデルである。従来のRAGパイプラインではモダリティごとに異なるモデルが必要だったが、このモデル一つで全てを処理できる。Matrioska表現学習(MRL)により、出力次元を柔軟に調整可能で、パフォーマンスとストレージコストのバランスを最適化できる。多言語対応も強化され、既存の選択肢を圧倒する性能を誇る。実装はGoogle CollabとGemini APIで簡単に行え、エンタープライズ向けのセマンティック検索やチャットボット構築に最適な、今月最も重要なリリースと言える。

Gemini Embedding 2 Hands-on in 8 mins!
Today we’re releasing Gemini Embedding 2, our first fully multimodal embedding model built on the Gemini architecture, i...

Googleが静かに投下した重要なリリース

Googleがつい先日、多くの人がスクロールして見逃してしまうかもしれない何かを静かにリリースしました。そしてこれは、今月最も重要なリリースかもしれません。これは大規模言語モデルではありませんが、多くの企業にとって非常に重要なものなんです。

これは埋め込みモデルで、テキスト、画像、動画、音声、そしてPDFを扱うことができます。ネイティブにマルチモーダルな埋め込みモデルです。この動画では、Google Collabノートブックでこのモデルをどのように使えるのか、そしてこの特定のモデルの何が特別なのかをお見せしていきます。

RAGパイプラインの課題を解決

もしRAGパイプラインを構築したことがあるなら、その苦労をご存知でしょう。テキストは一つのモデルに入れて、画像は別のモデルに入れる。そしてマルチモーダルパイプラインには異なるセットアップが必要になります。

今、Googleが提案しているのは、持っている他の埋め込みモデルを全部やめて、この特定のモデルを使いましょうということなんです。なぜなら、これはネイティブにマルチモーダルだからです。

一つのモデルで、テキストを渡すこともできるし、画像、音声、動画を渡すこともできます。実際、PDFもそのまま渡せるんです。

Gemini Embedding 2の仕様

本日、私たちはGemini Embedding 2をリリースします。Geminiアーキテクチャに基づいて構築された、初の完全マルチモーダル埋め込みモデルです。このモデルはテキスト、画像、動画、音声、ドキュメントをサポートしています。

動画に関しては、MP4またはMOV形式で最大120秒の動画をサポートし、リクエストごとに最大6枚の画像を処理できます。テキストは8,192個の入力トークンまで与えることができ、最大6ページのPDFを直接埋め込むことができます。

Matrioska表現学習の革新性

このモデルはMatrioska表現学習、MRLを組み込んでいます。なぜこれが重要なのか疑問に思うかもしれませんね。重要なのは、Matrioska表現学習MRLが、次元を動的にスケールダウンすることで情報をネストする技術だからです。

これにより、異なるモデルを使用することなく、柔軟な出力次元が可能になります。デフォルトは3,072ですが、開発者はこの一つのモデルを異なる次元設定で使用できます。

例えば、372から1,536、あるいは768にすることもできます。そして実際に、この次元設定を調整して、パフォーマンスとストレージコストの適切なバランスを取ることができます。それがMatrioska表現学習によってGemini Embedding 2ができることなんです。

最先端のパフォーマンス

パフォーマンスの面では、このモデルは最先端のパフォーマンスを提供します。Gemini Embedding 01のようなモデルと比較すると、このモデルは多言語対応でより優れています。マルチモーダルであるだけでなく、多言語対応でもあるんです。

このモデルは基本的に、この特定のケースで利用可能な他のあらゆる選択肢を圧倒しています。

アクセス方法と実装

このモデルを使用したい場合、いくつかのアクセス方法があります。Gemini APIまたはVertex APIを通じてアクセスできます。そして、Gemini APIを使用して同じことを行う方法をお見せします。

これはGoogle Collabノートブックです。YouTube概要欄にリンクを貼っておきます。直接試すことができます。唯一の要件は、Google AI Studioに行ってGoogle APIキーを取得し、秘密情報のところに行ってGoogle APIキーをここに追加することです。

それが完了したら、これは文字通りGoogle APIキーと呼ばれます。そうすれば私のコードを実行でき、コードは技術的に問題なく動作するはずです。

実装の第一歩

このコードで最初のステップは、適切なライブラリセットをインポートすることです。Google genaiを使用します。これはGoogle Collabノートブックに直接インストールされています。そうでない場合は、google-genaiです。

理想的には、この特定のケースで私が行ったように画像をダウンロードすることはありません。この画像を見ると、こう書かれています。「この世の人生は単なる妄想の楽しみである」と。これは、埋め込みがどれだけうまく機能しているかを確認するために非常に重要です。

後でこの例に戻ります。画像を取得したら、画像をダウンロードします。そして繰り返しますが、この画像は、企業のセットアップではRDBMSデータセットの一部かもしれません。顧客サポートチケットの一部かもしれないし、マーケティング資料かもしれません。

技術的にはダウンロードすることはありませんが、このデモのためだけに行っています。

画像埋め込みの実装

それが完了したら、まずマルチモーダル性をお見せしますが、すべてを一つのモデルに送信するわけではありません。まず画像埋め込みだけをお見せします。

画像を開いて、それを読み取ります。画像はこのfというオブジェクトの中にあります。このファイルで開いて、image_bytesに保存します。そしてその埋め込みを行います。

埋め込みを表示すると、これが埋め込みであることがわかります。先ほど言ったように、デフォルトの出力は3,072です。ここで確認できます。それがMRLがここで行っていることです。デフォルトの出力は3,072ですが、1,536、768など、組織のセットアップでパフォーマンスとストレージコストに適した次元を選択できます。

それで進めることができます。しかし、私たちはデフォルトのものをそのまま使用しています。ここで3,067、1、2、3、4、5、プラスもう3,067項目が見えます。

基本的に行ったことは、画像を取得して、RAG(検索拡張生成)や、LLMでのセマンティック検索など、さまざまなタスクで使用できる数値表現に変換したということです。

マルチモーダル埋め込みの実演

今お見せしているのは、画像だけでなく、ここで見えるように、画像だけでなく、テキストを送信して、それから画像を送信しています。出力は2つの埋め込みが得られていることがわかります。

最初は1つの埋め込みだけでしたが、今は2つの埋め込みが得られています。なぜなら、2つのタイプがあるからです。1行目は「人生の意味は何か」というテキストです。2行目は私たちが持っている画像で、基本的には「この世の人生は単なる妄想の楽しみである」というものですが、画像にはより多くの詳細があります。

これはOCRモデルではありません。ここで見えるように、画像にはより多くの情報があります。バックパックを持った男性がいて、背景には緑がたくさんあります。画像自体に豊富な情報があることがわかります。

埋め込みを取得して、それを変換する、あるいは平坦化すると言ってもいいでしょう。そしてそれをpandasデータフレームとして表示します。これらは数値表現のようなもので、これらの数字が何らかの形で、テキストで与えた情報と画像の情報をカプセル化しようとしています。

2行と3,072列があります。技術的には、これらの埋め込みをRDBMSテーブルとして保存できます。つまり、典型的なSQLテーブルです。しかし、ベクトルデータベースを使用したい場合は、それもできます。

コサイン類似度による比較

埋め込みができたら、単純にプロットを行って、埋め込みがどのように見えるかを確認します。これは技術的にマルチモーダルなものなので、これを見てもあまり意味がないかもしれません。

しかし今やろうとしているのは、この2つの間の類似性を比較することです。これは機械学習で距離メトリックと呼ばれるもので、コサイン類似度と呼ばれる、埋め込み空間のデータポイントを比較するために最もよく使われる方法の一つを使用しています。

ここでコサイン類似度を使用しています。何らかのセマンティック検索を構築している場合、すでにコサイン類似度を使用したことがあるかもしれません。これは0から1の範囲の数値で、1に近いほど類似性が高く、0に近いほど類似性が低いということです。

これがその仕組みで、ここで与えたテキスト、この場合「人生の意味は何か」の類似性は約0.36で、それほど類似性がありません。

テキストと画像の類似性実験

しかし、テキストを画像の内容により関連したものに少し変更したらどうでしょうか。「この世の人生は妄想である」と言いました。そうすると、同じ実習で、ここでノートブックを確認できますが、類似性が増加したことに気づくでしょう。0.3くらいから0.43に上がっています。

では、画像とは関係のない完全にランダムなものを与えたら、「YouTubeは素晴らしい」と言うと、類似性が下がるのがわかります。ここで行うことは、「YouTubeは素晴らしい」を与えるだけでなく、まずここに行って、ここで利用可能なものを文字通りコピーします。そうすれば、まったく同じテキストを使用することになります。

ここに戻って貼り付けて、「単なる妄想」、そして正直なところ、どうなるかわかりません。埋め込みなので、ここでいくつかの類似性を示そうとしているだけです。これを実行します。

この時点で、埋め込みを作成し、ここで2つの埋め込みがあります。そしてここで埋め込みを収集し、それをデータフレームとして表示する、またはDFの中にデータフレームとして保存します。そしてコサイン類似度行列を構築し、それをヒートマップとして表示します。

以前見たものより類似性が増加していることがわかります。なぜなら、今はテキスト自体から画像の内容に近づいているからです。繰り返しますが、これは非常に堅実な例ではありません。

実際にできることは、その上にセマンティック検索を構築することです。マルチモーダルセマンティック検索をその上に構築できます。このGoogle Collabノートブックは、YouTube概要欄で共有します。

まとめと展望

正直に言うと、これは素晴らしいリリースだと思います。このような埋め込みモデルで多くのことができます。これが好きな理由は、先ほど言ったように、これが多言語かつマルチモーダルだからです。つまり、複数の言語、そして同時に複数のモダリティを持つことができます。つまり、PDFを含む異なるモダリティを持つことができるのです。

これは非常に高速で、組織内部の多くのドキュメントを埋め込み空間に変換し、チャットボット、自動質問応答システムを構築したり、シンプルなセマンティック検索を行いたい場合など、好きなものを構築できます。

コメント欄でこれについてどう思うか教えてください。また別の動画でお会いしましょう。ハッピーコーディング。

コメント

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