Open Notebookを試してみた。
この手のツールを調べると、たいてい出てくるのは、
Dockerを用意して、Ollamaを入れて、モデルを落として、Embeddingモデルも入れて……
という、なかなか立派な構成である。
もちろん、それは正しい。
Open Notebook公式にもOllamaを含めた完全ローカル構成が用意されているし、Docker Composeが推奨されている。
だが、私はもっと怠けたい。
すでにWindows PCではLM Studioが動いている。
GPUもそちらに付いている。
だったら、
TrueNASはOpen Notebookとデータベースを動かすだけでいいのでは?
そう考えてやってみたら、驚くほどあっさり動いた。
しかもURLを一つ渡しただけでWebページを取り込み、Embeddingして検索可能になり、ローカルLLMと資料について会話できる。
YouTubeのURLを渡してみたら、字幕まできれいに取り込んできた。
これはなかなか気持ちがいい。
今回の構成
構成は非常に単純だ。
TrueNAS
├─ Open Notebook
└─ SurrealDB
│
│ LAN
▼
Windows PC
└─ LM Studio
├─ Chat用LLM
└─ Embeddingモデル
Open Notebook本体とデータはTrueNAS。
LLM推論とEmbeddingだけ、普段使っているWindows PCのLM Studioへ投げる。
NAS側でOllamaを動かす必要はない。
今回Open Notebookを動かしているTrueNASサーバーのCPUは、なんと今となっては懐かしい Intel Pentium G4560 である。
2コア4スレッド。
2026年のAI基盤としては、あまり勇ましいスペックではない。
だが、実際にLLMを回しているのは別PCなので、Open Notebook側はWebアプリ、データベース、RAGの交通整理役に徹する。
結果として、普通に快適だった。嘘じゃない。やればわかる。
2017年のPentiumがAIリサーチ基盤の司令塔になる。
なかなか味わい深い。
TrueNASにDatasetを作る
最初にOpen Notebook用の保存領域を作った。
今回は、
HDD1/open-notebook/
├─ notebook_data
└─ surreal_data
とした。

実際にDockerから見えるパスは、
/mnt/HDD1/open-notebook/notebook_data
/mnt/HDD1/open-notebook/surreal_data
になる。
notebook_data はOpen Notebook本体のデータ。
surreal_data はSurrealDBの永続化領域だ。
TrueNASの「Install via YAML」を使う
TrueNASのAppsにはCustom Appがある。
最初、私は通常のCustom App画面を開いて、
「Repositoryを指定しろと言われても、Open NotebookはSurrealDBも必要なんだが……」
と少々悩んだ。
答えは簡単だった。
Custom Appボタンの横にある三点メニューの中に「Install via YAML」が隠れていた。

なぜそこに隠す。
これを開けばDocker Compose相当のYAMLをそのまま投入できる。
Open Notebook公式も現在は、Open NotebookとSurrealDBを分離したDocker Compose構成を推奨している。公式イメージは lfnovo/open_notebook:v1-latest、SurrealDBはv2系だ。
名前を、
open-notebook
として、次のYAMLを投入した。
services:
surrealdb:
image: surrealdb/surrealdb:v2
command:
[
"start",
"--log",
"info",
"--user",
"root",
"--pass",
"root",
"rocksdb:/mydata/mydatabase.db"
]
user: root
volumes:
- /mnt/HDD1/open-notebook/surreal_data:/mydata
environment:
- SURREAL_EXPERIMENTAL_GRAPHQL=true
restart: always
pull_policy: always
open_notebook:
image: lfnovo/open_notebook:v1-latest
ports:
- "8502:8502"
- "5055:5055"
environment:
- OPEN_NOTEBOOK_ENCRYPTION_KEY=CHANGE_THIS_TO_A_LONG_RANDOM_SECRET
- SURREAL_URL=ws://surrealdb:8000/rpc
- SURREAL_USER=root
- SURREAL_PASSWORD=root
- SURREAL_NAMESPACE=open_notebook
- SURREAL_DATABASE=open_notebook
volumes:
- /mnt/HDD1/open-notebook/notebook_data:/app/data
depends_on:
- surrealdb
restart: always
pull_policy: always
OPEN_NOTEBOOK_ENCRYPTION_KEY だけは、自分用の長いランダム文字列へ変更しておく。
今回SurrealDBの8000番ポートはホスト側へ公開していない。
Open NotebookとはCompose内部ネットワークで通信するため、普通に利用するだけなら外へ出す必要がない。
※root/root は説明を簡単にするための例です。本運用では変更してください。

