跳至主要內容

里程碑

n8n x Discord | 全本機私有知識庫,創造領域專攻私人幕僚

戴庭 @tyt0409發布於 已編輯

本地知識庫discord助手 | 不上傳雲端,也能把自己的文件化為特定專業助理

Ask your own documents — without ever leaving your computer.
在自己的電腦上,把一堆 PDF 變成「問得到、答得準」的私人discord機器人。
══════════════════════════════════════════════════════

工作流截圖

主工作流截圖
知識庫工作流截圖

══════════════════════════════════════════════════════

💡 作者的發想

前一篇說到,我對人際關係這件事一直很著迷
手邊也慢慢蒐集了一堆相關資料:溝通技巧、關係經營、人際心理學、對話與說服……從 PDF、電子書到論文都有
而我想做的,不是又一個 AI 問答,而是把整套東西搬回自己的電腦,餵它我親自挑過的那批溝通藏書。
模型在我家、資料在我家、問答也在我家,而且它講的每一句話,都找得到我書架上的依據。

於是這個懂 特定領域資料庫 的discord機器人誕生了——你的書,你自己問,也只有你自己看得到。
(前提是不把機器人公開,設置私用的方式:安裝頁面-安裝連結-選"無"-機器人頁面-關閉公開)

══════════════════════════════════════════════════════

🎯 自建知識庫的價值:從「什麼都懂一點」變成「這領域的專科醫師」

先問一個問題:通用 AI(像 ChatGPT)不是也能聊溝通、聊人際嗎?那為什麼還要自己建?

因為通用模型是通才——它什麼都懂一點,但每一點都淺。
你問它「朋友最近都不回我訊息,怎麼辦」,它會給你一段四平八穩、放到任何情境都不會錯、但也幫不上你的答案。
更麻煩的是:這個領域沒有標準答案,網路上充斥著互相矛盾的說法——該主動還是該被動?吵架該立刻講開還是先冷靜?每一派都講得頭頭是道。

通才模型讀的是全網的雜訊,所以它吐出來的,往往是「所有說法的平均值」——聽起來很合理,實際上很空泛,偶爾還會自己打自己臉。

自建知識庫做的事完全不同:我餵進去的每一份 PDF,都是我親自挑過、信任的來源。
就像你不會隨便拉個路人問健康問題,而是去掛一位專科醫師——而這位醫師讀的文獻,還是你自己選的。

■ 來源可信,答案有據
 回答會附上引用原句,你可以回頭查「這是哪本書、哪一頁說的」,而不是模型憑印象掰出來的。
 通用 AI 講得再有道理,你也只能選擇相信;自建知識庫的答案,你可以查證。

■ 觀點一致,不會精神分裂
 你自己挑的書單,通常屬於同一套框架(例如非暴力溝通、依附理論、談判學……)。
 AI 會站在你認同的那套觀點回答,不會今天給你 A 派建議、明天換 B 派,越問越亂。

■ 把書單,沉澱成你的觀點資產
 好書、好文章存得越多,這位助理就越懂那個領域。
 它不是一次性消耗品,而是越養越強、完全屬於你的私人智囊——而且是那份誰也抄不走的「你到底選了什麼書」。

換句話說:通用 AI 是路邊的萬事通,自建知識庫是你養出來的專科醫師。
重點不是「能不能問」,而是「它到底讀過誰的東西、站在誰的觀點上、能不能讓你查證」——這才是自建真正的價值。

══════════════════════════════════════════════════════

🧭 整體架構

程式碼
Discord 使用者
   │  直接提問(因為是自用伺服器,直接創專用頻道了,也可以設置為@bot喚醒)
   ▼
n8n(工作流引擎)
   ├─ Discord Trigger(Gateway 接收訊息)
   ├─ AI Agent(Ollama對話)
   │    ├─ Memory:記住對話脈絡
   │    └─ Tool:Qdrant 向量檢索
   ▼
Ollama(本機 LLM / 嵌入模型)
   ├─ 文字LLM        → 生成回答(能跑中文的模型,此處不提供型號)
   └─ bge-m3          → 文字向量化
   ▼
Qdrant(本機向量資料庫 pdf_knowledge)

一句話總結:Discord 負責「你出張嘴」,n8n 負責「調度流程」,Ollama 負責「思考與讀字」,Qdrant 負責「記住文件」。
四個湊一桌,就是一套離線版、專讀你自己 PDF 的 AI 助理。

══════════════════════════════════════════════════════

🔧 為什麼要分「生成」跟「嵌入」兩個模型?

各元件的角色,架構圖裡都標好了,這裡只補一個最容易搞混、卻很關鍵的分工——用圖書館來比喻:
bge-m3 像圖書館的編目員,負責替每段文字貼上「座標標籤」;
Qdrant 像卡片櫃,按座標把標籤排好收好;
文字LLM 才是那位讀完資料後開口回答你的館員。
編目跟回答是兩種完全不同的工作,硬要同一個模型全包,通常兩邊都不討好。

══════════════════════════════════════════════════════

🔄 它怎麼回答你?——RAG 開卷考

(建庫步驟見後面的「建庫工作流拆解」,這裡只講「回答」這一段。)

