基于Dify構(gòu)建客服智能體全流程實(shí)戰(zhàn),揭秘提升RAG效果關(guān)鍵

前言
Dify是一款開(kāi)源的大語(yǔ)言模型應(yīng)用開(kāi)發(fā)平臺(tái),旨在降低AI應(yīng)用的開(kāi)發(fā)門(mén)檻,幫助開(kāi)發(fā)者和企業(yè)快速構(gòu)建、部署及管理生成式AI應(yīng)用。
Dify的知識(shí)庫(kù)功能將RAG管線上的各環(huán)節(jié)可視化,提供了一套簡(jiǎn)單易用的用戶(hù)界面來(lái)方便應(yīng)用構(gòu)建者管理個(gè)人或者團(tuán)隊(duì)的知識(shí)庫(kù),并能夠快速集成至 AI 應(yīng)用中。為了達(dá)到最好的RAG檢索效果,需要選擇正確的分段設(shè)置。
本文介紹如下內(nèi)容:
- RAG介紹
- 提升Dify RAG效果的關(guān)鍵:父子模式
- 通過(guò)Jina Reader抓取網(wǎng)頁(yè)信息
- 基于Dify構(gòu)建客服智能體
RAG介紹
RAG是什么?
RAG,全稱(chēng)Retrieval-Augmented Generation,直譯為“檢索增強(qiáng)生成”。簡(jiǎn)單來(lái)說(shuō),RAG = 知識(shí)檢索系統(tǒng) + 大語(yǔ)言模型(LLM)。
在問(wèn)答過(guò)程中,RAG會(huì):
- 根據(jù)用戶(hù)問(wèn)題,從知識(shí)庫(kù)(向量數(shù)據(jù)庫(kù))檢索相關(guān)信息
- 把這些真實(shí)、可靠的資料作為上下文“喂”給大模型
- 由大模型根據(jù)這些檢索到的資料進(jìn)行加工、歸納、回答

為什么RAG重要?
減少幻覺(jué)
- 大模型有時(shí)會(huì)“胡編亂造”,尤其當(dāng)問(wèn)題超出它訓(xùn)練范圍時(shí)。
- 通過(guò)RAG,大模型可以參考實(shí)時(shí)的、真實(shí)的資料,避免憑空想象。
解決時(shí)效問(wèn)題
- 訓(xùn)練一次大模型耗資巨大,且更新頻率有限。
- RAG可以檢索最新的數(shù)據(jù)或文檔,讓舊模型回答新問(wèn)題。
支持私有知識(shí)庫(kù)
企業(yè)可以用自己專(zhuān)屬的數(shù)據(jù)(產(chǎn)品手冊(cè)、內(nèi)部wiki、合同、報(bào)告等)做RAG,而無(wú)需重新訓(xùn)練大模型。
提升回答的可解釋性
RAG可以告訴用戶(hù)“答案來(lái)自哪篇文檔”,增強(qiáng)透明度和可信度。
RAG的技術(shù)組成
向量化(Embedding)
把文檔拆分成“知識(shí)塊”,用向量模型編碼成向量,并存儲(chǔ)到向量數(shù)據(jù)庫(kù)(如Weaviate、Milvus等)中。
相似度檢索
根據(jù)用戶(hù)問(wèn)題,計(jì)算問(wèn)題與文檔塊的相似度,從向量數(shù)據(jù)庫(kù)找出相關(guān)內(nèi)容。
上下文構(gòu)建
將檢索到的內(nèi)容拼接,作為“上下文”發(fā)送給大模型處理。
大模型生成
LLM根據(jù)上述“補(bǔ)充背景”給出更準(zhǔn)確、更專(zhuān)業(yè)、更可信的答案。
提升Dify RAG效果的關(guān)鍵:父子模式
提升RAG效果的關(guān)鍵是檢索出合適的上下文內(nèi)容。在Dify導(dǎo)入數(shù)據(jù)到知識(shí)庫(kù)系統(tǒng)的流程中,有兩種文本分段方式:“通用模式”和“父子模式”
通用模式

系統(tǒng)依據(jù)用戶(hù)的自定義規(guī)則,將內(nèi)容拆分為獨(dú)立的分段。當(dāng)用戶(hù)輸入問(wèn)題后,系統(tǒng)自動(dòng)提取問(wèn)題的關(guān)鍵詞,并計(jì)算關(guān)鍵詞與知識(shí)庫(kù)中各分段的相關(guān)度。根據(jù)相關(guān)度排序,選取最相關(guān)的內(nèi)容分段并發(fā)送給 LLM,輔助其回答問(wèn)題。
“通用模式”的分段最大長(zhǎng)度設(shè)置存在兩難:
- 分段長(zhǎng)度過(guò)?。何谋疽?yàn)榉侄蔚脑蛉菀自斐缮舷挛膩G失。
- 分段長(zhǎng)度過(guò)長(zhǎng):較長(zhǎng)的文本分段,勢(shì)必會(huì)影響embedding的檢索精度。而且,受embedding模型的限制,每個(gè)分段的最大長(zhǎng)度有限制(通常小于1萬(wàn)tokens)。
父子模式

