Dify從入門到高階系列二:手把手教學!超詳細的Dify知識庫配置全攻略 原創
Dify作為一款先進的AI應用開發平臺,其檢索增強生成(RAG)功能為知識管理提供了強大支持。本指南將詳細介紹如何利用該平臺搭建高效知識庫系統。在模型選擇方面,雖然本示例采用OpenAI的接口,但平臺同樣兼容各類本地化模型部署方案,如Ollama框架等。
前置知識
數據采集階段
- 支持多格式文檔上傳接口
- 智能文檔解析與內容提取
內容結構化處理
- 自適應文本分塊算法
- 向量空間映射轉換
- 高維索引存儲方案
查詢響應機制
- 語義向量實時計算
- 多維度相似性檢索
- 上下文感知結果合成
知識庫設置
知識庫初始化
文本分塊策略
dify平臺提供可視化分塊調試工具,支持實時參數調整與效果預覽。推薦初次使用者采用父子分塊方案。
通用分段
1,采用??\n\n?
?作為分割段落的默認標記。
2,每個區塊在長度上的上限被設置為4000 tokens,但一般來說,默認長度是500 tokens。
3,預設的重疊長度為50 tokens。這是為了在分割過程中保證不同區塊間有一定的共享部分。我們建議將其設為總 token 數量的 10-25%,以獲得最佳效果。
4,預處理文本的規則:這包括清除多余的符號、網絡鏈接等可能的干擾因素,以凈化原始文本數據。
通用分段有個選項,可以使用Q&A分段,開啟之后會使用LLM對每段chunk生成Q&A 對。
父子分段
父子模式的設計采取了雙層分段結構,這是為了在提高檢索的精確度的同時保留豐富的上下文信息,實現對精準匹配與深度上下文理解的有序平衡。
- 父區塊(Parent-chunk)選取較大的文本單位,如整個段落,以此來儲存豐富并連續的上下文內容。默認以?
?\n\n?
?作為段落標識,如果知識篇幅不長,可以將全文設定為父區塊(但注意,超過1萬個分段的內容會被自動剪短)。 - 子區塊(Child-chunk)則以更小的文本單位(例如單獨的句子)進行處理,方便進行精細化的檢索。我們默認使用?
?\n?
?作為子區塊的分段標識。 - 用戶還可選擇開啟噪聲清理功能。
- 在實際搜索過程中,系統首先通過子區塊進行精確檢索,隨后再獲取相應的父區塊以補全上下文信息,這樣可以為LLM提供更為豐富的上下文背景。
這里我使用的是父子分段模式
索引模式
索引模式有兩種。分別是高質量索引和經濟索引
高質量索引
- 適用場景:需要高精度語義檢索(如復雜問答、多語言支持)。
- 實現方式:依賴嵌入模型生成向量索引
經濟索引
- 適用場景:適合在預算緊張或者內容簡潔(例如主要依賴于關鍵詞匹配的FAQ)的環境下使用。
- 實現:采取離線向量引擎或者關鍵詞索引策略,無需消耗額外的 Token,但是語義理解可能相對較弱。
- 建議:可以通過調節?
?TopK?
?(返回的相似文本段落數量)以及??Score 閾值?
?(過濾掉一定相似度以下的片段)來權衡召回率和準確率之間的關系。
檢索模式
在高質量索引方式下,Dify 提供了三種方案:
- 向量檢索,通過生成查詢嵌入并查詢與其向量表示最相似的文本分段。
- 全文檢索,索引文檔中的所有詞匯,從而允許用戶查詢任意詞匯,并返回包含這些詞匯的文本片段。
- 混合檢索,同時執行全文檢索和向量檢索,并附加重排序步驟,從兩類查詢結果中選擇匹配用戶問題的最佳結果,需配置 Rerank 模型API。
Dify 官方是推薦混合檢索模式,尤其在 Rerank 模型之后,系統會在混合檢索后對已召回的文檔結果再一次進行語義重排序,優化排序結果。
聊天機器人
點擊工作室,我們可以看到有很多豐富的應用,包括聊天助手、agent、工作流等。我們選擇最簡單的應用:聊天助手。
添加知識庫和召回設置
我們可以添加多個知識庫,并對知識庫設置對應的召回策略。
調試&發布
總結
這里詳細介紹了如何利用 Dify 搭建知識庫系統,后續會分享關于更多dify的原理和企業化定制開發的功能,歡迎點贊關注獲取實時更新。
本文轉載自公眾號AI 博物院 作者:longyunfeigu
原文鏈接:??https://mp.weixin.qq.com/s/moUd5ypzOCyXVhnXHEbtHw??
