Dify 知識庫教學:分段、索引與檢索設定
知識庫決定機器人會不會胡說。這篇說明文件上傳後發生什麼事、分段大小怎麼選、三種檢索模式差在哪,以及回答不準時該從哪一格開始查。
🚀 想直接開始?60 秒部署你的 Dify
AI 應用開發平台 — No-Code 建構你的 AI。月付 NT$1,599 起,
聊天機器人答得準不準,八成取決於知識庫,不是 Prompt。
但知識庫的設定項看起來都很抽象——分段長度、索引方式、Top-K、分數閾值。這篇把每一項在做什麼、以及什麼時候該動它講清楚。
30 秒總覽
| 設定項 | 在決定什麼 | 第一次怎麼設 |
|---|---|---|
| 分段大小 | 每一塊文字多長 | 用預設,出問題再調 |
| 索引方式 | 用向量還是純關鍵字 | 高品質(向量) |
| 檢索模式 | 怎麼找出相關段落 | 混合檢索 |
| Top-K | 撈回幾段給模型 | 3~5 |
| 分數閾值 | 相關度多低就不要 | 先關閉,觀察後再開 |
文件上傳後實際發生什麼
理解這個流程,後面每個設定就都有意義了:
- 解析——把 PDF、Word、網頁轉成純文字
- 分段——切成一塊一塊(chunk)
- 建立索引——每塊產生一組向量,代表它的語意
- 檢索——有人提問時,找出語意最接近的幾塊
- 生成——把那幾塊連同問題送給模型
關鍵在第五步:模型只看得到被撈出來的那幾塊。沒被撈到的內容,等於不存在。
分段大小怎麼選
切太小與切太大的症狀不一樣
| 切太小 | 切太大 | |
|---|---|---|
| 檢索精準度 | 高 | 低(一段混了多個主題) |
| 上下文完整度 | 低 | 高 |
| 症狀 | 回答斷頭、缺前後文 | 回答離題、抓到不相干內容 |
判斷原則
沒有一體適用的數字,但有個好用的原則:一段應該剛好包含一個完整的概念。
FAQ 型內容適合切小,一問一答就是一段。操作手冊適合切大一點,一個完整步驟不該被拆開。
這也是為什麼不同性質的文件最好分開建知識庫,而不是全部混在一起用同一組設定。
分隔符號比長度更有效
如果你的文件有清楚的結構(標題、編號、問答),用結構符號當分段點,會比用固定字數切得好很多。花五分鐘整理來源文件的格式,效果通常勝過調半天參數。
索引方式:高品質還是經濟
高品質模式會呼叫嵌入模型產生向量,能理解語意——使用者問「怎麼退錢」也能撈到寫著「退款流程」的段落。代價是建立索引時要花錢、也要花時間。
經濟模式用關鍵字比對,不花模型費用,但只認字面。
絕大多數情況該用高品質。經濟模式適合的情境很窄:內容是高度標準化的術語表、或你只是要先驗證流程通不通。
三種檢索模式
向量檢索
比語意相似度。使用者用完全不同的詞問同一件事也找得到。弱點是專有名詞、料號、型號這類「字面就是重點」的東西,反而可能撈不準。
全文檢索
比關鍵字。專有名詞很強,語意變化很弱。
混合檢索
兩種都跑再合併。多數情況的最佳選擇,尤其是內容裡有產品型號、專有名詞的知識庫。
如果你的知識庫裡大量出現料號、版本號或專業術語,混合檢索跟純向量檢索的差距會非常明顯。
Top-K 與分數閾值
Top-K 不是越大越好
Top-K 決定每次撈回幾段。調大的問題有三個:慢、貴(送給模型的內容變多)、而且模型會被不相干的段落帶偏。
多數情境三到五段就夠。如果三段撈不到答案,問題在分段或文件品質,調大只是把雜訊一起帶進來。
分數閾值是雙面刃
設了閾值,相關度低於門檻的段落就不會被撈出來。好處是雜訊變少,壞處是設太高會讓機器人常常說「找不到」。
建議先關閉、觀察一段時間的實際分數分佈,再決定門檻。一開始就設一個猜的數字,通常會設錯。
三種文件的分段實例
抽象原則不好用,直接看三種常見文件該怎麼切:
FAQ 或問答集
一問一答就是一段。這類內容天生結構清楚,用問句當分隔點,檢索準確度會非常高。這也是最容易做出好效果的文件類型,如果你手上有整理好的客服問答,先從它開始。
操作手冊
以「一個完整步驟」為一段。切太細會讓回答缺前後文——使用者問「怎麼設定」,撈回來的是步驟三,前面兩步不見了。
如果手冊有編號結構,用編號當分隔點通常比固定字數好。
合約或條款
以「條」為單位。這類文件的專有名詞密度高,務必搭配混合檢索——純向量檢索容易在相似條文之間搞混。
多知識庫的切分策略
比起把所有文件塞進一個知識庫,按主題拆開幾乎總是更好。
| 切分方式 | 適合的情況 |
|---|---|
| 按主題(產品/退換貨/技術規格) | 最常見,也最有效 |
| 按對象(對客戶/對內部) | 有些內容不該讓客戶看到 |
| 按時效(現行/歷史) | 避免舊版本跟新版本競爭 |
第三種最容易被忽略。舊版產品說明留在知識庫裡,它會跟新版競爭,而模型分不出哪個是現行的。過期內容該移出去,不是留著當參考。
回答不準時的排查順序
照這個順序查,比亂調參數快很多:
| 先看 | 如果是 | 問題在 |
|---|---|---|
| 它引用了哪幾段 | 撈到的段落不相關 | 檢索——調檢索模式或分段 |
| 撈對了但答錯 | Prompt——沒講清楚怎麼用資料 | |
| 什麼都沒撈到 | 閾值太高,或文件根本沒寫 | |
| 原始文件 | 那段內容被切斷了 | 分段——改用結構符號分段 |
回答下方的引用來源是整個排查流程裡最有用的東西,先看它再說。
常見問題
Q:文件更新了,知識庫會自動跟著更新嗎?
不會。修改來源文件之後要重新上傳並重建索引,否則機器人還是回答舊版內容。這是最容易被忽略的維護工作——尤其價格、政策這類會變的內容。
Q:可以放多少文件?
空間上,純文字的容量需求很小。但放得下不代表該放——文件變多之後檢索品質常常下降而不是上升,因為更多相似段落在跟正確答案競爭。詳見知識庫變大之後。
Q:掃描的 PDF 可以用嗎?
解析成功率不穩,而且很吃資源。建議先用文字辨識轉成純文字再上傳,效果和成本都會好很多。
Q:一個應用可以接多個知識庫嗎?
可以。實務上按主題拆成多個知識庫、再依情境選用,效果通常比全部塞在一起好。
資料來源與延伸連結
- Dify 官方文件——知識庫與檢索設定的完整說明
- Dify 版本更新紀錄