自建 Notebook LM 替代品:open-notebook 上手与评测
Google 的 Notebook LM 刚出的时候,我觉得这东西挺酷的——上传一堆文档,它能自动生成问答、总结,甚至还能像播客一样把内容聊出来。但用了几天就发现痛点:数据全在 Google 服务器上,模型不能换,播客只有英文男声,想加自定义知识库也没门。
上周在 GitHub 上看到一个叫 open-notebook 的项目(lfnovo/open-notebook),正好就是 Notebook LM 的开源版本。一天涨了 2.5 万 Star,说明不少人有同感。我花了一个周末搭建试用,这篇文章把实际感受和关键要点告诉你。
它解决了什么问题
简单说,open-notebook 是一个自托管的 AI 笔记智能体。你可以上传 PDF、网页、Markdown 等文档,然后像聊天一样提问,它基于文档内容回答,还能把内容变成播客对话。
和 Notebook LM 最大的不同:
- 模型自由:支持 OpenAI、Anthropic、Ollama、Google Gemini,甚至本地部署的模型。
- 数据私有:所有文档和索引都在你自己的服务器上。
- 可定制:播客可以有多种语言和角色,还能自己写 Prompt 模板。
- 完全开源:代码在 GitHub,想改就改。
如果你是做企业内部知识库、个人研究笔记、或对数据隐私敏感的场景,这个项目值得关注。
核心功能与代码示例
1. 多源文档导入
支持上传 PDF、TXT、Markdown、网页 URL(自动抓取)、CSV 等。上传后自动切分、向量化。
# 通过 API 导入文档(示例)
curl -X POST http://localhost:3000/api/documents/upload \
-F "file=@./docs/paper.pdf" \
-F "sourceName=my_paper"
后台会调用你配置的 Embedding 模型(默认为 text-embedding-3-small)将内容存入向量数据库。
2. 多模型问答(RAG)
这是最核心的功能。你提问时,系统会从文档中检索相关片段,然后交给 LLM 生成答案。
配置模型:在 .env 文件中设置:
LLM_PROVIDER=ollama
OLLAMA_BASE_URL=http://localhost:11434
OLLAMA_MODEL=llama3.2
EMBEDDING_PROVIDER=ollama
EMBEDDING_MODEL=nomic-embed-text
实际使用效果:我用了一本技术书(PDF,约 300 页)索引后,问“异步编程的优缺点”,答案能准确引用书中片段并给出代码示例。不过如果文档质量差(扫描件、格式混乱),检索精度会下降。
3. 播客生成(双人对话)
这个功能比较新颖:基于文档内容,让两个 AI 角色像播客一样讨论。
你可以指定播客的语言(中文目前支持,但效果不如英文)、角色(比如“技术专家”和“新手”),以及对话长度。
# 触发播客生成
curl -X POST http://localhost:3000/api/podcast/generate \
-H "Content-Type: application/json" \
-d '{
"documentId": "doc_abc123",
"language": "zh",
"personas": ["技术专家", "产品经理"],
"length": "medium"
}'
生成的音频文件是 MP3,可以直接播放。测试中文效果:有点生硬,像两个机器人在念稿,但内容逻辑是对的,作为快速了解文档大纲还行。英文效果明显更自然,因为底层模型(GPT-4o 或 Claude)对英文对话的微调更好。
4. 系统 Prompt 可自定义
这是 Notebook LM 做不到的。你可以在 UI 里修改系统提示词,比如强制回答时先引用原文、控制语气等。
和同类项目的区别
市面上已有不少自建 RAG 项目,比如 Danswer、privateGPT、RAGFlow。open-notebook 最独特的地方就是播客生成。
| 功能 | open-notebook | Danswer | privateGPT |
|---|---|---|---|
| 文档导入 | PDF/网页/文本 | 多种办公文档 | PDF/文本 |
| 多模型 | ✅ OpenAI/Ollama/Gemini | ✅ 支持多种 | ✅ Ollama |
| 播客生成 | ✅ 双人对话 | ❌ | ❌ |
| 对话历史 | ✅ | ✅ | ✅ |
| 数据本地化 | ✅ 全量 | ✅ 可选 | ✅ 全量 |
| 部署复杂度 | 低(Docker) | 中(需额外组件) | 低 |
| 前端 UI | 美观、仿 Notebook LM | 较专业但复杂 | 简陋 |
我的个人感受:如果你只是要一个内部知识问答系统,Danswer 的文档解析和权限管理更成熟。但如果你想要 Notebook LM 那种“把文档变成语音对话”的体验,open-notebook 是唯一选择。
和原版 Notebook LM 比较:
- Notebook LM 生成播客质量极高(双人自然对话,带语气词、笑声),目前 open-notebook 还达不到这个水平。但 Google 不支持中文播客,模型不可换,数据不能私有。
- open-notebook 的播客生成基于 LLM 文本转音频,音色用的是系统 TTS(如 Edge TTS),对话脚本也是模型写的,所以听起来像“朗读”而不是“聊天”。如果未来引入更高级的多轮对话提示和更好的 TTS,差距会缩小。
适用场景与局限
哪些场景推荐用?
- 个人知识库:你有一堆文档、论文,想快速问答和生成学习材料。
- 内部培训资料:把 SOP、周报上传,让新员工通过对话了解业务。
- 内容创作者:把长文章转成播客,作为音频内容发布。
- 技术尝鲜者:想体验类似 Notebook LM 的功能,又不愿把数据交给第三方。
哪些场景不适合?
- 大规模生产环境:目前项目还很新(刚上 GitHub 不到一个月),代码质量、性能优化、错误处理都不够稳定。我跑了 3 天,遇到一次 API 返回 500 错误,重启后恢复。
- 需要高精度问答:RAG 的效果依赖文档质量和切分策略。如果文档本身混乱,答案可能胡编。建议先用小文档测试。
- 中文播客质量要求高:目前中文播客效果偏朗读,没有抑扬顿挫。如果想做出像“得到”那样的音频节目,可能还需要自己调 TTS 引擎或用付费服务。
- 多人协作:目前没有用户权限管理,只有一个管理员。多租户场景需要自己二次开发。
快速上手步骤
最省力的方式是用 Docker Compose,5 分钟搞定。
前提条件
- 安装了 Docker 和 Docker Compose
- 至少 4GB 内存(如果用本地 Ollama 模型,建议 8GB+)
步骤
克隆项目并进入目录
bash1 2git clone https://github.com/lfnovo/open-notebook.git cd open-notebook复制环境变量文件并修改
bash1cp .env.example .env编辑
.env,关键配置:
LLM_PROVIDER=openai或ollama- 如果是 Ollama,确保本地启动 Ollama 服务并设置
OLLAMA_BASE_URL ENABLE_PODCAST=true开启播客生成
启动服务
bash1docker-compose up -d等待几分钟,首次会下载镜像。
- 创建用户(目前 UI 会引导你注册第一个管理员)→ 创建一个 Notebook → 上传文档 → 开始提问。
常见坑
- Docker 镜像较大:大约 2GB,因为包含了 Chromium(用于网页抓取)。如果磁盘空间不足,可以自己改 Dockerfile 去掉它,但网页抓取功能会失效。
- 首次加载文档较慢:向量化进度条可能卡住,其实是后台在处理,多刷新几次或者查看日志
docker-compose logs -f。 - 生成播客时卡住:如果用的是免费/弱模型(比如 Ollama 的 llama3.2 8B),生成的播客脚本可能不够长导致 TTS 处理失败。建议至少用 GPT-4o-mini 或 Claude Haiku。
总结一下?不,说点实际的
open-notebook 让我看到了开源社区追赶标杆产品的速度。虽然现在还有很多粗糙的地方(播客质量、稳定性、文档解析精度),但它给出了一个完整的框架:多源文档 + RAG + 多模型 + 音频生成。对于技术团队来说,这个项目最实用的地方是数据自主权——你可以把所有企业文档本地化,再用 AI 问答,既合规又灵活。
如果你只是好奇,花 10 分钟用 Docker 跑起来体验一下,值得。如果要在生产用,建议等几个版本迭代,或者基于它做二次开发。
对了,项目作者更新很勤快,Issues 响应也快,社区活跃。Star 数增长快说明很多人需要这个方向。你可以点个 Watch,看看后续发展。