ローカルRAGはなぜ重い?CPU・GPU・NPUで見るPDF読み込みと検索の負荷

公開日
2026-06-30
更新日
2026-09-17
情報確認日
2026-09-17
編集・運営
Local AI Compass

PDFチャットが重い時、原因は「モデルが大きい」だけではありません。抽出、chunk、embedding、検索、reranking、context組み立て、回答生成、保存先、外部APIを同じ「速度」として扱わず、工程ごとの時間・件数・providerを記録すると、PC購入やruntime変更の判断を誤りにくくなります。

導入前に確認すること

  • Windowsのバージョン、メモリ容量、GPU/VRAM、空き容量を確認する
  • 最初は軽量モデル、短い質問、少ない同時作業から始める
  • 公式サイトの対応OS、利用規約、モデルのライセンスを確認する

RAGが重い理由を工程ごとに分ける

RAGが重い理由を工程ごとに分けるの表
工程何が増えるか最初に記録する値主な確認先
PDF抽出・OCRページ、画像、表、抽出文字page数、文字数、抽出時間、OCR fallbackCPU、SSD、抽出/OCR設定
chunk・embeddingchunk数、vector数、embedding次元embedding model、chunk数、index時間、RAMCPU/GPU/NPU/API、RAM、SSD
retrievaltop-k候補、検索結果query時間、k、score、対象indexRAM、SSD、vector DB、CPU
reranking候補ごとの再スコア候補数、rerank model、rerank時間CPU/GPU/NPU/API
context組み立てpromptへ入る文字・tokenretrieved token、prompt token、重複量RAM、context上限、テンプレート
generation入力context、出力tokenTTFT、生成時間、tokens/s、providerRAM、VRAM、GPU/NPU/CPU

PDF抽出が遅いのにLLMを小さくしても改善しません。逆に、検索結果が正しいのに回答生成だけ遅い場合は、embeddingやvector DBを入れ替えるより、context長、モデル、VRAM、選択されたExecution Providerを確認します。

「遅い」を一つの数字にしない

RAGの体感時間は、初回のindex作成、質問ごとの検索、最初のtoken、回答の最後のtokenで別です。最低限、`parse_ms`、`index_ms`、`retrieve_ms`、`rerank_ms`、`time_to_first_token`、`generation_ms`を分け、同じ文書・同じ質問・同じ出力上限で比較します。

「遅い」を一つの数字にしないの表
比較条件揃えるもの揃えないと起きる誤判定
モデルmodel ID・revision・quantization・context上限小さいモデルをGPU/NPUの差と誤認する
RAG設定extraction、chunk size/overlap、embedding model/dim、top-k、rerank検索品質と生成速度の差が混ざる
hardwareWindows build、driver、RAM、GPU/VRAM、NPU、EP/providerNPU搭載だけで実行先を推測する
入力・出力同じPDF、同じquery、同じmax output、warm/cold状態cacheやcontext長の差を性能差と扱う
通信local、LAN、cloud、embeddingだけ外部などの経路速度だけ見て送信・料金・切断時の挙動を見落とす

Task ManagerのGPU/NPU使用率だけでは、どのRAG工程がどのproviderで動いたか分かりません。runtimeのmodel ID・EP・device表示と、工程別の時間を同じ測定記録へ残します。

CPU・GPU・NPU・外部APIはRAG全体に同じようには効かない

CPU・GPU・NPU・外部APIはRAG全体に同じようには効かないの表
資源・経路向いている可能性がある工程先に確認すること
CPUPDF処理、汎用処理、軽いembedding・推論CPU使用率だけでなく、RAM不足とSSD待ちを分ける
GPULLM生成、対応するembedding・rerankingVRAM容量、model offload、実際のGPU provider、driver
NPU対応runtimeでの省電力なembedding・reranking・推論の候補アプリ、モデル形式、EP、driver、fallback、実測
RAM / SSDindex、model、context、temporary file、cache空き容量、pagefile、indexサイズ、同時起動アプリ
外部API大きいembedding・reranking・generationを外部へ移す文書やqueryの送信、料金、認証、network latency、ログ

MicrosoftのWindows AI比較では、Windows AI APIsはready-to-useの機能、Foundry Localはready-to-useのLLM・音声モデル、Windows MLは自分で用意するONNXモデルの実行基盤として整理されています。RAGでembeddingやrerankingを自作する場合は、生成モデルの選択だけでなく、その工程をどのruntime・形式・providerへ載せるかを確認します。

