企業の文書はテキスト・図表・画像が入り混じった複合形式が大半を占めます。しかし多くのRAG実装はテキストのみを対象にしており、肝心の図や表の情報が欠落した状態で回答を生成している現場も少なくありません。マルチモーダルRAGは、PDF・画像・表データといった非テキスト情報を含めて検索対象にするアプローチです。本記事では3つの主要アプローチ、データタイプ別パイプライン、実装例を体系的に解説します。
なぜマルチモーダルRAGが必要なのか
企業が蓄積するナレッジの大半は純粋なテキストではありません。業務報告書にはグラフと数値表が埋め込まれ、マニュアルには操作画面のスクリーンショットが挿入され、決算資料や商品カタログは大量の図表で構成されます。これらの非テキスト情報を無視したRAGは、文字部分しか検索できないため、本来の情報量のごく一部しか活用できないという致命的な弱点を抱えます。
「マニュアルを見せているのに回答が的外れ」「PDFに書いてあるはずの仕様が出てこない」といった相談の多くは、実は文書の図表や画像領域を処理できていないことが原因です。マルチモーダルRAGはこの壁を取り払い、すべての情報を検索可能な状態にすることを目指します。
マルチモーダルRAGの3つのアプローチ
マルチモーダルRAGの実装方針は大きく3つのアプローチに分類できます。それぞれ精度・コスト・実装難易度のトレードオフが異なるため、自社要件に合わせて選ぶ必要があります。
アプローチ1: テキスト変換アプローチ。OCRや表抽出ツールを用いて非テキスト情報をテキスト化し、従来のテキストRAGと同じパイプラインに流し込む手法です。既存RAGの資産を活かせる点と、運用の単純さが魅力です。アプローチ2: マルチモーダルエンベディングアプローチ。CLIPのようなマルチモーダルモデルで画像やテキストを同一空間にベクトル化し、画像もクエリと直接比較する手法です。精度は高い反面、専用モデルとインフラが必要となります。アプローチ3: マルチモーダルLLMアプローチ。GPT-4oやGemini 2などの画像入力対応LLMに、取得した画像をそのまま渡して回答を生成します。前処理を最小限にできる反面、LLM呼び出しコストが膨らみやすい点が課題です。
【マルチモーダルRAGの3アプローチ比較】
アプローチ1: テキスト変換
[PDF/画像] --> [OCR + 表抽出] --> [テキスト] --> [従来RAG]
特徴: 既存パイプライン活用 / 情報損失リスクあり
アプローチ2: マルチモーダルエンベディング
[PDF/画像] --> [CLIP等でベクトル化] --> [マルチモーダルベクトルDB]
^ |
| v
[クエリ] --> [同一空間でベクトル化] --> [類似検索]
特徴: 画像を画像のまま検索 / 専用モデル必須
アプローチ3: マルチモーダルLLM
[PDF/画像] --> [ページ画像として保存]
[クエリ] --> [検索] --> [画像 + テキストを LLM に直接入力]
特徴: 前処理最小 / LLM呼び出しコスト大
| アプローチ | 精度 | コスト | 実装難易度 | 対応データタイプ | 推奨場面 |
|---|---|---|---|---|---|
| テキスト変換 | 中 | 低 | 低 | PDF、Office、表 | 既存RAGの拡張 |
| マルチモーダルエンベディング | 高 | 中〜高 | 中 | 画像、図、写真 | 図面・写真検索 |
| マルチモーダルLLM | 高 | 高 | 中 | 全て | 精度最優先 |
データタイプ別の処理パイプライン
実務では単一のアプローチでは完結せず、データタイプごとに最適な前処理を組み合わせるのが定石です。代表的なタイプごとの推奨パイプラインを整理しました。
| タイプ | 前処理 | エンベディング方法 | チャンキング戦略 | 注意点 |
|---|---|---|---|---|
| PDF(テキスト中心) | PyMuPDF等でテキスト抽出 | テキストエンベディング | 段落 / ページ単位 | ページ番号をメタデータ化 |
| PDF(図表混在) | unstructured + 表抽出 | テキスト + 表要約 | 要素ごとに分離 | 表はHTML化で保存 |
| スキャン画像 | OCR(Azure AI Vision等) | テキストエンベディング | レイアウト単位 | OCR精度の事前評価 |
| 図面・写真 | キャプション自動生成 | 画像 + キャプション | 1画像 = 1チャンク | キャプション品質が要 |
| Excel / CSV | 行単位 + ヘッダー付与 | テキストエンベディング | 1行 = 1チャンク | スキーマ情報を明示 |
| PowerPoint | スライドごとに分解 | テキスト + スライド画像 | 1スライド = 1チャンク | タイトルを強調 |
# PDFから表を抽出してRAGに組み込む
import fitz # PyMuPDF
from unstructured.partition.pdf import partition_pdf
from langchain.schema import Document
elements = partition_pdf(
filename="financial_report.pdf",
strategy="hi_res",
infer_table_structure=True,
extract_images_in_pdf=False
)
docs = []
for el in elements:
meta = {"type": el.category, "page": el.metadata.page_number}
if el.category == "Table":
text = f"【表】{el.metadata.text_as_html}"
else:
text = el.text
if text and text.strip():
docs.append(Document(page_content=text, metadata=meta))
print(f"抽出要素数: {len(docs)}")
マルチモーダルRAGの実装例
LlamaIndexにはマルチモーダルRAG向けのユーティリティが揃っており、少ないコードで画像+テキスト混合の検索を実装できます。以下の例では、ページを画像とテキストの両方で保持し、検索時にはテキストでヒットしつつ、生成時に画像もLLMに渡す構成を組んでいます。
# LlamaIndexによるマルチモーダルRAG実装例
from llama_index.core import SimpleDirectoryReader, StorageContext
from llama_index.core.indices.multi_modal import MultiModalVectorStoreIndex
from llama_index.vector_stores.qdrant import QdrantVectorStore
from llama_index.multi_modal_llms.openai import OpenAIMultiModal
import qdrant_client
client = qdrant_client.QdrantClient(path="qdrant_mm")
text_store = QdrantVectorStore(client=client, collection_name="text_col")
image_store = QdrantVectorStore(client=client, collection_name="image_col")
storage = StorageContext.from_defaults(
vector_store=text_store, image_store=image_store
)
docs = SimpleDirectoryReader("./mixed_docs").load_data()
index = MultiModalVectorStoreIndex.from_documents(docs, storage_context=storage)
mm_llm = OpenAIMultiModal(model="gpt-4o", max_new_tokens=512)
query_engine = index.as_query_engine(multi_modal_llm=mm_llm, similarity_top_k=3)
resp = query_engine.query("最新の決算概要を教えて")
print(resp)
この構成では、ユーザーの質問に対してテキストと画像の両方で関連性の高いチャンクを検索し、マルチモーダルLLMが統合的に回答を生成します。図表の数値や画像中のラベルまで回答に反映できるため、従来RAGでは拾えなかった情報を活用できるようになります。
精度改善のポイント
マルチモーダルRAGの精度を引き上げる鍵は「非テキスト情報に意味のある説明を付ける」ことです。具体的には、図表には自動生成キャプションを付与し、画像にはVLM(Vision Language Model)で生成した説明文を併記し、表データは数値だけでなく「この表が示している内容」を自然言語で要約しておきます。これらの説明文はテキストエンベディングでインデックス化されるため、従来RAGのパイプラインと互換性があります。
さらに、同じチャンクにテキスト・キャプション・画像パスをセットで保存しておくと、検索ヒット後にLLMへ画像本体を渡すハイブリッド運用が可能になります。このように「テキスト化で検索精度を上げ、生成時に画像を活用する」2段構えが、マルチモーダルRAGの実務ではもっとも費用対効果の高い構成です。
まとめ――「すべてのデータを検索可能にする」がマルチモーダルRAGの目標
- 企業の文書はテキスト+図表+画像の複合構造、テキストのみRAGは情報を取りこぼす
- テキスト変換・マルチモーダルエンベディング・マルチモーダルLLMの3アプローチがある
- データタイプ別に前処理を切り分け、チャンクにキャプションを付けて精度を底上げ
- 検索はテキストで、生成は画像も活用するハイブリッドが費用対効果に優れる
DE-STKでは社内文書のマルチモーダル化診断、前処理パイプライン構築、マルチモーダルRAG実装を一貫して支援しています。PDFや図表を含む社内データのRAG化をご検討の際はご相談ください。
よくある質問(FAQ)
Q. マルチモーダルRAGとは何ですか?
テキストだけでなく、画像・図表・PDFなど複数の形式のデータを検索対象に含むRAGシステムです。企業の文書はテキスト+図+表の混合が多いため、これらを網羅的に検索・活用することで回答精度が向上します。既存のテキストRAGの延長線上で導入できるアプローチから、マルチモーダルLLMを本格活用する高精度アプローチまで選択肢は幅広く存在します。
Q. PDFの図表もRAGで検索できますか?
はい、可能です。テキスト変換アプローチ(OCR+表抽出でテキスト化)やマルチモーダルLLMアプローチ(画像としてLLMに直接入力)を使うことで、図表の内容もRAGの検索対象にできます。特に財務諸表やカタログといった表構造が重要な文書では、表のHTML化と要約文付与を組み合わせる方法が実用的です。
Q. マルチモーダルRAGの導入は難しいですか?
テキスト変換アプローチならRAGの既存構成をそのまま活かせるため、比較的容易です。マルチモーダルエンベディングアプローチは精度が高い反面、専用のモデルやインフラが必要になります。まずはテキスト変換アプローチから始め、精度に不足を感じた段階で他の手法を組み合わせるのが実務的な進め方です。