iT邦幫忙

2025 iThome 鐵人賽

DAY 30
2
AI & Data

Notion遇上LLM:30天打造我的AI知識管理系統系列 第 30

【Day 30】Notion × LLM 系列最終章:從筆記到對話,30 天的蛻變

  • 分享至 

  • xImage
  •  

在這次鐵人賽開始之前,我的目標其實很單純:讓 Notion 筆記不只是儲存資訊,而是能主動回應問題。

30 天過去了,我們從零開始,經歷了資料結構設計、向量化、RAG 檢索、UI 開發,也經歷了無數個 debug、版本重構與靈感乍現。今天,我想用這篇文章,回顧這趟從「自動化」走向「智能化」的旅程。

1. 系列回顧

1.1 從資料到智慧的進化

整個系統的成長,就像一棵從根往上長的樹——從最底層的資料結構,逐步往上建構出語意理解與對話能力。每一層都彼此支撐,缺一不可。

📊 資料層:Notion JSON → SQLite
    ↓ 結構化儲存
    
🧠 向量層:SQLite → ChromaDB
    ↓ 語意化表示
    
🔍 檢索層:ChromaDB → OpenAI Embedding
    ↓ 智能搜尋
    
💬 應用層:RAG Backend → Streamlit UI
    ↓ 對話互動

1.2 里程碑回顧

階段 日期 核心目標 成果
Phase 1:資料基礎 Day 1–11 打通 Notion API,建立資料倉庫 完成 Notion → SQLite 完整 Pipeline、設計可擴展的 Schema
Phase 2:向量化 Day 12–16 讓筆記能被「語意搜尋」 Chunking 策略確立、ChromaDB 向量化完成
Phase 3:自動化 Day 17–21 串接外部資料源 n8n 自動化電子報摘要、定時同步機制
Phase 4:RAG 系統與前端 Day 22–26 建立對話能力 檢索 + 生成整合、對話記憶功能
Phase 5:完善細節 Day 27–30 從「能動」到「好用」 完整 Metadata 流、Notion 連結追蹤、UI/UX 優化

2. 血淚史:遇到的困難與解決方案

2.1 向量資料庫「失憶」

問題現象:

使用者:什麼是類別?
AI:類別就像是物件的設計藍圖...
使用者:這個答案從哪來的?
AI:參考來源:⚠️ 未命名筆記 — 未分類

系統能回答問題,但說不出「資訊來自哪裡」。

根本原因:
ChromaDB 有資料,但 Metadata 缺失(page_namepage_url
寫入時用 page_name,讀取時用 Title,對不上

解決方案:
回頭重構 SQLite Schema,確保所有 metadata 完整儲存
在 Embedding 流程加入 page_namepage_urlcategory
統一命名規則,避免讀寫不一致

2.2 電子報清理的地獄之旅

問題現象:

<div style="padding:20px">
  <img src="data:image/png;base64,iVBOR..." />
  <a href="https://tracking.link?utm_source=...">點擊這裡</a>
  <!-- 10000 行 CSS -->
</div>

n8n 的 Gmail node 抓到的郵件,滿滿的 HTMLCSS、追蹤碼。AI 摘要幾乎失效。

真實世界的資料永遠比想像中髒。清理資料的時間,往往比寫演算法更多。

解決方案:

  • 自寫 JavaScript 節點,用 Regex 清理
  • 去除 HTML 標籤、Base64 圖片、URL 參數
  • 只保留純文字內容

2.3 Streamlit 對話狀態混亂

問題現象:

# 使用者點擊「清除對話」
clear_memory()
# 但畫面上對話還在...

Streamlit 每次互動都會重新執行整個腳本,導致狀態混亂。

解決方案:

  • 使用 st.session_state 儲存對話歷史
  • 清除時同步更新 session_state
  • st.rerun() 強制重新渲染

3. 收穫滿滿:我學到了什麼?

3.1 技術能力的提升

  • 熟悉 Notion APIChromaDBn8nStreamlit
  • 實作完整 RAG Pipeline:資料 → 向量 → 檢索 → 回答
  • 學會如何在不同工具間保持資料一致性

3.2 系統設計的思考

這 30 天,最大的收穫不是「寫了多少程式碼」,而是學會了:
如何設計一個能長大的系統

好的系統設計 ≠ 一次寫對所有東西
好的系統設計 = 能隨著需求演進而擴展

關鍵:
1. 模組化:每個功能獨立,容易替換
2. 可追溯:每個資料都有來源
3. 可驗證:每個結果都能回查
4. 可擴展:新增功能不需要大改

4. 展望未來:優化與擴展計畫

這只是開始。未來,我們還想讓這個系統更強、更聰明:

面向 未來計畫
RAG 效能 引入 reranking / hybrid search(embedding + keyword)
長期記憶 將對話記錄保存進 SQLite,支援多輪上下文
UI 體驗 加入深色模式、主題切換與 Dashboard
多語支援 自動翻譯筆記內容,支援中英混查

5. 結語

「最好的學習方式,就是去做一個真正有用的東西。」
這 30 天,我們做到了。 ✨

30 天的鐵人賽,不只是技術文章的挑戰,更是一次 專案管理、團隊協作與自我紀律 的試煉。

我們以團隊「三陳牛肉吉事堡」的名義參賽,這 30 天中,團員們彼此推進、互相支援:

  • 時間管理:每天維持固定進度,週末集中衝刺
  • 溝通協調:即時在 Line 討論、HackMD 紀錄決策
  • 互助 Debug:卡關時彼此協助,分享解法與心得

我們曾在半夜修 bug,也曾在凌晨或清晨上傳文章。因為還要兼顧工作與生活,時間總是很緊湊與忙碌;但每當看見畫面終於跑起來、功能成功串接的那一刻,
那份成就感足以抵消所有的疲憊。

最後,如果你對這個系列有任何問題,或想更深入了解我的 Notion × LLM 實作,歡迎一起交流、分享與討論!

也歡迎觀看「三陳牛肉吉事堡」另外兩位團員的文章:

/images/emoticon/emoticon12.gif


上一篇
【Day 29】Notion RAG 系統 - 完整 Metadata 整合與 UI 優化
系列文
Notion遇上LLM:30天打造我的AI知識管理系統30
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 則留言

1
小田
iT邦新手 5 級 ‧ 2025-10-14 22:40:23

恭喜 Nikki 完賽~

/images/emoticon/emoticon02.gif

/images/emoticon/emoticon41.gif

0
josh_chen40
iT邦新手 5 級 ‧ 2025-10-14 23:26:02

恭喜完賽! Notion大升級!

我要留言

立即登入留言