Foundry LocalのFAQはhardwareを検出してproviderを選び、CPU fallbackを持つと説明していますが、これはFoundry Localのruntimeの挙動です。すべてのRAGアプリが同じprovider選択をする、またはNPU搭載だけで全工程がNPUへ移る、という意味ではありません。

Windowsの実行基盤をRAGの役割へ割り当てる

Windowsの実行基盤をRAGの役割へ割り当てるの表
選択肢RAGでの位置づけこのownerから戻る境界
Windows AI APIsWindowsが管理するready-to-use API。対応するOCR・semantic searchなどを使う入口API別のhardware、model readiness、入力制約は専用記事で確認する
Foundry Localready-to-useのLLM・音声モデルをlocal endpointやSDKから使う生成/音声層catalog、cache、loaded model、endpointはFoundry Local ownerへ戻る
Windows MLcustom ONNXのembedding・reranking・推論をCPU/GPU/NPUのEPへ載せる基盤model catalog、EP配布、OS/driver条件はWindows ML ownerへ戻る
LM Studio / Ollama各runtimeのlocal modelとAPI。embeddingを提供する構成もあるGGUF、model ID、GPU backend、API互換範囲は各runtime ownerで確認する
cloud APIlocal PCにない計算資源や共有・集中管理を使う経路文書送信、料金、認証、network・providerの契約を別に確認する

embedding・chunk・retrievalの設定変更は新しい基準で測る

Open WebUIの公式RAG説明では、質問を設定済みembedding modelでvector化して検索し、top matchesをpromptへ入れます。embedding modelが変わるとvector spaceが一致しなくなるため、古いindexとの速度・検索品質をそのまま比較しません。

embedding・chunk・retrievalの設定変更は新しい基準で測るの表
変えたもの起きること比較時の扱い
embedding model / dimension既存vectorとqueryの空間が合わなくなるtoolのre-index/re-upload手順を行い、model ID・dimension・index時間を記録
chunk size / overlapchunk数、indexサイズ、retrieval contextが変わる同じ文書を再indexし、chunk数・top-k・retrieval時間を比較
top-k / rerankingprompt長、rerank候補、generation時間が変わるqueryを固定し、retrieveとgenerationを別々に測る
抽出エンジン元textやtable・page情報が変わる可能性がある再indexだけで再抽出できるかを確認し、必要なら再upload・再parseする

LM Studioもembedding modelをRAGの構成要素として説明しています。embeddingをlocalで動かすか外部APIへ出すかは、LLM生成の場所とは別に記録します。検索が外れた時に、いきなり大きい生成モデルやNPUへ移るのではなく、embedding model・chunk・index・top-kの順に確認します。

NPUは「RAG全体の速度」ではなく工程別に評価する

NPUはembeddingやrerankingのような繰り返し処理を省電力にする候補ですが、RAG全体の改善は、モデル形式、compiler、入力/出力長、provider、アプリ実装に依存します。NPUの存在、TOPS、Windows AI APIの対応表だけから、LM Studio・Ollama・Open WebUIのRAG速度を推定しません。

Quant.npuのような静的量子化研究は、NPUに合う量子化形式が重要であることを示します。LENSのようなレイテンシ予測研究は、入力長、出力長、compiler、bucketingで速度が変わることを示します。RAGでは検索でcontextが増えやすいため、短文チャットだけで購入判断をしないでください。

Snapdragon X Elite / Hexagon NPU上のオンデバイスRAG研究も、特定hardware・実装・測定条件の研究として読みます。全Windows PC、全embedding model、全RAGアプリへ一般化せず、対象PCとruntimeで同じpipelineを測ります。

初心者の切り分け手順

  1. Windows build、driver、RAM、GPU/VRAM、NPU、runtime、model ID・revisionを記録する。
  2. モデル単体で短い質問を行い、generationだけのTTFT・生成時間・providerを保存する。
  3. 公開PDFを1つだけ入れ、抽出ページ数・文字数・parse時間を測る。
  4. 同じ文書をindexし、embedding model、chunk数、index時間、indexサイズを記録する。
  5. 同じqueryでretrieve・rerank・context tokenを測り、検索結果とscoreを保存する。
  6. 最後に固定max outputで回答を生成し、CPU fallback・対象GPU/NPU・cloudを一度に一つだけ比較する。