你問一句,背後其實是:問題先拿去 Qdrant 撈出最相關的幾段 → 這幾段連同問題交給文字LLM → 生成回答,並附上引用的原句。
這就是 RAG(檢索增強生成)的核心:
不是要模型把整本 PDF 背下來(背不完,還會開始亂編),而是讓它在開口之前,先去書架翻個兩頁,翻到相關段落再回答。
就像考試從「閉卷」改成「開卷」——答案的依據,從模型腦內的模糊記憶,換成你文件裡白紙黑字的原句。

══════════════════════════════════════════════════════

✨ 實機演練

示範1-1
示範1-2
示範1-3
示範2-1
示範2-2

══════════════════════════════════════════════════════

💬 為什麼是 Discord?因為你根本不用做「介面」

做一套問答系統,最容易被低估的就是「介面」這件事。
你可以把模型、向量庫、流程全部接好,但最後總得有個地方讓人打字—於是有人開始刻網頁、做 App、接 LINE,光是前端就夠忙一輪

用 Discord,等於直接跳過這一關:你要的介面,Discord 早就幫你做好了,而且免費

■ 你人本來就在那裡  
 多數人電腦、手機早就掛著 Discord,平時聊天、追社群、看討論都在上面
 把 bot 加進一個頻道,就像把新朋友拉進群組——不用另外裝 App,也不用記網址
 別人是「特地開一個網站去問 AI」,你是「順手在聊天室 @一下就有答案」

■ 跨裝置、免安裝、即時同步  
 電腦上問一半,出門用手機接著問,訊息跟回答都在同一個頻道裡,一行都不會漏。  
 手機推播、已讀、搜尋歷史……這些你想得到的聊天室功能,全部免費送你。

■ 「打字中…」這種小細節也不用自己寫  
 Discord 內建 typing indicator,bot 在跑檢索、生成時顯示「輸入中」,  
 使用者就知道「它在想,不是壞了」——這種體驗自己刻要花不少工。

■ @bot 就是最直覺的開關 (創專用頻道後,改有任何訊息即觸發) 
 不用背指令、不用打斜線語法,@一下就是提問。  
 對不熟技術的人來說,「像跟朋友講話」永遠比「照著說明書打格式」友善。

說白了,這套系統的重點是「模型、資料、隱私」,而不是「做一個漂亮的網站」
能用現成的就用現成的,把力氣全部留給真正重要的那塊
而 Discord 剛好就是那個「現成、免費、又好用」的門面

══════════════════════════════════════════════════════

🧱 建庫工作流拆解

建庫這件事,其實像在做一批冷凍調理包——現在花時間備料、分裝,之後要吃的時候微波一下就能上桌。

  1. 讀取(Extract from File):把 PDF 的文字抽出來
  2. 切塊(Chunking):把長文剪成一段段小塊(像把整本食譜拆成一張張小卡)
  3. 向量化(Ollama Embeddings / bge-m3):把每塊轉成 1024 維向量
  4. 寫入(Qdrant Upsert):存進 pdf_knowledge collection

■ 切塊大小是關鍵旋鈕
 太小的塊 → 語意被切碎,檢索撈到的片段沒頭沒尾
 太大的塊 → 一塊塞太多主題,向量變得模糊,反而撈不準
 通常會讓相鄰的塊留一點重疊(overlap),避免橫跨兩塊的句子被硬生生切斷。

══════════════════════════════════════════════════════

🧗 遇到的困難

・Discord bot 不知道怎麼加入伺服器
 Discord 開發者後台選擇OAuth2,OAuth2 URL 產生器選bot
下滑勾選提供機器人使用的權限,完成後複製並點開最下方的URL

・Discord bot 收不到訊息內容
 Discord 開發者後台要記得打開 Message Content Intent,
 否則 bot 只看得到「有人講話」,卻讀不到「到底講了什麼」

・Discord bot 無法傳送訊息
 不建議直接使用discord節點,容易401授權錯誤
在此使用Http Request的方式來解決此問題,類似於Line機器人做法
更新:後續換成社群節點的discord action是可以的順利運作的

・第一次匯入特別久
 建庫是「每一塊都要算一次向量」,PDF 越多越久。
 但這是一次性的:建完之後問答只查向量、不重算,速度就回來了

══════════════════════════════════════════════════════

📝 小結:RAG、LLM與discord的結合,帶來獨一無二的體驗

整套系統說穿了,就是三件事:
把你信任的書餵進去(建庫)、讓問題先去書架翻兩頁(RAG)、再用你天天在用的聊天室把答案遞到面前(Discord)。

它其實不炫,就是一個很單純的組合:
・隱私,是自建的底線——文件從頭到尾沒離開過這台電腦
・專精,是自建的價值——它只讀你挑的東西,也只說你認同的那套觀點
・好用,是 Discord 送的紅利——現成、免費,還附帶一句「輸入中」

通用 AI 是路邊的萬事通,這套自建知識庫則是你親手養出來的專科醫師。
差別不在「能不能問」,而在「它的答案有沒有依據、你能不能查證」。

你選了哪些書,就決定了它會成為什麼樣的專家。
這大概就是自建知識庫最迷人的地方——它不是把 AI 外包給大公司,而是把「你相信什麼」留下來,變成一套只屬於你的答案。

如果你有問題或想交流,都歡迎留言 :)

══════════════════════════════════════════════════════

#n8n #Ollama #Qdrant #Discord #RAG #LocalFirst

5 個愛心0 則留言

登入並驗證手機後就能留言。登入