NotebookLMのローカル実行に代わるオープンソースの選択肢 セルフホスト型
NotebookLMは、資料をまとめて取り込み、質問への回答に出典を示し、ポッドキャストのように聴ける音声要約を生成するというシンプルなアイデアを広めました。問題は、すべてがGoogleのサーバーに送られることです。このガイドでは、自分でホストするLLMに接続したオープンソースツールで、ローカル版NotebookLMを実現する方法を紹介します。資料をまとめたノートブック、出典付きの回答、音声合成を利用でき、ファイルは一つもお使いのマシンの外に出ません。
#NotebookLMの機能と、再現できるもの
NotebookLMを再現する前に、実際に何を提供しているのかを把握する必要があります。汎用チャットボットではなく、自分で選んだ文書群に根拠を置くアシスタントです。これらの資料だけをもとに回答し、該当箇所を引用します。また、理論上は、資料にない情報を作り出すことを拒みます。この利用体験は3つの要素で構成されています。
- ソース資料のノートブック
- PDF、ウェブページ、メモ、文字起こしをインポートします。アシスタントが情報を参照してよい範囲は、これらの資料だけに限られます。
- 引用された回答
- 各主張はそれを裏付けるソースの該当箇所を参照しており、盲目的に信頼するのではなく、ワンクリックで確認できます。
- 音声要約(Audio Overview)
- 2つの合成音声が、お使いのドキュメントについてポッドキャスト風に対話します。要約を読む代わりに、歩きながら聞けます。
これら3つの機能は、現在では自由に利用できるオープンソースの構成要素で再現できます。1つ目と2つ目は、丁寧に構築したRAG(Retrieval-Augmented Generation、検索拡張生成)にほかなりません。情報源をインデックス化し、関連する箇所を検索し、それらを参照する回答を生成します。3つ目は、テキスト → 対話 → 音声合成(TTS)というパイプラインです。特殊な仕組みは必要なく、エントリークラスのGPUを搭載した1台のマシンですべてを実行できます。
#NotebookLMをローカルで使いたい理由
お使いのマシンで、プライベートかつ無料のChatGPTを1時間で構築 — LM Studio、Ollama、Open WebUI、ご自身のドキュメント、クラウド不要。
- 永久に利用できるオンラインスペース
- PDF + ファイル
- 生涯アップデート
最も重要な理由は、プライバシーです。ノートブックには、研究ノートや未公開の資料、企業の内部文書、顧客ファイル、契約書、医療記録など、最も敏感な情報が含まれています。Googleにデータを保存することは、第三者にデータのコピーを委ねることを意味し、その利用条件は変更されやすく、ユーザーがその条件に影響を与えることはできません。NotebookLMをローカルで実行することで、根本的な問題が解決します。データはあなたのデスクトップに残り、推論処理は自らのハードウェア上で行われます。
- データ主権
- どのドキュメントも、どのリクエストも第三者サービスを経由しません。GDPR、職業秘密、または開発秘密の観点から不可欠です。
- クォータやサブスクリプションは存在しません
- スタックを構築すれば、ディスク容量と忍耐力が許す限り、いくつでもソースを処理できます。月ごとの上限はありません。
- オフライン
- 処理の流れ全体がネット接続なしで動作するため、外出先やネットワークが隔離された環境で役立ちます。
- モデルの制御
- ブラックボックスのモデルに振り回されるのではなく、LLM、主に使う言語、量子化方式、各種設定を自分で選べます。
#信頼できるオープンソースの代替案
複数のプロジェクトが、ローカル版NotebookLMになることを明確に目指しています。完璧なものはありませんが、いずれも Ollama に接続でき、急速に進化しています。ここでは、2026年に実用に耐えるものを、NotebookLMに最も近いものから、最も「自分で手を加えやすい」ものまで順に紹介します。
- Open Notebook
- NotebookLMの精神に最も忠実:ノートブックの概念、情報ソースの管理、引用付きチャット、統合されたポッドキャスト生成。オープンソースでDocker化され、Ollama との互換性を保ち、100%ローカルで動作します。
- SurfSense
- 複数の情報源(ドキュメント、ウェブ、コネクタ)を扱うオープンソースのリサーチアシスタント。情報を集約し、質問する用途に適しており、ローカルLLMにも対応しています。
- Open WebUI / AnythingLLM
- NotebookLMのクローンではありませんが、文書のインポート、出典付きのチャット、ローカルの埋め込みモデルという主要機能を備えた、成熟した2つのRAGインターフェースです。「出典+質疑応答」の機能を実現する最も簡単な方法です。
- Podcastfy
- 音声部分だけを担当するコンポーネントです。ドキュメントやURLを、2人が話す会話形式に変換します。ローカルLLMと、お好みのTTSエンジンで動かせます。
#前提条件
- Ollama
- モデルを提供するデーモン。デフォルトのアドレスはhttp://localhost:11434です。まだインストールしていない場合は、インストールガイドを参照する。
- 生成モデル
- Qwen 3.5 9B(Q4_K_MでVRAM約6.6 GB、コンテキスト256k、マルチモーダル対応)、または優れたフランス語性能を求めるならMistral Small 24B(約14 GB)。小規模なハードウェア構成では、Granite 4.2 8B(約5.3 GB)で十分です。
- 埋め込みモデル
- nomic-embed-textまたはmxbai-embed-large。ollama pullで取得可能です。軽量でGPUなしでも動作します
- Docker
- ほとんどの代替ツール(Open Notebook、Open WebUI、AnythingLLM)は、1つのコンテナでデプロイできるため、依存関係の競合を避けられます。
- ローカルTTSエンジン
- 音声部分に Piper を使用:高速で軽量で、フランス語の声を備えています。音声合成には GPU が必須ではありません。
#ステップ1:Ollamaで資料をまとめたノートブックを作る
ローカル版NotebookLMを構築する最初の要素は、ノートブックそのものです。ソースを登録し、インデックス化する場所に当たります。ここでは、そのコンセプトを忠実に再現するOpen Notebookを使います。コンテナで起動し、クラウドサービスではなく利用者のOllamaと通信するように設定します。
- 01プロジェクトを取得するOpen Notebookのリポジトリをクローンし、そのディレクトリに移動してください。リポジトリには、そのまま使えるdocker-composeファイルが含まれています。
- 02接続先をOllamaに設定設定(環境変数ファイル)で、モデルプロバイダーにOllamaを指定し、URLをhttp://localhost:11434(コンテナ内から接続する場合はhttp://host.docker.internal:11434)に設定してください。生成用のモデルを選び、埋め込み用にはnomic-embed-textを選択してください。
- 03スタックを起動するdocker compose upを実行してください。するとブラウザでウェブインターフェースが開き、データベースとインデックス作成は自動で処理されます。
- 04ノートブックを作成してインポートノートブックを作成し、そこにPDFをドラッグ&ドロップするか、URLやテキストを貼り付けてください。各ソースは自動的に分割され、ベクトル化されます。
ツールをこれ以上増やしたくない場合は、Open WebUI や AnythingLLM が資料をまとめるノートブックとして十分に役立ちます。ワークスペース(workspace)を作成し、そこに文書を取り込むと、nomic-embed-text によるインデックス作成が自動で行われます。これは、このサイトの RAG ガイドで詳しく説明している「ノーコード」の方法です。
#ステップ2:出典付きの質疑応答
ローカル版NotebookLMの中心となるのは、自然言語で質問し、自分の資料だけに基づく回答を、根拠となる正確な箇所とともに得ることです。技術的には、RAGが質問に最も近い抜粋を取得し、LLMは自身の一般知識ではなく、その抜粋に基づいて回答を作成します。引用の質は主に2つの要素に左右されます。厳格なシステムプロンプトと、出典を明示的に求めることです。
Open NotebookでもOpen WebUIでも、この動作はすでに組み込まれています。ノートブックのチャットで質問すると、回答に使用した抜粋が表示されます。独自の処理チェーンを構築する場合は、システムプロンプトが決定的な違いを生みます。
モデルの設定では、2つのパラメータが重要です。温度を低く(0.2)設定すると、余計な創作を抑え、モデルが情報源に忠実に回答しやすくなります。コンテキストウィンドウ(num_ctx)を十分に確保すれば、検索で取得した抜粋を切り詰めずに取り込めます。そうでなければ、モデルは取得した文章の一部だけに基づいて回答します。
#ステップ3:ローカルで音声による要約を生成する(TTS)
これはNotebookLMを代表する機能、Audio Overviewです。2人の話者が文書について語り合うもので、ローカルで再現したときにも最も印象的な機能です。パイプラインは2段階に分かれます。まずLLMがソースをもとに対話スクリプトを作成し、次にローカルのTTSエンジンがそのスクリプトを音声に変換します。これにより、音声もテキストも完全にオフラインで扱えます。
最初のステップは、会話の作成をLLMに依頼することです。内容を分かりやすく説明する2人のキャラクターのやり取りをLLMに求め、各セリフを話者でタグ付けします。このタグ付けは、音声合成時に声を交互に切り替えるために使用されます。
2段階目、音声合成です。ローカル環境では Piper が自然な選択です。高速で軽量であり、高品質なフランス語ボイスが利用できます。Alex と Camille を区別するために、話者ごとに異なる .onnx モデルファイル(2つのファイル)を割り当て、その後、音声セグメントを連結します。
このパイプラインを手作業で書かずに済むよう、Open Notebookにはポッドキャスト生成機能が組み込まれています。また、PodcastfyはローカルLLMと好みのTTSエンジンを使って、まさにこの「ドキュメント → 音声会話」の変換を行います。上記の手動パイプラインも、処理の仕組みを理解し、声や出力形式を完全に制御するために引き続き役立ちます。
#トラブルシューティング
- コンテナから Ollama に接続できません
- Docker コンテナ内では、localhost はそのコンテナ自身を指します。host.docker.internal(Linux では extra_hosts で追加)またはホストの IP アドレスを使用し、必要に応じて Ollama が 0.0.0.0 で待ち受けていることを確認してください。
- 出典のない回答や、捏造された回答
- システムプロンプトの制約が十分に厳しくないか、温度が高すぎます。「抜粋のみを根拠にする」という制約を設け、[source N]形式を必須にし、温度を0.2に下げてください。
- インデックス作成時にPDFが空で返されます
- テキストレイヤーのないスキャンです。インポートする前に、OCR 処理(ocrmypdf entree.pdf sortie.pdf)を行ってください。
- 回答は一部のソースを無視しています
- num_ctxが小さすぎるため、抜粋が切り詰められています。VRAMに余裕があればnum_ctxを増やすか、取得する文章の数を減らしてください。
- Piperで音声が見つからない
- 音声ごとに、.onnx と対応する .onnx.json の2つのファイルが必要です。同じディレクトリに配置してください。--model に渡すパスが正しいか確認してください。
- 発話と発話の間で音声が途切れる
- WAVファイルをそのまま連結すると、音声の間に間がなくなります。より滑らかな仕上がりにするために、ffmpegまたはpydubで各セグメントの間に短い無音を挿入してください。
#さらに詳しく
このガイドは、サイト上で既に詳細に解説されている要素をまとめています。各ステップをさらに深く理解するには:
- Ollama のインストール:Windows、macOS、Linux
- まだ環境が整っていない場合に、ポート11434でローカルモデルを提供するための出発点となります。
- OllamaによるローカルRAG(コーディング不要、Open WebUI、AnythingLLM)
- ローカル版NotebookLMの「ソース+出典付きの質問応答」部分をノーコードで実現する方法。
- 100%ローカルの音声アシスタント:Whisper + Ollama + Piper
- 音声要約だけにとどまらず、Piperとローカル音声合成についてさらに詳しく知るために。
ご意見、誤りのご指摘、補足はありますか?ぜひお知らせください。皆さんにとってより良いガイドにするために役立ちます。