基於 Dify 的 RAG 知識庫搭建
Dify 是一款開源的大模型應用開發平臺,旨在幫助開發者快速構建生產級生成式 AI 應用。在 Dify 本地化部署中,知識庫功能是實現企業級 AI 應用的核心能力。本文介紹基於版本 1.5.1 搭建知識庫全流程解析,包括以下內容:
-
Dify 基本概念
-
Dify 本地部署
-
基於 Dify 的知識庫搭建
一、Dify 基本概念
Dify 是一款開源的大模型應用開發平臺,旨在幫助開發者快速構建生產級生成式 AI 應用。它集成了模型管理、提示詞工程、數據檢索、工作流編排和運維監控等核心功能,支持數百種開源及商業大模型(如 Llama3、GPT-4、Claude 等),並提供可視化工作流設計、RAG(檢索增強生成)管道、Agent 智能體框架等特色能力。其核心特點包括:
-
低代碼 / 無代碼界面:通過可視化編排 Prompt、連接知識庫、配置 Agent 工作流,降低 AI 開發門檻。
-
技術棧整合:內置 RAG 管道、多模型支持(如 OpenAI、本地模型)、可觀測性工具,避免重複開發基礎組件。
-
開源與自託管:代碼完全開放,支持 Docker 私有化部署,確保數據隱私與合規性。
二、Dify 本地部署
- Docker 部署
可參考文章基於 DeepSeek+RAGFlow 的企業知識庫搭建中 Docker 部署步驟。
- Dify 部署
硬件要求:CPU ≥ 2 核,RAM ≥ 4GB(推薦 8GB 以上以運行中等模型)
# 克隆倉庫
git clone https://github.com/langgenius/dify.git
cd dify/docker
# 複製環境配置
cp .env.example .env
# 啓動容器
sudo docker compose up -d
驗證服務:訪問 http://localhost/install,初始化管理員賬號。
- 模型配置
在 “設置”—“模型供應商” 中自定義配置所需的大模型 API-KEY,類型包括 Chat、Text Embedding、Rerank 模型。
三、基於 Dify 的知識庫搭建
- Dify 知識庫介紹
Dify 知識庫系統通過 RAG(檢索增強生成)技術實現,核心流程:
LLM 接收到用戶的問題後,將首先基於關鍵詞在知識庫內檢索內容。知識庫將根據關鍵詞,召回相關度排名較高的內容區塊,向 LLM 提供關鍵上下文以輔助其生成更加精準的回答。
開發者可以通過此方式確保 LLM 不僅僅依賴於訓練數據中的知識,還能夠處理來自實時文檔和數據庫的動態數據,從而提高回答的準確性和相關性。
支持多種文本類型,例如:
-
長文本內容(TXT、Markdown、DOCX、HTML、JSON 甚至是 PDF)
-
結構化數據(CSV、Excel 等)
-
在線數據源(網頁爬蟲、Notion 等)
將文件上傳至 “知識庫” 即可自動完成數據處理。如果內部已建有獨立知識庫,可以通過連接外部知識庫與 Dify 建立連接。
- 知識庫搭建
“知識庫”—“創建知識庫”—“選擇數據源”,選擇作爲知識庫的來源。
2.1 指定分段模式
知識庫支持兩種分段模式:通用模式 與 父子模式。如果你是首次創建知識庫,建議選擇父子模式。
(1)通用模式
系統按照用戶自定義的規則將內容拆分爲獨立的分段,在該模式下,需要根據不同的文檔格式或場景要求,參考以下設置項,設置文本的分段規則。
分段標識符:如 \ n,可以遵循正則表達式語法自定義分塊規則,系統將在文本出現分段標識符時自動執行分段。下圖是不同語法的文本分段效果:
分段最大長度:指定分段內的文本字符數最大上限,超出該長度時將強制分段。默認值爲 500 Tokens,分段長度的最大上限爲 4000 Tokens;
分段重疊長度:指的是在對數據進行分段時,段與段之間存在一定的重疊部分。這種重疊可以幫助提高信息的保留和分析的準確性,提升召回效果。建議設置爲分段長度 Tokens 數的 10-25%;
配置完成後,點擊 “預覽區塊” 即可查看分段後的效果。可以直觀的看到每個區塊的字符數。如果重新修改了分段規則,需要重新點擊按鈕以查看新的內容分段。
若同時批量上傳了多個文檔,輕點頂部的文檔標題,快速切換並查看其它文檔的分段效果。
(2)父子模式
與通用模式相比,父子模式採用雙層分段結構來平衡檢索的精確度和上下文信息, 讓精準匹配與全面的上下文信息二者兼得。
其中,父區塊(Parent-chunk)保持較大的文本單位(如段落),提供豐富的上下文信息;子區塊(Child-chunk)則是較小的文本單位(如句子),用於精確檢索。系統首先通過子區塊進行精確檢索以確保相關性,然後獲取對應的父區塊來補充上下文信息,從而在生成響應時既保證準確性又能提供完整的背景信息。可以通過設置分隔符和最大長度來自定義父子區塊的分段方式。
例如在 AI 智能客服場景下,用戶輸入的問題將定位至解決方案文檔內某個具體的句子,隨後將該句子所在的段落或章節,聯同發送至 LLM,補全該問題的完整背景信息,給出更加精準的回答。
其基本機制包括:
子分段匹配查詢:
-
將文檔拆分爲較小、集中的信息單元(例如一句話),更加精準地匹配用戶所輸入的問題。
-
子分段能快速提供與用戶需求最相關的初步結果。
父分段提供上下文:
-
將包含匹配子分段的更大部分(如段落、章節甚至整個文檔)視作父分段並提供給大語言模型(LLM)。
-
父分段能爲 LLM 提供完整的背景信息,避免遺漏重要細節,幫助 LLM 輸出更貼合知識庫內容的回答。
配置完成後,點擊 “預覽區塊” 即可查看分段後的效果。可以查看父分段的整體字符數。背景標藍的字符爲子分塊,同時顯示當前子段的字符數。
(3)兩種模式的區別
兩者的主要區別在於內容區塊的分段形式。通用模式的分段結果爲多個獨立的內容分段,而父子模式採用雙層結構進行內容分段,即單個父分段的內容(文檔全文或段落)內包含多個子分段內容(句子)。
不同的分段方式將影響 LLM 對於知識庫內容的檢索效果。在相同文檔中,採用父子檢索所提供的上下文信息會更全面,且在精準度方面也能保持較高水平,大大優於傳統的單層通用檢索方式。
2.2 索引方法與檢索設置
提供高質量與經濟兩種索引方法,其中分別提供不同的檢索設置選項:
在高質量模式下,使用 Embedding 嵌入模型將已分段的文本塊轉換爲數字向量,幫助更加有效地壓縮與存儲大量文本信息;使得用戶問題與文本之間的匹配能夠更加精準。
將內容塊向量化並錄入至數據庫後,需要通過有效的檢索方式調取與用戶問題相匹配的內容塊。高質量模式提供向量檢索、全文檢索和混合檢索三種檢索設置。
(1)向量檢索
定義:向量化用戶輸入的問題並生成查詢文本的數學向量,比較查詢向量與知識庫內對應的文本向量間的距離,尋找相鄰的分段內容。
Rerank 模型:默認關閉。開啓後將使用第三方 Rerank 模型再一次重排序由向量檢索召回的內容分段,以優化排序結果。幫助 LLM 獲取更加精確的內容,輔助其提升輸出的質量。
TopK:用於篩選與用戶問題相似度最高的文本片段。系統同時會根據選用模型上下文窗口大小動態調整片段數量。默認值爲 3,數值越高,預期被召回的文本分段數量越多。
Score 閾值:用於設置文本片段篩選的相似度閾值,只召回超過設置分數的文本片段,默認值爲 0.5。數值越高說明對於文本與問題要求的相似度越高,預期被召回的文本數量也越少。
(2)全文檢索
定義:關鍵詞檢索,即索引文檔中的所有詞彙。用戶輸入問題後,通過明文關鍵詞匹配知識庫內對應的文本片段,返回符合關鍵詞的文本片段;類似搜索引擎中的明文檢索。
Rerank 模型:默認關閉。開啓後將使用第三方 Rerank 模型再一次重排序由全文檢索召回的內容分段,以優化排序結果。向 LLM 發送經過重排序的分段,輔助其提升輸出的內容質量。
(3)混合檢索
定義:同時執行全文檢索和向量檢索,或 Rerank 模型,從查詢結果中選擇匹配用戶問題的最佳結果。
權重設置:允許用戶賦予語義優先和關鍵詞優先自定義的權重。關鍵詞檢索指的是在知識庫內進行全文檢索(Full Text Search),語義檢索指的是在知識庫內進行向量檢索(Vector Search)。
Rerank 模型:默認關閉,開啓後將使用第三方 Rerank 模型再一次重排序由混合檢索召回的內容分段,以優化排序結果。
3. 知識庫使用
運用 Dify 內置的應用模板創建基於知識庫的問答系統,“工作室”—“從應用模板創建”—“Knowledge Retreival + Chatbot”:
在 “Knowledge Retrieval” 組件配置知識庫名稱和召回設置:
在 “LLM” 組件中設置模型類型及將知識庫檢索結果作爲上下文:
設置完成後進行預覽測試,可在工作流中查看每一步的運行情況,在 “Knowledge Retrieval” 輸出中可查看知識庫的檢索結果:
總結
Dify 通過知識庫索引優化、多模態支持和動態參數校驗,構建了企業級 AI 知識庫的完整技術棧。其本地化部署方案在數據安全(GDPR/HIPAA 合規)、性能和成本上具有顯著優勢。無論是醫療、金融還是製造業,均可通過 Dify 實現私有數據的智能管理與精準應用。建議企業結合自身業務場景,靈活運用 FireCrawl 爬取、Xinference 模型部署等擴展方案,打造貼合需求的行業級知識庫系統。
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/DiO9JlwjvXMO8qHquF2aQA