父子模式采用雙層分段結(jié)構(gòu)來(lái)平衡檢索的精確度和上下文信息,讓精準(zhǔn)匹配與全面的上下文信息二者兼得。
父區(qū)塊
父區(qū)塊保持較大的文本單位(如段落),提供豐富的上下文信息。
子區(qū)塊
子區(qū)塊是較小的文本單位(如句子),用于精確檢索。
檢索機(jī)制
通過(guò)子區(qū)塊進(jìn)行精確檢索以確保相關(guān)性,然后獲取對(duì)應(yīng)的父區(qū)塊來(lái)補(bǔ)充上下文信息,從而在生成響應(yīng)時(shí)既保證準(zhǔn)確性又能提供完整的背景信息。
通過(guò)Jina Reader抓取網(wǎng)頁(yè)信息
原始HTML充斥著標(biāo)記和腳本等無(wú)關(guān)元素,Jina Reader API通過(guò)從URL中提取核心內(nèi)容并將其轉(zhuǎn)換為干凈的、大模型友好的文本,從而確保為您的Agent和RAG系統(tǒng)提供高質(zhì)量的輸入。
Jina Reader讀取返回的結(jié)果是Markdown格式,需要了解抓取結(jié)果的格式,以便設(shè)置正確的分段標(biāo)識(shí)符。
可以打開(kāi)https://r.jina.ai/ + 頁(yè)面地址查看Jina的輸出格式。例如Dify的安裝部署FAQ頁(yè)面https://r.jina.ai/https://docs.dify.ai/zh-hans/learn-more/faq/install-faq的輸出如下圖, 分段標(biāo)識(shí)符設(shè)置為### (三個(gè)#加一個(gè)空格),可以正確切分不同的問(wèn)答內(nèi)容:

基于Dify構(gòu)建客服智能體
創(chuàng)建知識(shí)庫(kù)
新建知識(shí)庫(kù)
- 數(shù)據(jù)源選擇“同步自Web站點(diǎn)
- 工具選擇“Jina Reader"
- 頁(yè)面鏈接填:https://docs.dify.ai/zh-hans/learn-more/faq/install-faq此鏈接為dify的安裝部署FAQ
- 取消勾選“爬取子頁(yè)面”
- 點(diǎn)擊“運(yùn)行”

- 運(yùn)行出結(jié)果后,選擇“下一步”

- 分段設(shè)置:選擇父子分段模式
父塊設(shè)置:分段標(biāo)識(shí)符為### (三個(gè)#加一個(gè)空格),分段最大長(zhǎng)度設(shè)置為4000
子塊設(shè)置:分段標(biāo)識(shí)符為\n\n,分段最大長(zhǎng)度設(shè)置為512
注意:必須根據(jù)文檔內(nèi)容格式填寫(xiě)正確的分段標(biāo)識(shí)符,否則RAG效果會(huì)大打折扣
- Embedding模型:選擇doubao模型

- 點(diǎn)擊“保存并處理”
修改知識(shí)庫(kù)名稱(chēng)和描述
- ? 名稱(chēng):Dify FAQ
描述:包含Dify的FAQ問(wèn)答內(nèi)容

創(chuàng)建Agent應(yīng)用
在http://localhost/apps頁(yè)面點(diǎn)擊“創(chuàng)建空白應(yīng)用”,選擇“Agent”。填寫(xiě)應(yīng)用名,點(diǎn)擊創(chuàng)建,進(jìn)入編排界面。編排界面如下:

- 設(shè)置提示詞內(nèi)容為:
你是一個(gè)Dify客服,需調(diào)用工具使用知識(shí)庫(kù)的內(nèi)容回答問(wèn)題。
要求:如果知識(shí)庫(kù)里沒(méi)有答案,回復(fù):沒(méi)找到相關(guān)答案- 添加知識(shí)庫(kù)把"Dify FAQ"知識(shí)庫(kù)添加到應(yīng)用。
- 選擇模型使用doubao-1.5-pro-32k
- 調(diào)試和預(yù)覽在下方輸入提問(wèn)內(nèi)容向Agent提問(wèn)Dify相關(guān)的問(wèn)題

- 測(cè)試通過(guò)后,點(diǎn)擊右上角的“發(fā)布”按鈕。
- 發(fā)布后,點(diǎn)擊“運(yùn)行”即可打開(kāi)應(yīng)用的訪問(wèn)鏈接。
總結(jié)
通過(guò)本文的介紹,相信大家對(duì)RAG機(jī)制有了更清晰的認(rèn)識(shí),并了解了在Dify平臺(tái)中提升RAG效果的關(guān)鍵方法——父子模式的應(yīng)用。同時(shí),我們還學(xué)習(xí)了如何借助Jina Reader高效抓取網(wǎng)頁(yè)信息,為知識(shí)庫(kù)構(gòu)建提供優(yōu)質(zhì)數(shù)據(jù)支持?;谶@些能力,開(kāi)發(fā)者可以更輕松地在Dify中搭建具備良好檢索與生成能力的智能客服等AI應(yīng)用。





































