Google NotebookLMをローカルで再現した。プライバシーも課金も気にしない知識管理ツール
Google NotebookLMを使ったことがあるだろうか。
PDFやドキュメントをアップロードすると、
AIがその内容を理解して質問に答えてくれるサービスだ。
引用付きで、
どの文書のどこを根拠にしているかまで示してくれる。
便利である。
ただ、
プライバシーと利用制限の2つが引っかかる。
読み込ませたい資料ほどGoogleに送りたくないし、
無料枠の上限にもすぐ引っかかる。
ローカルで動けば両方解決する。
だから作ってみた。
一度失敗している
正直に書くと、
これは2回目の挑戦だ。
1回目はUIを作り込み、
バックエンド完成度90%まで行って没にした。
ローカルの7Bモデルで本家相当の体験ができるか?
という最も重要な問いに答えないまま作り進めたからだ。
完成間際に試したら、
品質が実用レベルに達していなかった。
2回目は順序を変えた。
まず技術検証(Spike)をやる。
使い物になると確認してから作る。
Spikeで分かったこと
埋め込みモデル
PDF抽出
RAGパイプライン
LLM回答品質
の4つを検証した。
埋め込みモデルはmultilingual-e5-largeを使用した。
nomic-embed-textと比較して類似度スコアが安定して高く
速度も速い。
LLMはQwen3 8B。平均応答11.5秒、引用付与率100%。
検索距離0.12〜0.23で、全クエリで関連チャンクがTop1に出現した。
(検証時点では、Qwenを使用したが、
運用段階に入ってからは、gpt-oss:20bを使用している
日本語出力の精度はやはりこちらが有利)
Spike全項目クリアで本実装に進んだ。
作ったもの
本家に寄せた3カラム構成のWebアプリだ。

本家にある機能はある程度模倣した
左にソースパネル(PDF/DOCX/PPTX/EPUB/HTML/CSV/URL対応)、
中央にチャット(SSEストリーミング)、
右にノート(ピン留め保存)。
インターネット接続不要で完全にローカル環境で動作可能。
(ただし、URL経由などで情報を取得する部分については、
言わずもがなインターネットを使用する)
一番こだわったのは引用の扱い。
回答中の「[ソース1]」バッジをホバーすると
ファイル名・ページ番号・スニペット・関連度バーが出る。

クリックでソースパネルにハイライト、
ダブルクリックで該当ソースにジャンプ。
AIがそう言ったから
ではなく、
この文書のこのページにこう書いてあるから
を見えるようにしている。
本家との違い
本家にあってこちらにない最大のギャップは
Studio生成機能。
(ポッドキャスト生成、Mind Map、スライド生成等)
次フェーズで着手予定。
逆に本家にない機能がある。
マルチスレッドチャット(同じソースに複数会話)

設定UI(温度・top_k・閾値・リランキングをブラウザから変更)

メタクエリ検出(「全体の要約は?」のような俯瞰的質問をRegex+LLMで検出し、通常検索とは別パスで回答)
そして無制限利用。
何回質問しても電気代だけしかかからない。
テストと品質管理
バックエンド67件、フロントエンド28件、E2Eテストも書いた。
品質ベースラインテストでは、
固定PDFに5つの質問を投げ、引用のsource_idと応答時間を自動検証する。
LLMの出力は非決定的だから
正しいソースを引用しているかを基準にした。
根拠が正しければ、回答もだいたい正しい。
今後もこのような、
完全ローカルで動作するツールなどを作成していきます。
フォローしてもらえると!
