記一次大模型檢索增強(qiáng)系統(tǒng)中的一個(gè)問(wèn)題——死板的RAG 原創(chuàng)
“ RAG的機(jī)制決定了其執(zhí)行流程比較死板,而Agent更符合人類的思維模式。”
在RAG檢索增強(qiáng)系統(tǒng)中,有一個(gè)很重要的概念就是語(yǔ)義相似度檢索,其流程根據(jù)用戶問(wèn)題先去知識(shí)庫(kù)中檢索相關(guān)文檔,然后再丟給模型做增強(qiáng)。
但在真實(shí)的業(yè)務(wù)實(shí)踐過(guò)程中發(fā)現(xiàn)了一個(gè)問(wèn)題,具體表現(xiàn)上是多輪對(duì)話的關(guān)聯(lián)性問(wèn)題,實(shí)際上是語(yǔ)義理解問(wèn)題;這個(gè)問(wèn)題產(chǎn)生的場(chǎng)景就是在多輪對(duì)話過(guò)程中無(wú)法準(zhǔn)確理解每次對(duì)話之間的關(guān)系,但這個(gè)是由RAG的流程所決定的,無(wú)法避免,或者說(shuō)無(wú)法完全避免。

多輪對(duì)話中的語(yǔ)義理解問(wèn)題
RAG的處理流程就是先檢索,再增強(qiáng),這是由RAG的特性所決定的;但是為了保證多輪對(duì)話的連貫性,因此在實(shí)際的處理過(guò)程中會(huì)添加記憶功能,使用記憶拼接上下文,使模型能夠更好的理解和處理用戶問(wèn)題。
但是,拼接上下文畢竟是屬于第二步,第一步是需要先使用語(yǔ)義相似度檢索文檔;這里有一個(gè)問(wèn)題就是,上一個(gè)問(wèn)題和下一個(gè)問(wèn)題可能是完全無(wú)關(guān)的,也可能是緊密相關(guān)的。
因此,兩種情況就會(huì)導(dǎo)致召回不同的文檔,特別是在兩次語(yǔ)義相關(guān),但又不完全相關(guān)的情況下;這樣說(shuō)可能很多人都不明白什么意思,所以我們就用具體的例子來(lái)看。

比如說(shuō),第一個(gè)問(wèn)題是怎么做西紅柿炒蛋?然后模型巴拉巴拉一堆告訴你怎么做;然后,第二個(gè)問(wèn)題是怎么才能做得更好?
這時(shí)針對(duì)這兩個(gè)問(wèn)題來(lái)說(shuō),其是有語(yǔ)義關(guān)聯(lián)性的,特別是在有記憶功能的情況下,大模型也能理解你說(shuō)的怎么才能做的更好是什么意思。
但在召回階段,兩個(gè)問(wèn)題之間的語(yǔ)義關(guān)聯(lián)性就不是很明顯了;而根據(jù)相似度召回,兩個(gè)問(wèn)題召回的文檔也基本上可以說(shuō)是完全不搭嘎。
所以,怎么解決這個(gè)問(wèn)題?
在前面的文章中有聊到過(guò)這個(gè)問(wèn)題,解決方案就是在做召回時(shí),先對(duì)問(wèn)題進(jìn)行改寫(xiě),改寫(xiě)時(shí)使用歷史記錄作為上下文,這樣就可以讓模型更好的理解當(dāng)前的語(yǔ)境,然后理解相應(yīng)的問(wèn)題并給出一個(gè)更合理的問(wèn)題進(jìn)行數(shù)據(jù)召回。
但這里又帶來(lái)了一個(gè)新的問(wèn)題,就是這種召回方式雖然保證了多輪對(duì)話之間的語(yǔ)義相關(guān)性;但如果兩輪對(duì)話是完全獨(dú)立的對(duì)話怎么辦,即兩個(gè)問(wèn)題完全沒(méi)任何關(guān)系;這樣就會(huì)讓上一個(gè)問(wèn)題污染到下一個(gè)問(wèn)題的召回精度。
還一個(gè)更嚴(yán)重的問(wèn)題是,兩個(gè)問(wèn)題之間有關(guān)聯(lián)關(guān)系,但從語(yǔ)義上又區(qū)分不出來(lái)的場(chǎng)景。
舉例來(lái)說(shuō),第一個(gè)問(wèn)題是我要做西紅柿炒蛋,第二個(gè)問(wèn)題是應(yīng)該去那個(gè)菜市場(chǎng)買菜。
這兩個(gè)問(wèn)題有關(guān)聯(lián)性嗎?肯定是有的,但你說(shuō)它可以沒(méi)有關(guān)聯(lián)性嗎?當(dāng)然也可以。
所以這種情況下,應(yīng)該怎么辦?
如果把兩個(gè)問(wèn)題合在一起改寫(xiě)出一個(gè)新問(wèn)題,但用戶的本意可能是兩個(gè)完全獨(dú)立的問(wèn)題;但如果不進(jìn)行改寫(xiě),用戶的本意也可能是兩個(gè)相關(guān)性問(wèn)題。

這種情況如果從用戶的角度來(lái)說(shuō),只需要把問(wèn)題問(wèn)的再具體一些就行了;但問(wèn)題是我們無(wú)法控制用戶的行為。
所以,如果從RAG的角度來(lái)考慮這個(gè)問(wèn)題,這個(gè)問(wèn)題基本上是無(wú)解的,只能去約束用戶的行為;但如果換個(gè)思路,使用智能體來(lái)實(shí)現(xiàn),由智能體自己去判斷是否需要進(jìn)行數(shù)據(jù)召回,還是利用現(xiàn)有的內(nèi)容進(jìn)行回復(fù),這樣就可以避免這個(gè)問(wèn)題。
而產(chǎn)生這個(gè)問(wèn)題的原因就是RAG的機(jī)制和我們?nèi)祟愃伎寄P偷膮^(qū)別;RAG的機(jī)制就是,不論三七二十一,我先去撈一遍文檔;但人類的思考模式是,先看能不能解決問(wèn)題,如果解決不了再去查文檔。
所以,從這一點(diǎn)來(lái)看智能體更符合人類的思維模式,而RAG相對(duì)來(lái)說(shuō)就比較死板。
本文轉(zhuǎn)載自???AI探索時(shí)代??? 作者:DFires

















