基于Dify構建客服智能體全流程實戰,揭秘提升RAG效果關鍵
前言
Dify是一款開源的大語言模型應用開發平臺,旨在降低AI應用的開發門檻,幫助開發者和企業快速構建、部署及管理生成式AI應用。
Dify的知識庫功能將RAG管線上的各環節可視化,提供了一套簡單易用的用戶界面來方便應用構建者管理個人或者團隊的知識庫,并能夠快速集成至 AI 應用中。為了達到最好的RAG檢索效果,需要選擇正確的分段設置。
本文介紹如下內容:
- RAG介紹
- 提升Dify RAG效果的關鍵:父子模式
- 通過Jina Reader抓取網頁信息
- 基于Dify構建客服智能體
RAG介紹
RAG是什么?
RAG,全稱Retrieval-Augmented Generation,直譯為“檢索增強生成”。簡單來說,RAG = 知識檢索系統 + 大語言模型(LLM)。
在問答過程中,RAG會:
- 根據用戶問題,從知識庫(向量數據庫)檢索相關信息
- 把這些真實、可靠的資料作為上下文“喂”給大模型
- 由大模型根據這些檢索到的資料進行加工、歸納、回答
為什么RAG重要?
減少幻覺
- 大模型有時會“胡編亂造”,尤其當問題超出它訓練范圍時。
- 通過RAG,大模型可以參考實時的、真實的資料,避免憑空想象。
解決時效問題
- 訓練一次大模型耗資巨大,且更新頻率有限。
- RAG可以檢索最新的數據或文檔,讓舊模型回答新問題。
支持私有知識庫
企業可以用自己專屬的數據(產品手冊、內部wiki、合同、報告等)做RAG,而無需重新訓練大模型。
提升回答的可解釋性
RAG可以告訴用戶“答案來自哪篇文檔”,增強透明度和可信度。
RAG的技術組成
向量化(Embedding)
把文檔拆分成“知識塊”,用向量模型編碼成向量,并存儲到向量數據庫(如Weaviate、Milvus等)中。
相似度檢索
根據用戶問題,計算問題與文檔塊的相似度,從向量數據庫找出相關內容。
上下文構建
將檢索到的內容拼接,作為“上下文”發送給大模型處理。
大模型生成
LLM根據上述“補充背景”給出更準確、更專業、更可信的答案。
提升Dify RAG效果的關鍵:父子模式
提升RAG效果的關鍵是檢索出合適的上下文內容
。在Dify導入數據到知識庫系統的流程中,有兩種文本分段方式:“通用模式”和“父子模式”
通用模式
系統依據用戶的自定義規則,將內容拆分為獨立的分段。當用戶輸入問題后,系統自動提取問題的關鍵詞,并計算關鍵詞與知識庫中各分段的相關度。根據相關度排序,選取最相關的內容分段并發送給 LLM,輔助其回答問題。
“通用模式”的分段最大長度
設置存在兩難:
- 分段長度過小:文本因為分段的原因容易造成上下文丟失。
- 分段長度過長:較長的文本分段,勢必會影響embedding的檢索精度。而且,受embedding模型的限制,每個分段的最大長度有限制(通常小于1萬tokens)。
父子模式
父子模式采用雙層分段結構來平衡檢索的精確度和上下文信息,讓精準匹配與全面的上下文信息二者兼得。
父區塊
父區塊保持較大的文本單位(如段落),提供豐富的上下文信息。
子區塊
子區塊是較小的文本單位(如句子),用于精確檢索。
檢索機制
通過子區塊進行精確檢索以確保相關性,然后獲取對應的父區塊來補充上下文信息,從而在生成響應時既保證準確性又能提供完整的背景信息。
通過Jina Reader抓取網頁信息
原始HTML充斥著標記和腳本等無關元素,Jina Reader API通過從URL中提取核心內容并將其轉換為干凈的、大模型友好的文本,從而確保為您的Agent和RAG系統提供高質量的輸入。
Jina Reader讀取返回的結果是Markdown格式,需要了解抓取結果的格式,以便設置正確的分段標識符
。
可以打開https://r.jina.ai/ + 頁面地址
查看Jina的輸出格式。例如Dify的安裝部署FAQ頁面https://r.jina.ai/https://docs.dify.ai/zh-hans/learn-more/faq/install-faq
的輸出如下圖, 分段標識符設置為###
(三個#加一個空格),可以正確切分不同的問答內容:
基于Dify構建客服智能體
創建知識庫
新建知識庫
- 數據源選擇“同步自Web站點
- 工具選擇“Jina Reader"
- 頁面鏈接填:https://docs.dify.ai/zh-hans/learn-more/faq/install-faq此鏈接為dify的安裝部署FAQ
- 取消勾選“爬取子頁面”
- 點擊“運行”
- 運行出結果后,選擇“下一步”
- 分段設置:選擇父子分段模式
父塊設置:分段標識符為###
(三個#加一個空格),分段最大長度設置為4000
子塊設置:分段標識符為\n\n
,分段最大長度設置為512
注意:必須根據文檔內容格式填寫正確的分段標識符,否則RAG效果會大打折扣
- Embedding模型:選擇doubao模型
- 點擊“保存并處理”
修改知識庫名稱和描述
- ? 名稱:Dify FAQ
描述:包含Dify的FAQ問答內容
創建Agent應用
在http://localhost/apps頁面點擊“創建空白應用”,選擇“Agent”。填寫應用名,點擊創建,進入編排界面。編排界面如下:
- 設置提示詞內容為:
你是一個Dify客服,需調用工具使用知識庫的內容回答問題。
要求:如果知識庫里沒有答案,回復:沒找到相關答案
- 添加知識庫把"Dify FAQ"知識庫添加到應用。
- 選擇模型使用doubao-1.5-pro-32k
- 調試和預覽在下方輸入提問內容向Agent提問Dify相關的問題
- 測試通過后,點擊右上角的“發布”按鈕。
- 發布后,點擊“運行”即可打開應用的訪問鏈接。
總結
通過本文的介紹,相信大家對RAG機制有了更清晰的認識,并了解了在Dify平臺中提升RAG效果的關鍵方法——父子模式的應用。同時,我們還學習了如何借助Jina Reader高效抓取網頁信息,為知識庫構建提供優質數據支持。基于這些能力,開發者可以更輕松地在Dify中搭建具備良好檢索與生成能力的智能客服等AI應用。