關(guān)于在RAG檢索增強(qiáng)中文檔處理的解決方案——針對中小企業(yè) 原創(chuàng)
“ RAG技術(shù)成本最低的方式就是把非結(jié)構(gòu)化文檔轉(zhuǎn)換成markdown格式進(jìn)行處理 。”
在大模型應(yīng)用領(lǐng)域中——RAG技術(shù)應(yīng)該屬于一項(xiàng)基礎(chǔ)技術(shù),不論做什么業(yè)務(wù)基本都離不開RAG的存在;但RAG技術(shù)屬于典型的入門五分鐘,想做好卻需要花費(fèi)大量時間和精力,以及成本。
所以,今天我們就來討論一下RAG技術(shù)在企業(yè)應(yīng)用中的解決方案,既要考慮技術(shù)問題,也要考慮成本問題。

怎么做好RAG
RAG技術(shù)從整體上來說主要分為兩塊,一塊是文檔預(yù)處理,也就是把文檔處理成向量格式,但需要盡量保證文檔的語義完整性;其次,就是檢索召回,具體要求是能快速并準(zhǔn)確地召回需要的數(shù)據(jù)。
但從實(shí)踐的角度來看,目前對RAG影響最大的是第一步——文檔預(yù)處理,文檔處理的質(zhì)量越高,召回的精準(zhǔn)度就越高。其實(shí)這一點(diǎn)也很好理解,在一個有完善管理系統(tǒng)的圖書館里找書,肯定會比在一堆沒人管理的書堆里找書要快,要好。
那在文檔預(yù)處理這塊,主要存在的難點(diǎn)是什么?
在文檔處理領(lǐng)域,主要存在兩種數(shù)據(jù)形式,結(jié)構(gòu)化數(shù)據(jù)和非結(jié)構(gòu)化數(shù)據(jù);結(jié)構(gòu)化數(shù)據(jù)主要以excel這種二維表的形式存在,其處理起來相對比較簡單;而非結(jié)構(gòu)化數(shù)據(jù)的格式就比較多,并且比較混亂,比如說txt,word,pdf,markdown,ppt等多種形式。
結(jié)構(gòu)化數(shù)據(jù)今天我們就不討論了,因?yàn)槠浔容^簡單;所以,我們今天主要討論的是非結(jié)構(gòu)化數(shù)據(jù),就以word文檔為例。
由于大模型有窗口上下文長度限制,并且從成本的角度考慮;文檔處理首先需要進(jìn)行文檔切分,把文檔按照長度,段落或其它方式拆分成多個小段。
但非結(jié)構(gòu)化文檔拆分的難點(diǎn)是其文檔的結(jié)構(gòu),以word文檔為例;文檔內(nèi)容可以是文字,圖片,表格,結(jié)構(gòu)圖,架構(gòu)圖等多種形式。由于其文檔的復(fù)雜性,就導(dǎo)致其文檔處理起來相對比較復(fù)雜。
原因就在于,對人類來說,文檔中的文字,圖片和表格很好區(qū)分,但對大模型來說怎么區(qū)分那些是文字,那些是圖片,那些是表格就有相當(dāng)大的挑戰(zhàn)性。雖然說現(xiàn)在有了多模態(tài)模型的存在,可以部門解決這個問題,但不論從成本,還是處理速度,亦或者是效果來看,都有點(diǎn)差強(qiáng)人意。

在文檔中文字和圖片需要分開進(jìn)行處理,對長表格來說也需要保證表格的完整性;并且,要保證拆分之后的文檔存在一定的關(guān)聯(lián)性,否則很容易導(dǎo)致驢頭不對馬嘴。
舉例來說,一個技術(shù)文檔,一個運(yùn)營文檔,可能都存在前言,介紹這種段落;而在文檔拆分之后,需要分清楚,那些段落是屬于技術(shù)文檔的,那些段落屬于運(yùn)營文檔。
所以面對這種問題,目前比較好的解決方案是把這些文檔轉(zhuǎn)換成markdown格式;原因在于,雖然markdown文檔也是非結(jié)構(gòu)化數(shù)據(jù),但markdown又一套屬于自己的規(guī)范,比如說用一到多個#可以表示多個層級;也就是說markdown文檔屬于非結(jié)構(gòu)化文檔中,相對比較結(jié)構(gòu)化的文檔格式,這也是為什么目前各大模型廠商的前端展示格式主要以markdown為主。

在處理markdown文檔時,可以把拆分的每段文檔都帶上其上級標(biāo)題;比如說,一個RAG的技術(shù)文檔,一級標(biāo)題是RAG解決方案,二級標(biāo)題可以是文檔拆分,文檔向量化,文檔召回等等;當(dāng)然,也可以根據(jù)不同的需要,存在三級標(biāo)題,四級標(biāo)題等等。
這樣每個拆分的段落都攜帶上層一級或多級標(biāo)題,這樣就可以盡量保證每段文檔的關(guān)聯(lián)性。

然后在具體處理時,就可以根據(jù)段落進(jìn)行向量化,如果段落超長,則可以對段落進(jìn)行再次拆分,但一定要帶上其上級標(biāo)題。
而至于文檔中存在的圖片和表格,也需要進(jìn)行特殊的處理,對表格來說主要是保證表格數(shù)據(jù)的完整性,在非長表格的情況下,盡量不要對表格數(shù)據(jù)進(jìn)行拆分;而對于圖片格式,可以使用OCR技術(shù),讀取圖片中的數(shù)據(jù)并轉(zhuǎn)換成文字,但這種處理方式會導(dǎo)致架構(gòu)圖,流程圖等失去其本身的邏輯結(jié)構(gòu)。
當(dāng)然,也可以使用多模態(tài)模型或其它方式進(jìn)行處理,但其整體上來看,效果不是特別好,但成本又特別高,并不是一個好的選擇。
所以,在RAG中最好盡量避免處理帶圖片的文檔,很多時候處理不好,反而會降低文檔本身的質(zhì)量,污染正常的文本數(shù)據(jù),導(dǎo)致召回效果變差。
最后,需要注意的是RAG增強(qiáng)檢索,并不限制文檔數(shù)據(jù)的來源,也不一定非要使用向量檢索;傳統(tǒng)的數(shù)據(jù)檢索技術(shù)同樣可以應(yīng)用于RAG技術(shù)中;在某些大數(shù)據(jù)量處理的RAG系統(tǒng)中,傳統(tǒng)的檢索技術(shù)依然占據(jù)著主導(dǎo)地位,原因就在于基于向量檢索的速度問題,相對于傳統(tǒng)檢索方式會更慢。
本文轉(zhuǎn)載自???AI探索時代??? 作者:DFires

