一度にモデル、chunk、top-k、providerを全部変えると原因が分からなくなります。まず「どの工程が遅いか」を特定し、その工程を担当する資源だけを変えます。

症状から最初の確認箇所を選ぶ

症状から最初の確認箇所を選ぶの表
症状最初に見るログ・値次の判断
PDFを入れるだけで遅いpage数、抽出/OCR時間、画像・表の有無、SSD待ちPDF抽出・OCR ownerへ戻り、LLMを先に変えない
index作成だけ遅いchunk数、embedding model、batch、local/API、RAM文書量とembedding経路を分けて比較する
検索は速いが回答が遅いretrieved token、prompt token、TTFT、生成provider、VRAMcontextを絞るか、生成モデル・providerを確認する
GPU/NPU使用率が低い実際のEP/provider、model variant、CPU fallback、driverTask Managerの使用率だけでなくruntimeの選択を確認する
回答の根拠がずれる抽出text、chunk、top-k、embedding model、source/pagehardwareより先に検索・引用の証拠を照合する
localは速いが共有・更新が難しい保存先、同期、export、network、cloud/APIの送信速度と運用・privacy・costを別の判断にする

関連記事と次の判断

よくある質問

PDFチャットが重い時はモデルを小さくすればよいですか?

一部は改善しますが、PDF抽出、embedding、検索、reranking、context、index、RAM/SSD不足も原因になります。工程ごとの時間を分けて確認してください。

NPU搭載PCならRAGは必ず速くなりますか?

必ずではありません。NPUを使えるruntime、model形式、EP、driver、文書量、入力/出力長、対象工程の対応がそろう必要があります。まずCPU基準と同じpipelineで実測します。

GPU使用率が低いのに回答が遅い時はどうしますか?

GPU使用率だけで成功・失敗を判定せず、generationかembeddingか、実際のprovider・model variant・CPU fallback・VRAM・context tokenを確認します。検索やPDF抽出がCPU側で遅い可能性もあります。

embedding modelを変えたら再indexが必要ですか?

ツールの仕様によりますが、Open WebUIはembedding modelが変わると古いvectorと互換にならないため、knowledge baseのre-indexを案内しています。変更前後のmodel ID・dimension・chunk数を分けて記録してください。

Windows MLとFoundry LocalはRAGでどう使い分けますか?

Foundry Localはready-to-useのLLM・音声モデルを使う生成層、Windows MLは自分のONNXモデルをCPU/GPU/NPUのExecution Providerへ載せる基盤です。embedding・rerankingを自作するか、ready-to-useモデルを使うかで入口を分けます。

外部APIを使えばRAGの遅さは全部解決しますか?

一部の計算を外へ移せますが、network latency、文書・query送信、料金、認証、ログ、切断時のfallbackが残ります。local・LAN・cloudを同じ速度比較に混ぜないでください。

次に読むおすすめルート

PDFや資料を読ませたい人

先に基本を押さえ、モデル単体の確認後にAnythingLLMへ進みます。

  1. PDF・文書チャットの使い分け
  2. PDF回答が間違う理由
  3. オンデバイスRAG/NPU研究
  4. Quant.npuとNPU向け静的量子化
  5. LENSで見るNPUレイテンシ予測
  6. AnythingLLMでPDFを読むには?商用利用前の確認も整理
  7. PDFを読ませても期待通りに答えない理由
  8. PDF抽出・OCR・表の崩れ
  9. WindowsでローカルOCRを選ぶ方法
  10. チャンク分割と検索漏れ
  11. 引用faithfulness確認
  12. AnythingLLM検証チェックリスト
  13. ローカルLLMの安全性とプライバシー
  14. ローカルRAGのプライバシー
  15. RAG・埋め込み・ベクトルDBの仕組み
  16. GGUF安全とRAG/NPU研究
  17. 知らないGGUFを動かす前に
  18. 埋め込みモデルとは
  19. 日本語PDFと埋め込みモデル
  20. コンテキスト長とは
  21. 仕事のPDFを入れる前の確認
  22. AnythingLLMの解説
  23. まずローカルAIの基本ガイド
  24. PCスペックの見方
  25. 診断ページ

あなたはどのタイプ?

関連チェック先

関連ツール

比較表を見る / 最初に検討しやすいツールを確認する