保存。
しばらく待つ。
そして、
http://TrueNASのIP:8502
へアクセス。
一発でOpen Notebookが現れた。
こういうときのDockerは本当に偉い。

YAMLが分からなければ、AIに相談すればいい
ここで「Docker Composeなんて書いたことがない」と身構える必要はない。
今ならChatGPTなどのAIに、TrueNASのDataset構成や画面のスクリーンショットを見せて、
「Open Notebookをここへ入れたい。TrueNASのInstall via YAMLで使える形にして」
と相談すればいい。
実を言えば、今回掲載しているYAMLもそうして作った。
私がやったのは、TrueNASの画面を見せて、保存先を決めて、出来上がったYAMLを貼ったくらいである。
Dockerの設定ファイルをゼロから覚えてからAI環境を作る必要はない。
ただし、生成されたYAMLを無条件に信用してはいけない。
volumeの保存先、公開ポート、パスワードや暗号鍵、使用するDockerイメージくらいは確認しよう。
AIに書かせることと、AIに丸投げすることは別である。
AIはLM Studioに任せる
Open Notebookを起動しただけでは、まだAIモデルがない。
最低限必要なのは、
- Chat Model
- Embedding Model
の2種類だ。
今回はWindows PCでLM Studio Serverを起動した。
http://192.168.1.140:1234
でLANからアクセスできるようにしてある。
Open NotebookのModelsからOpenAI互換Providerを追加し、
Configuration Name:
LM Studio
API Key:
lm-studio
Base URL:
http://192.168.1.140:1234/v1
とした。
Open NotebookはOpenAI互換APIを利用でき、公式ドキュメントでもLM Studioが接続例として挙げられている。
今回Chat用には軽量な、
qwen3-vl-4b-instruct
Embeddingには、
text-embedding-nomic-embed-text-v1.5
を使用した。
Qwenが約3.3GB。
NomicのEmbeddingモデルはわずか約84MB。
RTX 3060 12GBなら余裕で同居できる。

Embeddingモデル登録には小さな罠があった
ここだけ少々分かりにくかった。
LM StudioでEmbeddingモデルをロードすると、Open Notebookのモデル一覧には現れる。
ところが、Embedding Modelの選択肢には出てこない。
最初は、
「LM StudioがEmbeddingとして認識していない?」
「Open NotebookのモデルDiscoveryがおかしい?」
と疑った。
違った。
Open Notebookの「モデルを検出」画面には、先に、
Language
Embedding
STT
TTS
から検出するモデルタイプを選ぶプルダウンがある。

最初にLanguageとして同期していたため、Embeddingとして登録されていなかっただけだった。
Embedding を選択して再度モデルを同期すると、
Chat Model:
qwen3-vl-4b-instruct
Embedding Model:
text-embedding-nomic-embed-text-v1.5
と、無事に指定できた。
分かってしまえば簡単だ。
分かるまでは、少し腹が立つ。
URL一本でRAGが始まる
ここからがOpen Notebookの楽しいところだ。
Notebookを一つ作り、
LM Studio
と名付けた。

Source追加から、LM Studio公式ドキュメントのURLを投入する。
Open NotebookはWeb Linkを正式なSourceとしてサポートしており、Web記事やニュース、オンラインPDFなどを取得して検索可能なSourceへ変換できる。

そこで質問した。
LM StudioでEmbeddingをOpenAI互換APIから利用する方法を説明して。必要なendpointとHTTP methodも示して。
返ってきた答えは、
Endpoint: /v1/embeddings
HTTP Method: POST
だった。
ちゃんと資料を検索し、Citationも付いている。
最初の回答では、4Bモデルがソースに存在しないEmbeddingモデル名を勝手に補完する場面もあった。
そこで、
ソースに明記されている内容だけで答えてください。ソースにないモデル名は例示しないでください。
と指定すると、
ソースにモデル名の具体的な値は記載されていないため、省略
と修正された。
つまりRAGは正常に機能している。
最後にしゃべるLLMが小さければ、それなりに監督は必要だ。
これはOpen Notebookというより、ローカルLLMを使う以上は当然の話だろう。
YouTubeを突っ込んだら字幕まで取れた
さらに面白かったのがYouTubeだ。
Google Skillsについて解説したYouTube動画のURLを、そのままSourceとして追加してみた。
すると、
動画ページではなく、内容の字幕・Transcriptまで取り込まれた。
タイトルとYouTubeプレイヤーが表示され、その下には動画内で話されていた内容が長いテキストとして並ぶ。

