RAG文檔處理的一種優化方案——問答對的轉換技巧 原創
“ 在RAG中根據不同的場景有多種不同的優化方案,因此我們需要根據場景選擇合適的解決方案。”
在RAG文檔檢索增強中,文檔預處理是相當重要的一環;以目前大模型的能力來說,已經能夠很好的根據參考文檔回答用戶問題,但現在的問題是在RAG的前期階段——也就是文檔預處理階段卻是一個技術難點。
而且針對不同的文檔類型和文檔內容,處理方式也不盡相同,因此RAG的文檔處理效果也參差不齊。
而今天我們就來提供一個新的思路,那就是把文檔轉換成問答對;因為,從用戶的角度來說,用戶提出的問題一般都是有針對性的,而不是寬泛的針對整個文檔進行提問。因此,我們就可以根據文檔內容,從多個維度提出幾個經典問題,這樣即可以提升檢索速度,也可以提升準確率。
RAG文檔優化之——問答對
先思考一個問題,問答對相當于傳統的文檔檢索又那些好處?為什么要使用問答對?
不論是傳統的文檔檢索,還是問答對都屬于文檔預處理的一種方式;而之所以使用問答對的原因在于,問答形式更符合我們人類的交流方式,也可以說是思維慣性,我們人類百分之八十以上的交流都是通過文檔形式Q&A。
其次,傳統的文檔檢索就類似于你要想知道地球為什么圍著太陽轉,你可能需要看一整本科普讀物才知道原來是因為引力的存在;但基于問答對的方式就類似于給你一本十萬個為什么,它直接告訴你地球圍著太陽轉的原因是因為引力的存在,你不需要看很多其它的東西,也不需要明白引力到底是個什么東西。
這種方式雖然可能只是讓你知其然而不知其所以然,但它能夠用最短的時間,最簡單的方式告訴你一些常識性問題。
前面說了問答對的優勢,那么什么樣的文檔適合轉換成問答對呢?以及怎么把文檔轉換成問答對,有那幾種方案?
其實任何形式的文檔都可以轉換成問答對,只不過不同的文檔內容處理方式不一樣;比如說基于純文本的文檔和多圖表的文檔處理方式就不太一樣。
但把文檔轉換成問答對就有兩種不同的方案了;其實文檔轉換問答對的原理很簡單,就是把文檔內容丟給大模型,讓模型根據文檔內容,從多個維度生成三到五個與之相關的問題即可。
但怎么把文檔丟給大模型這個就要說道說道了。
首先,最簡單的方式就是把整個文檔全部一次性丟給大模型,讓大模型理解文檔然后整理出一系列問題。
但我們應該也明白,這種方式肯定是速度最快,最簡單,但也是效果最差的一種方式;這就像你用三天時間看了一本經典名著,你最多只能記住其中的幾個景點環節,大部分內容都被你給忘了。
因此,針對文檔轉換成問答對最好的方式,是根據段落或標題對文檔進行拆分;然后把拆分之后的文檔再丟給大模型,這樣就可以提升問答對的準確性。
并且,在召回過程中也可以把相應的段落返回給用戶,這樣既增加了權威性,也可以避免Token浪費的問題。
當然,由于問答對的特殊形式,問答對也只適合部分業務場景,在某些業務場景下問答對的效果可能就不那么好了;比如說在長文理解中,使用問答對可能會導致最終的語義混亂。
本文轉載自?????AI探索時代???? 作者:DFires
