はじめに
こんにちは、株式会社NeurestXの谷崎です。
RAG(Retrieval-Augmented Generation / 検索拡張生成)とは、生成AIが回答を生成する際に外部知識を検索・参照する技術です。検索対象はテキスト文書だけでなく、Webページ、表データ、画像など多岐にわたります。今回は、RAGがどのようにユーザの質問に対応する画像を検索しているのか気になったので、調べて使ってみました。なので、ここでは画像を対象とした話しかしません。
Vision RAGを理解しよう:単一ベクトル型 vs マルチベクトル型の違いとエンタープライズ活用 を多分に参考にしました。
RAGにおける検索技術の進化
RAGでは、ユーザの質問に関連する文書や画像を検索し、その内容を生成AIへ渡します。この記事では検索部分にフォーカスします。
OCRベース
画像内の文章をテキスト化して埋め込む従来の方法です。軽量ですが、表やレイアウト情報が失われます。
単一ベクトル
2021年にOpenAIがCLIPというモデルを発表し、画像と文章を同じベクトル空間に埋め込めるようになりました。Vision Embeddingの時代が始まり、OpenAI CLIP、ALIGN、SigLIP、JinaCLIPなど派生もたくさん生まれました。しかし、画像を1本のベクトルに変換するので情報を取りこぼすことが多く、長文理解や文書画像が弱点でした。
マルチベクトル
2024年にはColPaliというモデルが登場し、文書画像を複数のパッチに分割して表現するマルチベクトル検索が注目を集めました。これはテキスト検索分野で提案されていたColBERTのLate Interactionを文書画像検索へ応用したものです。従来の単一ベクトル方式では失われやすかった局所的な情報を保持できる一方、保存するベクトル数や検索時の計算量が増加するという課題もあります。
これはLate Interactionの考えでクエリとドキュメントからスコアを導出する仕組みです。
構成技術
Vision Transformer
2020年頃からVision Transformer(ViT)が登場し、画像を小さなパッチに分割してTransformerで処理する手法が普及しました。従来のCNNより広範囲の関係性を捉えやすく、多くのVision-Language Modelの基盤となります。今回でいえば、単一ベクトル型とマルチベクトル型は両方この技術を基盤としています。
今回の検証
環境
Google Colab上で検証しました。
データセット
本検証では、ViDoReベンチマークで公開されている「vidore/docvqa_test_subsampled」の先頭90件を使用しました。ViDoReは文書画像検索の評価を目的として整備されたデータセットであり、クエリと対応する文書画像の正解ペアが付与されています。
評価指標
検索性能の評価には Recall@1、Recall@5、MRR(Mean Reciprocal Rank)を用いました。
Recall@1 は検索結果の1位に正解が含まれる割合、Recall@5 は検索結果上位5件以内に正解が含まれる割合を表します。また、MRRは正解が検索結果の何位に現れたかを考慮する指標で、より上位に正解が表示されるほど高い値になります。
手法
本検証では以下を用いた3手法を試してみました。
Tesseract OCR+BGE-M3
文書画像にTesseract OCRを適用してテキストを抽出し、そのテキストをBGE-M3でベクトル化して検索を行いました。BGE-M3は北京智源人工知能研究院(BAAI)が公開している多言語対応の埋め込みモデルであり、日本語を含む100以上の言語に対応しています。
Cohere Embed v4
Cohereが提供するマルチモーダル埋め込みモデルであり、テキストだけでなく画像も同一のベクトル空間へ埋め込むことができます。画像全体を単一のベクトルとして表現する単一ベクトル方式の代表例として採用しました。
ColQwen2.5
ViDoReによって公開されている文書画像検索向けのマルチベクトルモデルです。Vision Transformerを用いて文書画像を複数のパッチへ分割し、それぞれを個別のベクトルとして保持します。本検証ではマルチベクトル方式の代表例として採用しました。
結果
| Recall@1 | Recall@5 | MRR | |
|---|---|---|---|
| Tesseract OCR + BGE-M3 | 0.41 | 0.55 | 0.45 |
| Cohere Embed v4 | 0.51 | 0.69 | 0.58 |
| ColQwen2.5 | 0.66 | 0.86 | 0.74 |
おわりに
今回の結果ではOCR+BGE-M3、Cohere Embed v4、ColQwen2.5の順に性能が向上しました。ColQwen2.5は画像文書を複数のパッチに分割して扱うため、文書内の細かな情報を保持でき、高い検索性能を示したと考えられます。一方で、高い検索性能を実現できる反面、計算資源の消費が大きく、実行環境によっては十分に扱えない場合もあるため、必ずしも最適な手法であるとは言えません。
参考






