ローカル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が重い理由を工程ごとに分ける
| 工程 | 何が増えるか | 最初に記録する値 | 主な確認先 |
|---|---|---|---|
| PDF抽出・OCR | ページ、画像、表、抽出文字 | page数、文字数、抽出時間、OCR fallback | CPU、SSD、抽出/OCR設定 |
| chunk・embedding | chunk数、vector数、embedding次元 | embedding model、chunk数、index時間、RAM | CPU/GPU/NPU/API、RAM、SSD |
| retrieval | top-k候補、検索結果 | query時間、k、score、対象index | RAM、SSD、vector DB、CPU |
| reranking | 候補ごとの再スコア | 候補数、rerank model、rerank時間 | CPU/GPU/NPU/API |
| context組み立て | promptへ入る文字・token | retrieved token、prompt token、重複量 | RAM、context上限、テンプレート |
| generation | 入力context、出力token | TTFT、生成時間、tokens/s、provider | RAM、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 | 検索品質と生成速度の差が混ざる |
| hardware | Windows build、driver、RAM、GPU/VRAM、NPU、EP/provider | NPU搭載だけで実行先を推測する |
| 入力・出力 | 同じ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 | PDF処理、汎用処理、軽いembedding・推論 | CPU使用率だけでなく、RAM不足とSSD待ちを分ける |
| GPU | LLM生成、対応するembedding・reranking | VRAM容量、model offload、実際のGPU provider、driver |
| NPU | 対応runtimeでの省電力なembedding・reranking・推論の候補 | アプリ、モデル形式、EP、driver、fallback、実測 |
| RAM / SSD | index、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の役割へ割り当てる
| 選択肢 | RAGでの位置づけ | このownerから戻る境界 |
|---|---|---|
| Windows AI APIs | Windowsが管理するready-to-use API。対応するOCR・semantic searchなどを使う入口 | API別のhardware、model readiness、入力制約は専用記事で確認する |
| Foundry Local | ready-to-useのLLM・音声モデルをlocal endpointやSDKから使う生成/音声層 | catalog、cache、loaded model、endpointはFoundry Local ownerへ戻る |
| Windows ML | custom 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 API | local PCにない計算資源や共有・集中管理を使う経路 | 文書送信、料金、認証、network・providerの契約を別に確認する |
- Foundry Localのcache・loaded状態 - local model・EP・cache・offlineの状態を分ける
- Windows ML custom ONNX - embedding・rerankingを含むONNXのEP・配布条件を見る
- 文書チャットのlocal/cloud境界 - 推論、保存、同期、exportの経路を分ける
embedding・chunk・retrievalの設定変更は新しい基準で測る
Open WebUIの公式RAG説明では、質問を設定済みembedding modelでvector化して検索し、top matchesをpromptへ入れます。embedding modelが変わるとvector spaceが一致しなくなるため、古いindexとの速度・検索品質をそのまま比較しません。
| 変えたもの | 起きること | 比較時の扱い |
|---|---|---|
| embedding model / dimension | 既存vectorとqueryの空間が合わなくなる | toolのre-index/re-upload手順を行い、model ID・dimension・index時間を記録 |
| chunk size / overlap | chunk数、indexサイズ、retrieval contextが変わる | 同じ文書を再indexし、chunk数・top-k・retrieval時間を比較 |
| top-k / reranking | prompt長、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の順に確認します。
- chunking・retrievalの検索漏れ - 分割・top-k・検索結果の品質へ進む
- PDF抽出・Doclingの出力 - 抽出構造と再parseの境界を見る
- RAG引用の証拠ID - retrieval結果をpage・source・claimへ戻す
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を測ります。
- オンデバイスRAG/NPU研究 - 研究の条件と一般化の限界を確認する
- NPU向け静的量子化 - GGUFのQ4/Q5/Q8とNPU形式を分ける
- NPUレイテンシ予測 - 入力・出力長と実測の関係を見る
初心者の切り分け手順
- Windows build、driver、RAM、GPU/VRAM、NPU、runtime、model ID・revisionを記録する。
- モデル単体で短い質問を行い、generationだけのTTFT・生成時間・providerを保存する。
- 公開PDFを1つだけ入れ、抽出ページ数・文字数・parse時間を測る。
- 同じ文書をindexし、embedding model、chunk数、index時間、indexサイズを記録する。
- 同じqueryでretrieve・rerank・context tokenを測り、検索結果とscoreを保存する。
- 最後に固定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、VRAM | contextを絞るか、生成モデル・providerを確認する |
| GPU/NPU使用率が低い | 実際のEP/provider、model variant、CPU fallback、driver | Task Managerの使用率だけでなくruntimeの選択を確認する |
| 回答の根拠がずれる | 抽出text、chunk、top-k、embedding model、source/page | hardwareより先に検索・引用の証拠を照合する |
| localは速いが共有・更新が難しい | 保存先、同期、export、network、cloud/APIの送信 | 速度と運用・privacy・costを別の判断にする |
関連記事と次の判断
- ローカルAI用PCスペック - RAM・GPU/VRAM・CPU・SSDを購入判断へ戻す
- GPUなしPCの現実ライン - CPU fallbackで試す用途を分ける
- Open WebUIのRAG - File Context・embedding・provider設定を確認する
- RAGの引用faithfulness - 検索結果と回答の根拠を照合する
よくある質問
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へ進みます。
- PDF・文書チャットの使い分け
- PDF回答が間違う理由
- オンデバイスRAG/NPU研究
- Quant.npuとNPU向け静的量子化
- LENSで見るNPUレイテンシ予測
- AnythingLLMでPDFを読むには?商用利用前の確認も整理
- PDFを読ませても期待通りに答えない理由
- PDF抽出・OCR・表の崩れ
- WindowsでローカルOCRを選ぶ方法
- チャンク分割と検索漏れ
- 引用faithfulness確認
- AnythingLLM検証チェックリスト
- ローカルLLMの安全性とプライバシー
- ローカルRAGのプライバシー
- RAG・埋め込み・ベクトルDBの仕組み
- GGUF安全とRAG/NPU研究
- 知らないGGUFを動かす前に
- 埋め込みモデルとは
- 日本語PDFと埋め込みモデル
- コンテキスト長とは
- 仕事のPDFを入れる前の確認
- AnythingLLMの解説
- まずローカルAIの基本ガイド
- PCスペックの見方
- 診断ページ
あなたはどのタイプ?
- 初めてローカルAIを触る人 - まず全体像をつかみ、LM StudioとOllamaの違い、モデルサイズの考え方を順番に確認します。
- LM Studio・Ollamaの症状別トラブルを解決したい人 - 起動、モデルロード、Prompt Processing、generation、API接続、GPU確認をツール別に分けて読みます。
- GPUなし・低スペックPCの人 - 軽量モデル、メモリ別の目安、重いときの確認ポイントを先に見ます。
- PDFや資料を読ませたい人 - 先に基本を押さえ、モデル単体の確認後にAnythingLLMへ進みます。
- ローカルAIエージェントを試したい人 - Bionic、Ollama、AnythingLLM、Hermesを役割別に分け、local/cloud、tool、保存、PC負荷を順番に確認します。
- 開発・API連携したい人 - LM StudioとOllamaの違いを確認し、API、長文処理、RAGまで段階的に進みます。
関連チェック先
- Energy-Efficient On-Device RAG on a Mobile NPU - Snapdragon X Elite / Hexagon NPU上でRAG pipelineの省電力化を検討した2026年のプレプリントです。全Windows PCへ一般化しない前提で読みます。
- Quant.npu: Enabling Efficient Mobile NPU Inference for on-device LLMs via Fully Static Quantization - mobile NPU制約に合わせたinteger-only fully static quantizationを提案し、実機mobile NPUで最大15.1%の推論レイテンシ削減を報告した2026年のプレプリントです。
- Latency Prediction for LLM Inference on NPU Systems - 商用NPUの非公開microarchitecture、compiler最適化、bucketing由来の非線形性を前提に、E2E測定でLLM推論レイテンシを予測するLENSを提案した2026年のプレプリントです。
- ONNX Runtime Execution Providers - ONNX RuntimeでハードウェアごとのExecution Providerを選ぶ考え方を確認できます。
- Choose your Windows AI solution - Windows AI APIs、Foundry Local、Windows MLの用途、Copilot+ PC要件、NPU・GPU・CPUの役割を比較できます。
- Windows AI apps FAQ - Foundry Localのハードウェア選択、NPU不要の条件、Windows MLとの役割、Task Managerでの確認方法を確認できます。
- Foundry Local architecture overview - Foundry Localのin-process Core API、モデルvariant、WinML、Intel OpenVINO GPU、CPU fallbackの境界を確認できます。
- What is Windows ML? - ONNX Runtimeを基盤に、Windows上のCPU・GPU・NPU向けExecution Providerを扱う現行Windows MLを確認できます。
- Windows ML execution providers - Windows 11 24H2以降のWindows ML実行プロバイダー、NPUのQNNなど、OS・ドライバー条件を確認できます。
- Retrieval Augmented Generation (RAG) / Open WebUI - query embedding、vector検索、chunk設定、re-index、citation、File Contextの現行RAG処理を確認できます。
- Embedding | LM Studio - LM Studioでembedding modelを取得し、RAGや類似検索のベクトルを作る公式説明です。
- Choose between cloud-based and local AI models - localとcloudを、privacy、resource、latency、cost、connectivity、model sizeの判断軸で比較できます。
- LM Studio Docs - LM Studioのアプリ、ローカルモデル、モデル管理の公式入口です。
- Ollama Docs - Ollamaの公式ドキュメント入口です。