3行でいうと

  • 設計は、僕らの整理では3通りです。(1) ページを文字に直して、ふつうの文章の検索にする。(2) 画像や画面を、そのまま埋め込み(意味を表す数字の列)にする。(3) ページの画像から、細かく分けた多数の数字の列を作って探す(ColPali型)。
  • ColPaliの論文は、自分たちが作った評価(ViDoRe)で、(3)の平均スコアが81.3、文字に直す方式が65〜67だったと書いています。ただし評価も方法も同じ著者の作で、読んだのはその論文の記載だけです。ほかの資料でも同じとは限りません。
  • 探した結果をAIに読ませる側にも制限があります。Anthropicは1リクエストで画像100〜600枚、PDFは100〜600ページ、Googleは1ファイル1,000ページまで。Geminiの埋め込みモデルは、PDFを1回に最大6ページまでです。

この記事は、実際に使って確かめた記録ではありません。この記事は、公式の文書と論文のページを読んでまとめたものです。数字と仕様は2026年10月22日に確認しました。変わることがあります。

先に結論

前提:何が難しいのか

ふつうのRAG(検索拡張生成)は、資料を文章の塊(チャンク)に切り、各塊を埋め込み(意味の近さを測れる数字の列)に直して保存し、質問に近い塊を探して、AIに渡します。文章だけの資料なら、これで足ります。

図表入りの資料では、2つの場面で情報が落ちます。

  1. 探す段階: グラフや図の中身が、文字として取り出せていないと、質問に近い塊として見つかりません。
  2. 答える段階: 見つかった塊が文字だけだと、AIは図そのものを見られません。

そこで設計を考えるときは、「探す側」と「答える側」を別々に考えます。

3通りの設計

(1) 文字に直す (2) 画像・ページを直接埋め込む (3) ページ画像を多数の数字の列にする
流れ 文字の取り出し、配置の解析、図の説明文づくりで文章にし、ふつうの文章の埋め込みで探す 画像やPDFのページを、画像も扱える埋め込みモデルに入れ、1つの数字の列にして探す ページ画像を、画像も読めるAIで多数の数字の列にし、質問側の数字の列と細かく突き合わせて探す
公式・論文の例 ColPaliの論文が比較対象にした従来の流れ Googleのgemini-embedding-2 ColPali(論文)
得るもの 保存が小さい。既存のRAGの部品を使える 図表を落としにくい。仕組みが単純 文字に直す手間をなくせる。論文の評価で高い
払うもの 図の情報はキャプション次第。処理の手間がかかる 1回に入る量の制限がある。モデルを替えると作り直し 保存量が大きい。専用の仕組みが要る

(1)〜(3)の分類は、僕らの整理です。論文や公式文書が、この3つに分けて書いているわけではありません。

(1) 文字に直す

ColPaliの論文によると、従来の流れは、文書の構造の解析(レイアウト)、文字の読み取り(OCR)、図の説明文づくり(キャプション)を重ねて、文章の検索にかけます。論文には、この流れの1ページあたりの処理時間が合計7.22秒と書かれています(内訳は、レイアウト0.81秒、OCR 2.67秒、キャプション3.71秒、ページの符号化0.03秒)。

見方を変えると、文字に直すのは「前処理が重い」方式です。ただし、Googleの埋め込みモデルのページは、Gemini Developer APIではPDFのOCRが常にオンだと書いており、道具の側が文字の取り出しを内包する場合もあります。

(2) 画像やページを、そのまま埋め込む

Googleの埋め込みのページによると、gemini-embedding-2は、Gemini APIで最初のマルチモーダル(文字・画像・動画・音声・PDF)の埋め込みモデルで、入力は文字、画像、動画、音声、PDFで、出力は共通の空間の数字の列です。PDFは1回に1ファイルで最大6ページ、品質のためには1ページずつが勧められ、1ページあたり258の画像トークンに、取り出した文字のトークンが加わる、とあります。画像は1回に最大6枚(PNGかJPEG)です。

注意点が3つあります。入力は全体で8,192トークンまでで、超えた分は黙って切り捨てられます。1つのリクエストに複数の部品を入れると、1つにまとめた数字の列になります。別々のContentオブジェクトにすると、別々の数字の列になる、と書かれています。そして、旧モデル(gemini-embedding-001、文字のみ)とは数字の空間に互換がなく、切り替えるときは、すべて作り直しです。

