2026-02-10-01(ラズパイ5でRAG検索botのインジェストを回したら、ぜんぜん余裕だった話)

作成

#雑記 #LLM補助 #ラズパイ5

※この記事はClaudeさん(Opus4.6)が書いたものに最低限の修正を入れたものです。最近のLLMすごい。

はじめに

わーさん宅のRaspberry Pi 5では、小説の全文検索+ベクトル検索ができるDiscord botを24時間動かしています。

ある日ふと気になりました。ちょっとラズパイに負荷をかけた時、具体的にはテキストの一括登録(インジェスト)を回したとき、温度ってどのくらい上がるんだろう?

ラズパイをサーバーとして常時稼働させている方にとって、「どのくらいの負荷に耐えられるのか」は気になるところだと思います。ベンチマークソフトの数値はネット上にたくさんありますが、実際のアプリケーションを動かしたときの実測値は意外と見かけません。(Claudeさん談)

というわけで、昼休みにiPad miniからリモート接続して実験してみました。

わーさん宅のラズパイ5の構成

  • 本体:Raspberry Pi 5(8GB RAM)
  • ストレージ:512GB microSD
  • ケース:フィン付きアルミパッシブヒートシンクケース(ファンなし)
  • 設置環境:エアコン自動運転(室温約25°C)
  • OS:Debian Bookworm(64bit)

ケースは公式ケースが売り切れだったので、たまたまフィン付きのアルミ鎧を買ったのですが、これが大正解でした。ファンがないので壊れる部品がゼロ、完全に無音。24時間365日動かすサーバー用途にはむしろ最適です。

常駐しているもの

このラズパイ5の上では、常時8つのbotが動いています。

  1. RSS連携 → Fediverse投稿bot(×3)
  2. Fediverse連携LLMキャラクターbot(×2)
  3. Ruby学習用途で作成した BCダイスbot
  4. スプレッドシート参照bot
  5. 小説全文検索Discord bot(今回の主役)

この状態でのベースラインは、CPU温度 38〜41°C、メモリ使用量 約900MB。ラズパイ的にはほぼアイドル状態です。

小説検索botのしくみ(ざっくり)

このbotは、長編小説(100万文字超)を段落単位で検索できるようにするものです。中で動いているのは:

  • MeiliSearch:全文検索エンジン(BM25)
  • Qdrant:ベクトル類似度検索
  • OpenAI API:テキストの埋め込みベクトル生成

テキストを登録(インジェスト)するとき、以下の処理がまとめて走ります:

  1. テキストファイルを読み込んで段落に分割
  2. MeiliSearchにインデックスとして一括投入
  3. OpenAI APIで全段落の埋め込みベクトルを生成
  4. Qdrantにベクトルをアップロード

つまりインジェストは、このシステムでいちばん重い処理です。

観測方法

iPad miniから自宅のミニPC(Windows)にリモート接続し、そこからSSHでラズパイに2窓で入りました。

  • 左ターミナル:インジェストコマンドの実行
  • 右ターミナル:5秒ごとの定点観測
Bash
watch -n 5 'vcgencmd measure_temp && free -h && top -bn1 | head -3'

このコマンドで、CPU温度・メモリ使用量・CPU使用率が5秒おきに更新されます。iPadの画面収録を回しておけば、あとから好きなタイミングのスナップショットが取れます。

実験条件

  • 対象データ:長編小説1作品(約1.7MB / 190章 / 5,421段落)
  • コマンド:python ingest.py (小説タイトル) --fresh(インデックスを削除して再構築)
  • ベクトル投入:ON(MeiliSearch + Qdrant + OpenAI embedding 全部実行)

結果

時刻 フェーズ 温度 メモリ(used) CPU
12:54:08 実行前(ベースライン) 38.9°C 914Mi 0.0%
12:54:49 Qdrant投入中 41.1°C 1.5Gi 100.0%
12:55:25 Qdrant投入中 45.0°C 1.7Gi 0.0%
12:55:51 完了直後 51.0°C 1.5Gi 0.0%
12:56:33 完了から約40秒後 41.7°C 1.3Gi 33.3%

所要時間:約1分半。ピーク温度:51.0°C。

読みどころ

温度のピークは処理の「あと」に来る

CPU使用率100%が記録されたのは12:54:49ですが、最高温度51°Cが出たのは12:55:51の完了直後。約1分のタイムラグがあります。

これはパッシブ冷却の特性だそうです。チップが発熱してからヒートシンク全体に熱が伝わり、センサー値に反映されるまでに時間がかかる。逆に言えば、瞬間的な高負荷で温度がスパイクしにくいということでもあります。

回復も早い

完了から約40秒で51.0°C → 41.7°Cまで低下。ほぼベースラインです。フィン付きアルミケースの表面積で効率よく放熱しているのがわかります。

Swapは完全にゼロ

メモリ使用量がピーク時1.7Giまで増加しましたが、8GBのRAMに対して余裕があり、Swapは一切発生していません。ラズパイのSwapはmicroSDに行くみたいなので、もしSwapが発生していたら速度低下とディスク寿命の両方に影響するとのこと。ここがゼロだったのは安心材料です。

サーマルスロットリングには遥か遠い

Raspberry Pi 5がサーマルスロットリング(CPUの自動クロックダウン)を始めるのは80°Cかららしいです。今回のピーク51°Cは、その閾値まで29°Cの余裕があります。

8つのbot常駐のまま、片手間で完了

他の常駐botを止めることなく、追加負荷としてインジェストを実行しています。1分半で終わって平熱に戻って、ラズパイ的には「ちょっと忙しかった、かも?」という程度とClaudeさんの評価でした。

まとめ

項目 結果
データ量 約1.7MB / 5,421段落
処理内容 MeiliSearch全文インデックス + OpenAI embedding + Qdrant投入
所要時間 約1分半
ピーク温度 51.0°C(ベースライン38.9°C、+12.1°C)
平熱復帰 約40秒で41.7°Cまで低下
メモリピーク 1.7Gi / 7.8Gi(Swap未使用)
スロットリング なし(閾値まで29°Cの余裕)

ファンレスのパッシブヒートシンクケースで、24時間8つのbotを動かしているRaspberry Pi 5は、100万文字超の小説を全文インデックス+ベクトル化するインジェスト処理を、汗ひとつかかずにこなしました。

VPSを追加で借りなくても、手元のラズパイ1台でここまでできる。自宅サーバーの可能性は、思っているより広いかもしれません。


計測日:2026年2月10日(火)昼休み。iPad miniからリモート接続にて。