画像とテキストによるマルチモーダル意味検索
人間として、私たちは感覚を通して世界を解釈する。私たちは音を聞き、画像、映像、テキストを目にし、しばしば互いに重ね合わせる。私たちは、このような複数のモダリティとそれらの関係を通して世界を理解する。人工知能が人間の能力に真に匹敵し、あるいはそれを超えるためには、複数のレンズを通して同時に世界を理解する、これと同じ能力を開発しなければならない。
この投稿とそれに付随するビデオ(近日公開予定)およびノートブックでは、テキストと画像の両方を一緒に処理できるモデルにおける最近のブレークスルーを紹介する。私たちは、単純なキーワードマッチングを超えたセマンティック検索アプリケーションを構築することで、これを実証します - ユーザが求めているものと、彼らが検索しているビジュアルコンテンツとの関係を理解します。
このプロジェクトが特にエキサイティングなのは、Milvusベクトル・データベース、HuggingFaceの機械学習ライブラリ、アマゾンのカスタマー・レビューのデータセットなど、すべてオープンソースのツールで構築されていることだ。ほんの10年前であれば、このようなものを構築するにはかなりの専有リソースが必要だっただろうと考えると、驚くべきことだ。今日、これらの強力なコンポーネントは自由に利用でき、実験する好奇心さえあれば誰でも革新的な方法で組み合わせることができる。
我々のマルチモーダル検索アプリケーションは、retrieve-and-rerankタイプである。RAG(retrieval-augmented-generation)をご存知であれば、非常によく似ているが、最終的な出力は、大規模言語ビジョンモデル(LLVM)によって再ランク付けされた画像のリストである。ユーザーの検索クエリにはテキストと画像の両方が含まれ、ターゲットはベクトル・データベースにインデックスされた画像セットである。このアーキテクチャには、インデックス作成、検索、再ランク付け(「生成」のようなもの)という3つのステップがある。
インデックス作成
検索アプリケーションは、検索する何かを持っていなければならない。私たちの場合、「Amazon Reviews 2023」データセットの小さなサブセットを使用する。このデータセットには、あらゆる種類の商品に関するAmazonのカスタマーレビューのテキストと画像の両方が含まれている。私たちが構築しているこのようなセマンティック検索は、eコマースサイトの便利な追加機能として想像できるだろう。このノートブックは、適切なデータベースと推論を導入することで、本番サイズまで拡張することができる。
我々のパイプラインの最初の "マジック "は、埋め込みモデルの選択である。私たちは、最近開発されたVisualized BGEと呼ばれるマルチモーダルモデルを使用しています。このモデルは、テキストと画像を一緒に、またはどちらか一方を別々に、同じ空間に埋め込むことができます。このようなモデルは、例えばMagicLensのように、最近も開発されている。
上の図は、[ライオンの横向きの画像]と "この正面図 "というテキストを埋め込んだ場合の埋め込みは、[ライオンの正面向きの画像]とテキストを埋め込まない場合の埋め込みに近いことを示しています。同じモデルを、テキスト+画像の入力にも、画像のみの入力にも(テキストのみの入力にも)用いる。このようにして、モデルは、クエリテキストがクエリ画像とどのように関連しているかというユーザーの意図を理解することができる。
我々は、対応するテキストなしで900の商品画像を埋め込み、milvusを使用してベクトルデータベースに埋め込みを保存する。
検索
データベースが構築されたので、ユーザークエリを提供することができる。あるユーザーが次のようなクエリを持ってきたとしよう:「というクエリに[Leopardの画像]を加えたとする。つまり、ヒョウ柄のスマホケースを探しているのです。
ユーザーのクエリのテキストは、"ヒョウの皮 "ではなく、"これ "と言っていることに注意してください。私たちの埋め込みモデルは、"this "とそれが指すものを結びつけることができるに違いない。これは、以前のモデルの反復がこのようなオープンエンドの指示を扱うことができなかったことを考えると、印象的な偉業である。MagicLensの論文では、さらに例を挙げている。
クエリーテキストと画像を共同で埋め込み、ベクトルデータベースの類似性検索を行い、上位9件を返す。結果をヒョウのクエリー画像とともに上図に示す。上位のヒットはクエリに最も関連するものではないようだ。7番目の結果が最も関連性が高いようで、ヒョウの皮がプリントされた電話カバーである。
世代
一番上の結果が最も関連性の高いものではないという点で、検索は失敗したようだ。しかし、再ランク付けのステップでこれを修正することができる。多くのRAGパイプラインにおいて、検索されたアイテムの再ランク付けは重要なステップであることはご存知だろう。我々はPhi-3 Visionをリランカーモデルとして使用する。
まず、LLVMにクエリー画像のキャプションを生成するよう依頼する。LLVMは次のように出力する:
「この画像はヒョウの顔のクローズアップで、斑点のある毛並みと緑色の目に焦点を当てています。
次に、このキャプションと、9つの結果とクエリ画像を含む1つの画像を与え、モデルに結果の再ランク付けを依頼するテキストプロンプトを構築し、答えをリストとして与え、最も一致するものを選択する理由を提供する。
出力は上の図のように視覚化され、最も関連性の高いアイテムがトップマッチになりました:
"最も適切なアイテムはヒョウをテーマにしたもので、同じようなテーマのスマホケースを求めるユーザーのクエリ指示にマッチしています。"
我々のLLVMリランカーは、画像とテキストを横断して理解を行い、検索結果の関連性を向上させることができた。興味深い成果として、再ランカーは8つの結果しか与えず、1つ落としていることがある。これはガードレールと構造化出力の必要性を強調している。
まとめ
この投稿とそれに付随するビデオ(近日公開予定)とノートブックでは、テキストと画像を横断するマルチモーダルな意味検索のためのアプリケーションを構築した。埋め込みモデルは、テキストと画像を同じ空間に一緒に、あるいは別々に埋め込むことができ、基礎モデルは、テキストと画像を入力し、それに対してテキストを生成することができた。重要なのは、埋め込みモデルは、自由形式の指示というユーザーの意図をクエリー画像に関連付けることができ、そうすることで、ユーザーが結果を入力画像にどのように関連付けたいかを指定できたことである。
これは、近い将来に起こることのほんの一例に過ぎない。画像、ビデオ、音声、分子、ソーシャルネットワーク、表データ、時系列データなど、その可能性は無限である。
そして、これらのシステムの中核にあるのが、システムの外部「メモリ」を保持するベクトル・データベースである。Milvusはこの目的に最適である。Milvusはオープンソースで、十分な機能を備えており(Milvus 2.5の全文検索についてはこちらの記事を参照)、ウェブスケールのトラフィックと100ミリ秒以下のレイテンシで数十億のベクトルまで効率的にスケールする。Milvusのドキュメントで詳細を確認し、私たちのDiscordコミュニティに参加し、次回のUnstructured Data meetupでお会いできることを楽しみにしています。それではまた!
リソース
Youtube AWS Developersビデオ(近日公開予定)
埋め込みモデル可視化されたBGEモデルカード
他の埋め込みモデルMagicLensモデルレポ
LLVM:Phi-3 Visionモデルカード
データセットアマゾンレビュー2023
Like the article? Spread the word