Google Cloudのマルチモーダル埋め込みのページも読もうとしましたが、本文を取得できず、ここでは扱いません。

(3) ページ画像から、多数の数字の列を作る(ColPali型)

ColPaliの論文のページによると、ColPaliは、ページ画像から、高品質な「多ベクトル」(1ページを複数の数字の列で表す)の埋め込みを作る、画像も読めるAIです。質問側の数字の列と、遅延相互作用(レイトインタラクション)という突き合わせ方で、ページを探します。論文は、現代の文書検索の流れを大きく上回りながら、より単純で、速い、と書いています。モデルとデータは公開されています。

論文の数字(読んだのは公式のPDFの要約です)は次のとおりです。

保存量は、表の数字の比で約30倍です(257.5÷8.60、僕らの計算)。BGE-M3側が同じ1ページ単位かは、読んだ範囲では明記を確認できていません。論文は、圧縮の工夫(トークンのプーリング)も報告しています。係数3で、数字の列の数を66.7%減らしても、元の性能の97.8%が保たれた、とあります。

見立てです。数万ページを超える資料では、この保存量と、専用の索引の仕組みが、設計の中心の悩みになると思います。論文の評価は、書籍の数百ページの規模ではなく、文書が500〜1,600件ほどのタスクが中心です。

答える側:見つけたページを、どう渡すか

探したページを、AIに渡す方法は、大きく2つです。文字だけを渡すか、ページの画像も渡すか。後者は、各社の公式のPDF・画像の機能で実現できます。

見立てです。RAGで画像を渡す場合は、探した上位k件のページ分だけ、画像のトークンが増えます。たとえばGeminiなら、5ページで1,290トークン(258×5、僕らの計算)で、画像のトークンとしては少なく見えます。Anthropicは、文字の分と画像の分が両方かかるので、費用の見積もりには、トークン数を数える機能で自分の資料を測ることが、公式に勧められています。

公式の制限と数字(2026年10月22日に確認)

Anthropic(PDF・画像)

  • PDF:1リクエスト32MB、600ページ(コンテキストが100万トークン未満なら100ページ)。要件は、パスワードや暗号化のない標準のPDFです。字が小さく密なPDFは、ページ数の上限の前にコンテキストを使い切ることがあります。
  • 画像:1リクエストに、200kトークンのコンテキストのモデルは100枚、そのほかは600枚。1枚は8000×8000ピクセル以内、10MB以内(Claude APIを直接使う場合。Amazon BedrockとGoogle Cloudでは5MB)。1リクエストに20枚を超える画像を入れる場合は、すべて、どちらの辺も2000ピクセル以内にする必要があります。
  • 画像のトークン:28×28ピクセルが1トークンで、⌈幅/28⌉×⌈高さ/28⌉。標準は長辺1,568ピクセル・最大1,568トークン、Claude 4.7以降の高解像度は長辺2,576ピクセル・最大4,784トークン。1000×1000は1,296トークン。
  • 注意:小さい画像(200ピクセル未満)や回転した画像は誤りやすい、とあります。画像は文章より前に置く、複数の画像にはラベルを付ける、が勧められています。

Google(Gemini)

  • PDF(会話側):50MBまたは1,000ページ。1ページ258トークン。3072×3072より大きいページは縮小され、768×768より小さいページは拡大されます。Files APIの保存は48時間です。
  • 埋め込み(gemini-embedding-2):入力は全体で8,192トークン。文字は最大8,192トークン、画像は最大6枚、PDFは1回に1ファイルで最大6ページ(1ページ推奨)、動画は最大120秒、音声は最大180秒。出力は既定で3072次元で、128〜3072を選べます(推奨は768、1536、3072)。task_typeは使えず、接頭辞で検索の向きを示す方式です。バッチAPIは、通常の半分の価格です。

OpenAI(file search・検索)

  • ファイル検索の元になる検索機能(Retrievalのガイド):1回の検索の結果は既定で10件、max_num_resultsで最大50。ranking_optionsのscore_thresholdは0.0〜1.0。ハイブリッド検索は、重みを指定できます。ベクトルストアのチャンクは、staticの方式で、例ではmax_chunk_size_tokensが1200、chunk_overlap_tokensが200。ファイルの大きさやファイル数の上限は、読んだページには書かれていませんでした。

選び方・判断の基準

ここからは僕らの見立てです。公式が勧めている手順ではありません。

よくある失敗・つまずき

気をつけること

出典

更新履歴