Open Notebook的特性與架構限制

在公司內想要用Open Notebook(社群開源版)來取代 Google 官方的 NotebookLM

但便宜就是有極限

需要用錢解決問題時就花錢吧

 

Open Notebook(社群開源版)雖然介面模仿 Google 官方的 NotebookLM,但底層完全是依靠開源套件組裝而成的。它的檔案處理與上傳機制確實比商業級產品更容易失敗,核心原因包含以下 4 點:

1. 檔案解析器(Unstructured / PyPDF)的容錯率低

Google NotebookLM 後端擁有 Google 龐大的雲端文件解析與 OCR 引擎;而 Open Notebook 容器內部使用的是 Python 的開源解析庫(如 pypdfpdfplumberunstructured)。

  • 問題所在:只要檔案稍微帶有複雜表格、掃描圖片、特殊字型,或是檔案頭格式不完全標準(例如二進位 .xls 或舊版 JPEG),開源解析庫就會直接拋出 Exception(例外錯誤)導致上傳在中途中斷。

2. 多重步驟的 pipeline 只要一環失敗就全覆

Open Notebook 的上傳流程其實不是「存檔」這麼簡單,它背後連續執行了多個步驟:

上傳檔案提取純文字分段切片 (Chunking)呼叫 Embedding 模型 (如 bge-m3)存入向量資料庫 (SurrealDB)

只要其中任何一個步驟出錯(例如文字提不出來、檔案名稱帶中文造成路徑編碼出錯、或是 Embedding 時 VRAM 溢出),前端就會直接顯示「處理失敗」。

3. 本地硬體 (GPU / VRAM) 瓶頸與 Timeout 機制

當你上傳較大的文件(如幾十頁的 PDF)時,後端需要將大量的文字轉為向量矩陣。

  • 如果你的顯示卡 VRAM 不夠,或是 CPU 在運算 Embedding 時耗時過長,Docker 前後端的 HTTP 連線(FastAPI / NGINX)就會因為逾時 (Timeout) 而斷線,導致前端跳出失敗。

4. 前端副檔名與 MIME Type 判定過於嚴格

正如剛剛遇到的情況,Open Notebook 在前端與 API 層過濾了副檔名,很多在 Google NotebookLM 上可以自動轉換的檔案(如 CSV、圖片、舊版 Excel),在 Open Notebook 上會直接被擋掉不允許處理。

💡 讓 Open Notebook 上傳「100% 成功」的操作守則

為了避開開源套件的這些坑,在使用 Open Notebook 時,建議遵循以下最佳上傳原則

  1. 格式只用 .txt.md 或「文字型 .pdf
    • 表格、CSV、Excel 檔:改副檔名為 .txt,或貼到 Excel 存成文字檔。
    • 圖片/掃描檔:先用 OCR 工具提取出純文字再上傳 .txt
  2. 檔名一律改為「純英文 + 數字」
    • 避免使用中文、全形符號或空格(例如:將 2025產品ABC分析表.xlsx 轉存並改名為 abc_2025.txt)。
  3. 大檔案分拆處理
    • 如果 PDF 超過 50 頁,建議拆成小檔分批上傳,避免本地 Ollama Embedding 算到逾時。

 

自我LV~