自建 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 等。上传后自动切分、向量化。

bash
1 2 3 4
# 通过 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 文件中设置:

env
1 2 3 4 5
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 角色像播客一样讨论。

你可以指定播客的语言(中文目前支持,但效果不如英文)、角色(比如“技术专家”和“新手”),以及对话长度。

bash
1 2 3 4 5 6 7 8 9
# 触发播客生成
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 里修改系统提示词,比如强制回答时先引用原文、控制语气等。

自定义Prompt界面

和同类项目的区别

市面上已有不少自建 RAG 项目,比如 DanswerprivateGPTRAGFlow。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,差距会缩小。

适用场景与局限

哪些场景推荐用?

  1. 个人知识库:你有一堆文档、论文,想快速问答和生成学习材料。
  2. 内部培训资料:把 SOP、周报上传,让新员工通过对话了解业务。
  3. 内容创作者:把长文章转成播客,作为音频内容发布。
  4. 技术尝鲜者:想体验类似 Notebook LM 的功能,又不愿把数据交给第三方。

哪些场景不适合?

  1. 大规模生产环境:目前项目还很新(刚上 GitHub 不到一个月),代码质量、性能优化、错误处理都不够稳定。我跑了 3 天,遇到一次 API 返回 500 错误,重启后恢复。
  2. 需要高精度问答:RAG 的效果依赖文档质量和切分策略。如果文档本身混乱,答案可能胡编。建议先用小文档测试。
  3. 中文播客质量要求高:目前中文播客效果偏朗读,没有抑扬顿挫。如果想做出像“得到”那样的音频节目,可能还需要自己调 TTS 引擎或用付费服务。
  4. 多人协作:目前没有用户权限管理,只有一个管理员。多租户场景需要自己二次开发。

快速上手步骤

最省力的方式是用 Docker Compose,5 分钟搞定。

前提条件

  • 安装了 Docker 和 Docker Compose
  • 至少 4GB 内存(如果用本地 Ollama 模型,建议 8GB+)

步骤

  1. 克隆项目并进入目录

    bash
    1 2
    git clone https://github.com/lfnovo/open-notebook.git
    cd open-notebook
  2. 复制环境变量文件并修改

    bash
    1
    cp .env.example .env

    编辑 .env,关键配置:

  • LLM_PROVIDER=openaiollama
  • 如果是 Ollama,确保本地启动 Ollama 服务并设置 OLLAMA_BASE_URL
  • ENABLE_PODCAST=true 开启播客生成
  1. 启动服务

    bash
    1
    docker-compose up -d

    等待几分钟,首次会下载镜像。

  2. 访问 http://localhost:3000

登录界面

  1. 创建用户(目前 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,看看后续发展。