EmbeddingGemma 2で図表検索を検証して分かった、マルチモーダルの理想とテキストの現実
きっかけ
教科書などに載っている図を自然な日本語の文章で検索できるようにしたいと考えました。
既存の自作システムはキーワード完全一致による検索だったため、表記揺れや言い換え、日本語での検索に課題がありました。そんな中、テキストと画像を同じ特徴空間に埋め込めるモデル「EmbeddingGemma 2」が公開されたため、「これを使えば、言葉のニュアンス(意味)から目的の図を見つけ出せるのではないか」と思い、検証してみました。
学んだこと
- 言語をまたいだ検索が可能
EmbeddingGemma 2 はテキストと画像を同じ768次元の空間に埋め込めるため、「日本語の検索クエリ」で「英語キャプションの図」をそのまま検索できます。 - 検索精度を左右したのは画像ではなくテキストだった
自作した評価セット(40クエリ)で精度を検証したところ、結果はほぼテキスト情報に依存していました。- 正解が含まれる割合(Recall@10)は、テキストのみで「0.84」、画像のみでは「0.52」。
- テキストと画像を組み合わせても、明確な精度の向上は見られませんでした。
- 日英の言語間ギャップの存在
英語クエリに比べて日本語クエリの検索精度は高くなく、MRR(平均逆順位)は英語の「0.975」に対し、日本語は「0.76」にとどまりました。 - 既存の「日本語訳」データの活用が特効薬になった
データベース内にあった既存の日本語訳キャプションもベクトル化して検索対象に加えたところ、日本語のMRRは「0.967」まで上がり、英語検索とほぼ同等の精度を達成できました。 - 環境構築と推論速度(GPUの活用)
WSL上のROCm(AMD GPU)環境を利用したことで、画像の埋め込み処理はCPU比で約3.4倍高速化しました。なお、正常に動作させるには eager attention の指定と、PILによる画像読み込みが必要でした。
自分なりの理解
「マルチモーダルモデルを使えば、画像の内容も見て賢く探してくれるはずだ」と期待していましたが、実際に検索精度を大きく左右していたのは「キャプションや本文テキストの質の高さ」でした。
精度のボトルネックはモデル自体の視覚認識能力ではなく、「日本語と英語の間の橋渡し」にありました。そしてその壁を打ち破ったのは、新しいアルゴリズムや複雑な工夫ではなく、「手元にすでにあった日本語訳データ」を活用することでした。
実践へのつなげ方
- AI検索を導入する際は、まず小さな評価セットを作る
数十件でも正解ラベル付きのクエリを用意しておけば、手法の比較や改善の効果を「感覚」ではなく「客観的な数値」で正しく判断できます。 - 新機能を作る前に、手元の資産を見直す
WSL上のGPU環境や、過去に用意していた翻訳済みデータなど、手持ちのリソースを再利用することが最短の解決策になる場合があります。
次に試すこと
画像を入力にする「類似画像検索(画像 to 画像)」の検証 「似た画像やグラフを探す」ような画像クエリであれば、画像ベクトルの本領が発揮される可能性があり検証してみたいです。