Gemini APIのFile Search ツールがアップデートされ、画像を含むマルチモーダルRAGが構築できるようになった。

2026年5月5日、GoogleはGemini API File Searchツールに3つの主要機能を追加した。マルチモーダルサポート、カスタムメタデータフィルタリング、ページ単位の引用だ。ファイルストレージとクエリ時の埋め込み生成は引き続き無料で利用できる。

この記事でわかること:

  • File Searchに追加された3つの新機能の詳細
  • Gemini Embedding 2によるマルチモーダル検索の仕組み
  • カスタムメタデータとページ引用の使いどころ
  • 料金体系と実装の始め方

https://ai.google.dev/gemini-api/docs/file-search

RAGが抱えてきた3つの壁

本番環境でRAGシステムを運用すると、開発者は繰り返し同じ問題に直面する。テキスト以外のデータが検索できない、大量ドキュメントから関連ファイルだけ絞り込めない、そして回答がどこから来たのか確認できないという3点だ。

テキストしか処理できない従来のRAGでは、チャートや製品写真はOCRで文字起こしするか諦めるしかなかった。メタデータフィルタリングがなければ、無関係なドキュメントまで検索対象に入り込む。引用がなければ、ユーザーは回答の信頼性を自分では検証できない。

今回の3つのアップデートは、これらの課題にそれぞれ直接対応している。

1. マルチモーダル対応 — 画像をそのままインデックスできる

File SearchがGemini Embedding 2モデルと統合され、画像とテキストを同一の検索ストアで扱えるようになった。画像をOCRでテキスト化する必要はなく、視覚的なスタイルや感情的なトーンといった内容を埋め込みベクトルに変換して保存・検索できる。

Gemini Embedding 2は、テキスト・画像・動画・音声・ドキュメントを単一の埋め込み空間にマッピングする初のGemini APIモデルだ。1リクエストで処理できる上限はテキスト8,192トークン、画像6枚、動画120秒、音声180秒、PDF6ページとなっている。

公式ブログが挙げる活用例の一つは、クリエイティブエージェンシーが「特定の感情的トーンや視覚スタイル」を自然言語で指定してビジュアルアーカイブを検索するケースだ。ECサイトが商品カタログの写真とスペックシートをまとめてインデックスし、テキストクエリで商品を特定するといった使い方も可能になる。

衣料品レンタル会社のNuulyは、Gemini Embedding 2を使って倉庫内のタグなし衣料品を写真から特定するシステムを構築し、Match@20の精度を60%から約87%に向上させた(参考)。

2. カスタムメタデータ — ノイズを排除して検索を絞り込む

大量のドキュメントを対象にすると、無関係な情報が混入して精度が落ちる。カスタムメタデータ機能では、ファイルに department: Legalstatus: Final といったkey-valueラベルを付与し、クエリ時にフィルタリング条件として使える。

法務部門のドキュメントのみに絞る、最終承認済みファイルだけ検索するといった絞り込みをAPIレベルで実現できる。非構造化データに構造を持ち込む手段として、スケールするRAGシステムには欠かせない機能だ。

3. ページ引用 — 回答の根拠をページ単位で提示

AIが大量のPDFから回答を生成した場合、根拠をユーザーが検証できないことが信頼性の問題になりやすい。ページ引用機能は、インデックスしたPDFのどのページから情報を取得したかをレスポンスに紐付ける。

ユーザーは「第14ページを参照」という形で出典を即座に確認でき、ファクトチェックや社内ドキュメント検索での信頼性が上がる。法律・医療・財務といった精度が求められる分野のRAG活用で特に効果が大きい。

料金と実装の始め方

ファイルストレージとクエリ時の埋め込み生成は無料だ。課金が発生するのは、初回インデックス時の埋め込み生成と通常のGeminiモデルのinput/outputトークンのみとなっている。

Pythonでの実装はシンプルだ。gemini-embedding-2 を指定してFile Search Storeを作成し、ファイルをアップロードする。

from google import genai
from google.genai import types
import time

client = genai.Client()

file_search_store = client.file_search_stores.create(
    config={
        'display_name': 'my-search-store',
        'embedding_model': 'models/gemini-embedding-2'
    }
)

operation = client.file_search_stores.upload_to_file_search_store(
    file='sample.pdf',
    file_search_store_name=file_search_store.name,
    config={'display_name': 'sample-file'}
)

while not operation.done:
    time.sleep(5)
    operation = client.operations.get(operation)

response = client.models.generate_content(
    model="gemini-2.0-flash",
    contents="このドキュメントの要点を教えてください",
    config=types.GenerateContentConfig(
        tools=[types.Tool(
            file_search=types.FileSearch(
                file_search_store_names=[file_search_store.name]
            )
        )]
    )
)
print(response.text)

その後は generate_content()tools パラメータに FileSearch を渡すだけで、アップロードしたファイルを検索対象とするRAGが機能する。詳細なコードサンプルは公式ドキュメントで確認できる。

ベクトルを効率的に保存したい場合、Gemini Embedding 2はMatryoshka Representation Learning(MRL)で訓練されており、デフォルトの3,072次元をパラメータで1,536や768次元に削減できる。

まとめ

今回のFile Searchアップデートは、RAGシステム構築の3つのハードルを同時に下げるものだ。マルチモーダル対応により「テキスト以外のデータはRAGで扱いにくい」という前提が崩れ、メタデータとページ引用の追加で本番環境での信頼性も確保しやすくなった。ストレージと検索時の埋め込みが無料のまま維持されているため、プロトタイプから始めてスケールアップするコストも計算しやすい。