在RAG文檔處理中——怎么處理噪音問題 原創
“ RAG文檔處理的原則是找出有效數據,剔除無效數據,而不是為了大而全整一堆沒用的數據。”
在RAG增強檢索中,文檔處理是重中之重,但是很多人的文檔處理做的很粗糙,然后還奇怪為什么我的RAG質量不好,召回率太低,原因就在于你的文檔處理真的不咋地。
雖然說現在的文檔處理是大模型應用中的一個難點,但既然用了那就要想辦法把它做好,因此我們現在需要考慮的不是文檔處理有多復雜,而是應該考慮怎么提升文檔的處理質量,減少噪音,提升召回率和準確率。
處理文檔中的噪音
文檔處理的原則
首先,我們要弄明白一個核心問題,那就是文檔處理的目的是為了提升召回率和準確率,而不是把文檔處理得大而全;簡單來說就是,如果文檔中的某些內容很難處理或者沒什么用,那就把這部分變換一下格式或者直接給刪了;而不是為了文檔的完整性,整了一堆沒用的數據,最后不但沒有達到全的目的,反而給文檔增加了很多噪音數據導致召回率下降。

處理格式的選擇
其次,在不同的業務場景中,選擇合適的文檔結構;比如說不論是word,pdf,還是excel等格式的數據,全部處理成markdown的格式;這樣格式統一之后,也方便統一管理和后續處理。而不是同時使用多種格式,然后召回的時候需要經過各種亂七八糟的處理流程,然后還沒達到預期效果。
噪音的處理
一般情況下文檔在初步處理時會存在很多噪音數據,比如說orc讀取文檔之后,很多結構圖,流程圖變成了沒有任何意義的文字描述;這部分數據就可以直接刪除,因為留著不但沒什么用,可能還會影響到處理比較好的完整數據。
其次,還有一些文檔處理無法處理圖片等格式,然后處理之后的文檔出現大量的圖片地址引用,類似于這種圖片地址也可以直接刪除,原因和上述的一樣。

還有,把沒有意義的數字轉換成文字描述;比如說可能用0和1代表男女,對錯等;這時直接在文檔中顯示0和1,沒有任何意義,鬼知道0和1表示什么意思,最好的方式就是直接把這些無意義的表示轉換成文字描述。
再有,刪除文檔中大量的空格和無用分割符;比如說word中的表格轉換成markdown之后,會有大量的空格和| 作為分割符;這時這些無用字符除了會占用大量空間導致文檔分離之外,沒有任何用處,因此這種多余的無用字符最好也都給刪掉。

在文檔處理中,類似于以上所述的情況還有很多,因此我們需要根據自己的具體情況進行處理;而不是一股腦的把文檔切片,嵌入再入庫就行了。
還有就是我們在文檔處理中,我們需要選擇有用的高質量的數據,而不是把數據一股腦的全部塞到知識庫中;以數據庫表為例,有時候我們可能需要數據庫中的數據作為知識庫,但數據庫中的很多字段可能是為了方便管理和區分業務用的,在實際的業務場景中沒有任何意義;比如說is_deleted這種字段,用來標識數據是否被刪除;這種字段在大部分業務場景中都是無效數據;當然也不否認其在某些場景下會有用。
因此,我們文檔處理的原則就是,找到一種數據格式,然后把有效,且能夠處理的數據入庫;把哪些無效和無法處理的數據給剔除掉;這樣才能打造一個高質量的知識庫。
本文轉載自??AI探索時代?? 作者:DFires

















