iT邦幫忙

2025 iThome 鐵人賽

DAY 25
0
AI & Data

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

【Day 25】Notion Chatbot 對話記憶與來源追蹤的設計優化:打造真正的知識助理

  • 分享至 

  • xImage
  •  

Day 24,我們打造了第一個可以「對話」的 Notion × LLM 助理,讓使用者能直接用自然語言從筆記中搜尋答案。
但實際使用後我發現,它仍然比較像是「查詢引擎」——每次提問都是孤立的,AI 不記得上一輪你問了什麼,也說不出答案從哪裡來。

今天,我們將從設計層面探討如何讓 Chatbot 擁有記憶與可追溯性,為 Day 26 的實作奠定完整的概念基礎。

1. 為什麼需要升級?

1.1 Day 24 的功能限制

限制類型 具體情境 問題根源 影響
無法延續對話 使用者問「那篇文章的主題是什麼?」 系統不知道「那篇」指的是哪一篇 需要重複描述完整問題
缺乏上下文理解 使用者問「他的主要觀點是?」 系統不清楚「他」是誰 無法進行深入討論
答案可信度不足 使用者得到回答後 不知道資訊來自哪裡,無法驗證 降低對系統的信任感
無法回溯思路 想確認某個說法的出處 找不到先前對話的參考來源 影響知識管理效率

就像跟一個「短期記憶很差」的人聊天,每次都要重新解釋話題。

1.2 理想的對話助理應該具備什麼?

來看一段對比:

【真人對話】
你:請幫我介紹一下 RAG 架構
我:RAG 是一種結合檢索與生成的技術...(詳細說明)
你:那它和傳統搜尋有什麼不同?
我:(理解「它」指的是 RAG)主要差異在於...

【目前系統】
你:請幫我介紹一下 RAG 架構
🤖:RAG 是一種結合檢索與生成的技術...
你:那它和傳統搜尋有什麼不同?
🤖:❌ 不確定「它」指的是什麼,請問你想了解什麼?

