RAG文檔處理的流程——給你的RAG文檔處理制定一個(gè)標(biāo)準(zhǔn) 原創(chuàng)
“ 文檔處理有一套標(biāo)準(zhǔn)和規(guī)范,良好的規(guī)范才能讓后續(xù)處理更簡(jiǎn)單,更少出錯(cuò)。”
最近一直在優(yōu)化RAG的文檔處理功能,隨著各種問題被解決之后,慢慢發(fā)現(xiàn)文檔處理沒有想象中的那么簡(jiǎn)單;而我們大部分人對(duì)文檔處理還僅僅只停留在表面上,并沒有真正深入研究過文檔處理的流程,格式,規(guī)范。
今天作者就以自身這段時(shí)間的經(jīng)驗(yàn)來梳理一下文檔處理的具體流程,包括處理格式的選擇,文檔處理的步驟,以及一些注意事項(xiàng)等。
RAG之文檔處理
在一個(gè)RAG系統(tǒng)中,最重要也是最困難的兩個(gè)點(diǎn)就是文檔處理和數(shù)據(jù)召回;今天我們主要討論的就是第一步文檔處理。
文檔處理的目的,就是把各種格式的數(shù)據(jù)進(jìn)行分類,拆分,向量化之后用于相似度檢索。
文檔來源
因此,文檔處理的第一步就是文檔的收集,根據(jù)不同的業(yè)務(wù)場(chǎng)景文檔的來源也多種多樣,但主要包括以下幾個(gè)來源:
1. 來自于文本文檔 包括word,pdf,ppt,excel,csv,txt等多種常見文本類型
2. 來自于數(shù)據(jù)庫,包括關(guān)系型數(shù)據(jù)庫,緩存數(shù)據(jù),文檔數(shù)據(jù)庫等
3. 來自于網(wǎng)絡(luò)API接口等
總之,文檔來源可以是任何渠道,任何形式。
文檔格式統(tǒng)一
這里文檔格式的統(tǒng)一并不是來源文檔的格式,因?yàn)槲臋n的來源我們無法控制;所以,我們需要在拿到文檔之后,把它們處理成統(tǒng)一的格式,這樣才有利于后續(xù)處理
由于文檔來源和格式的復(fù)雜性,因此在具體的業(yè)務(wù)場(chǎng)景中我們需要把文檔格式進(jìn)行統(tǒng)一處理;比如說不論任何格式的文檔,最終都處理成markdown或html格式。
之所以選擇markdown和html格式,原因就在于其能層次結(jié)構(gòu),且比較通用。

如果不對(duì)文檔格式進(jìn)行統(tǒng)一會(huì)出現(xiàn)什么情況?
如果不對(duì)文檔格式進(jìn)行統(tǒng)一,那么面對(duì)多種復(fù)雜的文檔類型,那么我們就需要每一種都進(jìn)行處理;這樣會(huì)導(dǎo)致系統(tǒng)變得更復(fù)雜,并且后續(xù)在使用中也會(huì)面臨各種各樣的問題。
所以,在真正開始文檔處理之前我們一定要根據(jù)自己的業(yè)務(wù)選擇一個(gè)適合自己的文檔格式;否則面對(duì)各種類型的文檔格式,我們逐一處理會(huì)特別麻煩,而且不利于統(tǒng)一管理。
具體流程就是,不論拿到何種類型的文檔,我們通過手動(dòng)處理也好,格式轉(zhuǎn)換工具也好,自己寫轉(zhuǎn)換程序也好;最終都把它們轉(zhuǎn)換成我們指定的格式(markdown或html);當(dāng)然,這里的markdown和html只是一種比較合適和通用的選擇,在不同的業(yè)務(wù)場(chǎng)景中也可以根據(jù)自己的需要選擇格式的文檔格式。
文檔拆分
由于文檔內(nèi)容長(zhǎng)短不一,但為了提升召回率,因此對(duì)文檔進(jìn)行適當(dāng)?shù)慕厝∈且粋€(gè)比較好的選擇;以markdown為例,可以把word,pdf等根據(jù)段落和長(zhǎng)度進(jìn)行切分,并且在切分時(shí)把文檔的名稱和段落標(biāo)題拼接到每段文檔中;而類似于excel這種格式的數(shù)據(jù),可以把每行數(shù)據(jù)拼接成一個(gè)markdown文檔段。

注意事項(xiàng)
在文檔處理中有很多注意事項(xiàng),由于文檔的復(fù)雜性,因此在實(shí)際操作中我們很難做到讓所有人都按照標(biāo)準(zhǔn)的格式對(duì)文檔進(jìn)行處理,因此最好能夠提供一個(gè)文檔模板,讓別人按照我們的規(guī)則來進(jìn)行處理。
其次,文檔在處理過程中因?yàn)楦鞣N各樣的原因會(huì)存在大量的噪音內(nèi)容;包括一些無用數(shù)據(jù),無效數(shù)據(jù),符號(hào),換行符等;因此,我們需要對(duì)這些數(shù)據(jù)進(jìn)行一定的清洗,刪除文檔中的噪音。

之后,處理之后的文檔一定要緊湊并做好格式化,文檔處理之后主要有兩個(gè)作用,一個(gè)是給用戶看的,另一個(gè)是用來做相似度召回的;前者需要做好格式化,后者需要做得足夠緊湊,盡量把噪音數(shù)據(jù)的影響降到最低。
以word中的表格數(shù)據(jù)為例,有些人處理之后的表格數(shù)據(jù)充斥著大量的|------|------| +++++ | ++++++++++這種內(nèi)容,而這些東西完全可以用更少的符號(hào)來表示,這樣才能使得最終的文檔比較緊湊,有助于召回。
本文轉(zhuǎn)載自??AI探索時(shí)代?? 作者:DFires

















