iT邦幫忙

2026 iThome 鐵人賽

DAY 8
0
AI 自動化

用 Dify 建構個人專屬 AI Agent 應用系列 第 8

導入私有文件:建立專屬知識庫(RAG)與檢索優先權調優

  • 分享至 

  • xImage
  •  

今天我們的任務是透過Dify的知識庫(Knowledge Base),讓Agent具備讀取私有文件的能力(也就是常見的 RAG 架構)。

實作第一步:建立測試文件與知識庫

為了驗證檢索是否真的生效,我先準備了一份名為 internal_rules.txt 的文字檔,裡面寫入幾條刻意與外界常規不同的死規定:

  1. 資料庫密碼規範(禁止寫死,統一讀取環境變數 DB_SECRET)
  2. API 回傳格式規範(統一包裝固定包含 code、message、data)
  3. 時間套件規範(強制使用 Java 21 的 java.time 套件)
  4. 部署發布流程(週五下午 3 點後全面禁止部署至正式環境,緊急 Hotfix 需主管核准)
  5. Git Commit 格式規範

接著在 Dify 頂部選單切換到「知識庫」,選擇「建立即用型知識庫」,將檔案拖曳上傳,保持預設的分段與向量索引設置完成處理。

實作第二步:將知識庫掛載至Agent

回到我們的 Dev-Advisor-Agent,在左側面板的「上下文」區塊點擊新增,把剛剛建立好的 internal_rules.txt 加入進去。

踩坑與除錯:為什麼Agent沒有看知識庫?

掛載完成後發布,我直接在對話框測試:
「請問我們專案中,週五下午可以發布程式碼到正式環境嗎?」

第一次實測時,Agent給我的回覆居然是長篇大論的通用軟體工程建議(提醒我做好單元測試、回滾計畫,條件允許的話就能發布),完全無視文件裡「下午 3 點後全面禁止」的死規定,而且回覆上方也沒有調用知識庫的標籤。

原因在於:Agent雖然掛載了知識庫,但Prompt裡沒有規範優先級,模型遇到問題時容易直接拿原本的通用訓練權重來回答。

解決方法:明確定義「檢索優先原則」

我在系統提示詞中補上了針對知識庫的具體指令:

# 角色設定
你是一位資深的全端工程師與系統架構顧問。

# 能力與原則
1. 當使用者提問涉及專案規範、內部流程、技術標準或程式碼風格時,必須優先依據【上下文】中的知識庫文件進行回答。若文件有明確規定,請嚴格遵守,切勿自行腦補或給出泛用建議。
2. 當使用者詢問最新技術、發布版本或你不確定的即時外部資訊時,請主動調用搜尋工具查詢。
3. 保持回答條理分明、架構清晰。

再次實測驗證

更新提示詞並清空對話紀錄後,輸入同樣的問題。

這次Agent回答上方立刻出現了 已使用 知識庫 > 的標籤,回覆內容也直接點出「根據專案內部規範,週五下午 3 點之後全面禁止發布至正式環境,緊急情況需主管核准」,精準命中了我們自訂的文件細節。
https://ithelp.ithome.com.tw/upload/images/20260913/20178900vbP3u1bebN.png

今日心得

今天除了把知識庫掛上去之外,最主要的收穫是看到模型在「通用知識」與「私有文件」之間的權重拉扯。光把檔案傳上去還不夠,提示詞裡給予明確的指示,它才會老老實實地去翻手邊的文件。現在Agent既能聯網搜尋,也能看內部規範。


上一篇
解鎖 Agent:掛載 DuckDuckGo 實作聯網搜尋與 Tool Calling
下一篇
混合壓力測試:當私有知識庫遇上外部工具的「調用慣性」
系列文
用 Dify 建構個人專屬 AI Agent 應用15
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言