為了讓對話更自然,我們需要讓 Chatbot:

  • 能「記住」上文(Context
  • 能「理解」代稱(Reference
  • 能「說出」資料來源(Traceability

2. 核心設計概念

2.1 對話記憶(Conversation Memory)

這是讓 AI 能連貫理解上下文的關鍵。

記憶資料結構設計

對話記憶 = [
    {
        "role": "user",
        "content": "請介紹 RAG",
        "timestamp": "2025-10-09 10:30:00"
    },
    {
        "role": "assistant",
        "content": "RAG 是...",
        "sources": [...],
        "timestamp": "2025-10-09 10:30:05"
    },
    {
        "role": "user",
        "content": "它和傳統搜尋有什麼不同?",
        "timestamp": "2025-10-09 10:31:00"
    },
    ...
]

Rag 多輪對話流程

使用者每次提問時,系統會先載入過去幾輪對話,讓 LLM 能「知道前文」。
(如下圖所示)
https://ithelp.ithome.com.tw/upload/images/20251009/201781040oBOA1S6KT.png

2.2 對話記憶的管理策略

當對話越來越長,記憶也需要「取捨」與「壓縮」。我們需要智慧管理記憶:

策略 說明 適用場景 優缺點
完整保留 全記錄保存 短對話 ✅完整上下文 ❌消耗 Token
滑動窗口 保留最近 N 輪 中長對話 ✅控制成本 ❌遺失早期內容
摘要壓縮 將舊對話摘要化 長對話 ✅效率高 ❌易失細節
分層記憶 重點長期、細節短期 複雜對話 ✅兼顧完整性 ❌需額外邏輯

本次設計選擇滑動窗口(保留最近 10 輪),平衡實用性與效能。

2.3 來源追蹤(Source Tracking)

除了「記得你說過什麼」,系統還要能「記得它為什麼這樣說」。

情境:使用者詢問「Python 的裝飾器是什麼?」

【沒有來源追蹤】
🤖:裝飾器是 Python 中用於修改函式行為的語法糖...
👤:嗯,這是你自己說的還是我的筆記裡有?
🤖:❌(無法回答)

【有來源追蹤】
🤖:裝飾器是 Python 中用於修改函式行為的語法糖...

📚 參考來源:
  • 【Python 進階筆記】裝飾器與閉包 — 程式語言筆記
    "裝飾器 (Decorator) 提供了一種修改函式或類別的方法..."
  
  • 【學習筆記】Python 核心概念 — 技術學習
    "@decorator 語法是 Python 的語法糖..."

👤:原來在這裡!我去看完整筆記

使用者能在回答下方展開:

  • 📚 參考來源
    • Python 進階筆記:裝飾器與閉包(相似度 92%)
    • Python 核心概念(相似度 87%)

讓 AI 回答不再是「空口說白話」,而是能回到知識根源。

視覺化設計概念

https://ithelp.ithome.com.tw/upload/images/20251009/20178104dODdFSN4zE.png

來源資訊架構

{
  "sources": [
    {
      "title": "Python 進階筆記:裝飾器與閉包",
      "category": "程式語言筆記",
      "block_id": "abc123",
      "snippet": "裝飾器 (Decorator) 提供了一種修改函式或類別的方法...",
      "similarity_score": 0.92,
      "retrieved_at": "2025-10-09T10:30:05"
    },
    {
      "title": "Python 核心概念",
      "category": "技術學習",
      "block_id": "def456",
      "snippet": "@decorator 語法是 Python 的語法糖...",
      "similarity_score": 0.87,
      "retrieved_at": "2025-10-09T10:30:05"
    }
  ]
}

來源顯示的設計原則

原則 說明 設計考量
清晰性 明確標示筆記標題、分類 使用階層式資訊展示
可選性 使用者可選擇是否顯示來源 提供開關選項
可互動 可點擊來源連結回到原筆記 考慮後續實作 Notion 連結
相關性排序 優先顯示最相關的來源 依相似度分數排序
摘要預覽 顯示文字片段而非完整內容 限制 150 字元 + "..."

3. 使用者體驗設計

我們的最終目標是讓對話過程看起來更自然、可控、可信。

3.1 對話介面設計 - 訊息呈現邏輯

┌──────────────────────────────────────────────┐
│                                       [⚙️]   │  ← 設定按鈕
│  💬 Notion × LLM 智慧助理                      │
├──────────────────────────────────────────────┤
│                                              │
│  👤 使用者                              10:30 │
│  ┌──────────────────────────────────────┐     │
│  │ 請介紹一下 RAG 架構                    │     │
│  └──────────────────────────────────────┘     │
│                                              │
│                              🤖 助理     10:30 │
│         ┌────────────────────────────────┐    │
│         │ RAG(Retrieval-Augmented        │    │
│         │ Generation)是一種...            │    │
│         │                                │    │
│         │ [📚 參考來源 ▼]                 │    │
│         └────────────────────────────────┘    │
│                                              │
│  👤 使用者                              10:31 │
│  ┌──────────────────────────────────────┐     │
│  │ 它和傳統搜尋有什麼不同?               │     │
│  └──────────────────────────────────────┘     │
│                                              │
│                              🤖 助理     10:31 │
│         ┌────────────────────────────────┐    │
│         │ 相較於傳統搜尋引擎...             │    │
│         │ [📚 參考來源 ▼]                 │    │
│         └────────────────────────────────┘    │
│                                              │
├──────────────────────────────────────────────┤
│  💬 請輸入你的問題...                [送出]   │
└──────────────────────────────────────────────┘

3.2 互動功能設計 - 側邊欄控制面板

┌──────────────────┐
│  ⚙️ 設定          │
├──────────────────┤
│                  │
│  檢索設定         │
│  ├─ 檢索數量      │
│  │   ◄ 3 ►       │
│  │   (1-10)      │
│  │               │
│  └─ 相似度門檻    │
│      ◄ 0.7 ►     │
│      (0.5-0.95)  │
│                  │
│  顯示設定         │
│  ☑ 顯示來源       │
│  ☐ 顯示相似度     │
│  ☑ 顯示時間戳記   │
│                 │
│  記憶設定        │
│  ☑ 啟用對話記憶   │
│  保留輪數: 10    │
│                 │
│  ─────────────  │
│                 │
│  🗑️ 清除對話記錄  │
│  📥 匯出對話      │
│  ⚡ 快速提問      │
│                 │
└─────────────────┘

快速操作設計

功能 觸發方式 效果
清除對話 點擊側邊欄按鈕 清空當前對話,開始新對話
匯出對話 點擊匯出按鈕 下載 Markdown 格式的對話記錄
回溯對話 點擊特定訊息的「從這裡重新開始」 回到該訊息後重新提問
快速提問 點擊預設問題模板 自動填入常見問題
複製回答 點擊訊息旁的複製圖示 複製助理回答內容

3.3 回饋與提示設計 - 系統狀態提示

載入狀態:
┌─────────────────────┐
│  🔄 思考中...        │
│  ┌───────────────┐  │
│  │ ▓▓▓▓▓░░░░░░░  │  │
│  └───────────────┘  │
│  正在檢索相關筆記...   │
└─────────────────────┘

成功狀態:
┌─────────────────────┐
│  ✅ 已找到 3 則相關筆記 │
└─────────────────────┘

錯誤狀態:
┌─────────────────────┐
│  ⚠️ 無法檢索資料      │
│  請檢查網路連線       │
└─────────────────────┘

智慧提示功能

當使用者輸入模糊問題時:

👤:介紹一下那個東西

🤖:抱歉,我不確定「那個東西」指的是什麼。
   
   💡 建議:
   • 你是否想問:剛才提到的 RAG 架構?
   • 或者你可以重新描述一下你想了解的內容

小結與下篇預告

Day 25 是整個系列的一個轉折點——我們從「能對話」邁向「能理解」。
在這一章裡,我們不再只關心讓 AI 給出正確答案,而是讓它記得你說過的話,知道它為什麼這樣回答。
這意味著,我們的 Chatbot 正在從「工具」成長為真正的「知識夥伴」。

明天,我們將正式進入實作階段,完成兩個核心模組:

  • Conversation Memory:對話記憶管理
  • Source Tracking:引用顯示與來源連結

當這兩個模組完成後,Notion Chatbot 將不再只是回答問題的助手,
而是一個能「理解上下文、引用正確知識、並記得你的對話」的智慧夥伴。


上一篇
【Day 24】實作 Streamlit x Notion AI Chatbot
下一篇
【Day 26】用 Streamlit 打造會記憶的 AI 助理:對話記憶 × 來源追蹤實作
系列文
Notion遇上LLM:30天打造我的AI知識管理系統27
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言