公式ドキュメント上でもYouTube URLは直接Sourceとして扱え、字幕が利用可能ならCaptions/SubtitlesとTranscriptを抽出する仕様になっている。通常動画だけでなくPlaylist、Live、Shortsにも対応するとされている。
これが地味に強い。
Web記事。
公式ドキュメント。
ニュース。
YouTube。
これらを同じNotebookへ放り込み、全部まとめて横断RAGできる。
Tool Useが得意ではない小型ローカルLLMでも関係ない。
Webページを取得する仕事はOpen Notebookがやる。
LLMには、すでに集められた資料を読ませればいい。
Transformationは面白い。でも危険でもある
Open NotebookにはTransformationという機能もある。
これはSourceに対して、
- Dense Summary
- Key Insights
- Analyze Paper
- Reflections
- Simple Summary
などのプロンプト処理を行い、その結果をInsightとして保存する機能だ。
しかも、自分でTransformationを追加できる。
試しに、
Article Seeds
というTransformationを作った。
プロンプトは、
この資料から、単なる要約ではなく技術記事として掘り下げる価値のある論点を抽出する。既存技術との違い、構造的変化、意外な副作用、反論可能な論点を優先する。
するとLM StudioのAPIドキュメントから、Qwen 4Bがせっせと「記事になりそうな論点」を作り始めた。
これは面白い。
だが同時に危ない。
AIがSourceから仮説を作り、その仮説をInsightとして蓄積し、そのInsightを別のAIが検索して、さらに推論を積み重ねる。
放っておけば、
推測の複利運用
が始まりかねない。
便利だからと何でも自動Transformationするより、
Source = 原資料
Insight = AIによる分析・仮説
Note = 人間が残すと判断したもの
くらいに分けて考えた方がよさそうだ。
実はGUIだけのツールでもなかった
さらにOpen NotebookはREST APIを持つ。
今回構築した環境なら、
http://TrueNASのIP:5055/docs
へアクセスするとSwagger UIが現れる。

Notebook作成。
Sourceの追加。
NotebookへのSource登録。
Knowledge Base検索。
Ask。
一通りAPI化されている。
つまり将来的には、
RSS
↓
新着ニュースURL取得
↓
Open Notebook APIへ投入
↓
自動でSource化・Embedding
↓
Notebookへ蓄積
↓
必要なときだけ横断RAG
という運用もできる。
ここまで来ると、Open Notebookは「GUIで資料と会話するアプリ」というより、
自分の情報収集システムに組み込めるRAG基盤
として見た方が面白い。
ただし、これは後日の宿題にした。
夜も遅い。
AIで遊ぶ人間にも睡眠は必要である。
「自宅に置ける、URLを食えるRAG」だけでも十分
Open NotebookにはPodcast生成もある。
最大4話者。
カスタムTransformation。
Notes。
REST API。
機能を追いかけ始めれば、いくらでも深掘りできる。
だが、今回触って最も気に入ったのは、もっと単純なところだった。
URLを貼る。
資料になる。
複数資料を横断して質問できる。
これが速い。
そして気持ちいい。
NotebookLMのようなクラウドサービスは確かに便利だ。
一方Open Notebookなら、保存先は自宅のTrueNASにできる。
LLMはLM StudioでもクラウドAPIでも好きに選べる。
Embeddingモデルまで自分で選べる。
そして今回のようにAI処理を別PCへ逃がせば、NASに強力なCPUやGPUすら必要ない。
公式のDocker+Ollama全部入り構成は素晴らしい。
だが、
「TrueNASにYAMLを一枚貼って、AIはいつものLM Studioに任せる」
くらいお気楽なOpen Notebookがあってもいい。
Pentium G4560でも、今日も元気にRAGをしている。
それで十分じゃないか。


