自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

關(guān)于大模型應(yīng)用過(guò)程中的記憶功能管理問(wèn)題,以及解決方案 原創(chuàng)

發(fā)布于 2025-5-12 08:37
瀏覽
0收藏

“ 大模型應(yīng)用的很多功能包括記憶管理,需要的不僅僅只是技術(shù)問(wèn)題,還需要足夠的工程化能力才能解決?!?/strong>

眾所周知,大模型是沒(méi)有記憶功能的,因此記憶管理就成為大模型應(yīng)用過(guò)程中必不可少的一個(gè)環(huán)節(jié);雖然說(shuō)記憶管理說(shuō)起來(lái)很簡(jiǎn)單,但在實(shí)際操作中還是存在很多問(wèn)題。

比如說(shuō),隨著記憶的增加token成本的上升,大模型窗口的限制,記憶的存儲(chǔ)問(wèn)題等等。

因此,今天就從項(xiàng)目的實(shí)際操作中來(lái)詳細(xì)了解一下大模型的記憶功能;開(kāi)發(fā)框架是基于langchain的記憶管理模塊。

大模型記憶管理問(wèn)題

大模型記憶管理問(wèn)題主要存在于NLP任務(wù)的對(duì)話場(chǎng)景中,其本質(zhì)就類(lèi)似于我們平常人聊天需要有一個(gè)上下文;比如說(shuō)你朋友在聊天你突然過(guò)來(lái),肯定要先問(wèn)一下他們?cè)诹氖裁?,或者在旁邊?tīng)一下他們?cè)诹氖裁矗@時(shí)你才知道怎么開(kāi)口。

而大模型由于自身的原因?qū)е缕錄](méi)有記憶功能,也就是說(shuō)每次對(duì)話對(duì)大模型來(lái)說(shuō)都是一次全新的交流;這玩意就類(lèi)似于一個(gè)健忘癥的人,上一句剛說(shuō)完他就忘了剛說(shuō)的是什么。

因此,大模型記憶管理就應(yīng)運(yùn)而生了;記憶管理說(shuō)起來(lái)也很簡(jiǎn)單,就是把每次和大模型的對(duì)話記錄下來(lái),你說(shuō)了什么大模型說(shuō)了什么;然后每次聊天的時(shí)候把這段對(duì)話記錄一起輸入到大模型中(拼接到提示詞中),這樣大模型就可以根據(jù)這段上下文知道你們聊了什么。

關(guān)于大模型應(yīng)用過(guò)程中的記憶功能管理問(wèn)題,以及解決方案-AI.x社區(qū)

在langchain中封裝了一些記憶功能的模塊,主要是基于內(nèi)存的會(huì)話記憶;當(dāng)然,也有為解決分布式場(chǎng)景下的存儲(chǔ)中間件(關(guān)系型數(shù)據(jù)庫(kù),redis緩存等),本質(zhì)上就是把對(duì)話記錄保存下來(lái),在每次對(duì)話時(shí)再加載出來(lái)然后拼接到提示詞中。

比如其中使用比較多的ConversationBufferMemory記憶,其實(shí)就是簡(jiǎn)單粗暴的把所有對(duì)話記錄都保存下來(lái);但這同樣會(huì)帶來(lái)一些問(wèn)題,比如說(shuō)隨著對(duì)話次數(shù)的增長(zhǎng),對(duì)話記錄會(huì)越來(lái)越長(zhǎng),這時(shí)token消耗就會(huì)越來(lái)越多;而更重要的是,大模型的窗口大小是有限制的,因此如果持續(xù)增長(zhǎng)下去就會(huì)導(dǎo)致超長(zhǎng)問(wèn)題。

所以,這就有了會(huì)話緩存窗口記憶ConversationBufferWindowMemory,本質(zhì)上來(lái)說(shuō)就是給會(huì)話加了一個(gè)k值,目的就是只記錄最近的k輪對(duì)話;比如說(shuō)你對(duì)話了一百次,但我只記錄最近的10次,這樣既可以解決成本問(wèn)題,也可以解決超長(zhǎng)問(wèn)題。

但這同樣會(huì)有新的問(wèn)題出現(xiàn),那就是丟失了之前的對(duì)話記錄,可能會(huì)導(dǎo)致上下文缺失;這就類(lèi)似于兩個(gè)人喝酒吹了兩個(gè)小時(shí)的牛逼,突然說(shuō)我們剛開(kāi)始聊的啥,這時(shí)由于對(duì)話記錄已經(jīng)丟失,大模型就無(wú)法獲得之前的上下文。

關(guān)于大模型應(yīng)用過(guò)程中的記憶功能管理問(wèn)題,以及解決方案-AI.x社區(qū)


所以,為了解決這個(gè)問(wèn)題,就設(shè)計(jì)了一個(gè)總結(jié)記憶功能;其原理就是把對(duì)話記錄輸入到另一個(gè)總結(jié)模型,讓這個(gè)模型根據(jù)對(duì)話的內(nèi)容總結(jié)其中的關(guān)鍵信息,這樣就可以解決上下文丟失問(wèn)題。

但由于需要多次訪問(wèn)大模型,以及隨著對(duì)話的增多,總結(jié)的內(nèi)容同樣會(huì)增多,因此可能依然存在上下文窗口限制問(wèn)題;而且由于大模型只關(guān)注文本頭和尾,對(duì)文本中間內(nèi)容處理效果不太好,因此依然會(huì)出現(xiàn)上下文缺失的情況。

所以,從以上問(wèn)題來(lái)看,大模型記憶管理是一個(gè)復(fù)雜的過(guò)程,并且根據(jù)不同的場(chǎng)景需要選擇合適的記憶管理方式。

而且在實(shí)際操作中,整個(gè)系統(tǒng)不可能只有一個(gè)人訪問(wèn),因此需要根據(jù)不同的用戶使用用戶標(biāo)識(shí)或者會(huì)話標(biāo)識(shí)來(lái)區(qū)分不同用戶的記憶數(shù)據(jù);但同樣,因?yàn)閷?duì)話記錄是保存在內(nèi)存中或者第三方存儲(chǔ)中間件中,但對(duì)話的時(shí)間是有限的,因此還需要做記憶的生命周期管理,也就是說(shuō)用戶一輪對(duì)話完成之后,可以在適當(dāng)?shù)臅r(shí)間清理掉不在需要的對(duì)話記錄。

關(guān)于大模型應(yīng)用過(guò)程中的記憶功能管理問(wèn)題,以及解決方案-AI.x社區(qū)

如以上代碼,根據(jù)session_id會(huì)話id作為為每個(gè)用戶都創(chuàng)建記憶功能,這個(gè)會(huì)話id可以根據(jù)不同的應(yīng)用場(chǎng)景選擇合適的唯一標(biāo)識(shí)符;而且,在存儲(chǔ)會(huì)話的過(guò)程中,設(shè)置一個(gè)last_active時(shí)間參數(shù),當(dāng)?shù)竭_(dá)最長(zhǎng)會(huì)話時(shí)間時(shí),可以自動(dòng)清理掉過(guò)期的會(huì)話記錄。

關(guān)于大模型應(yīng)用過(guò)程中的記憶功能管理問(wèn)題,以及解決方案-AI.x社區(qū)

這樣就可以在技術(shù)上防止內(nèi)存泄露,或者存儲(chǔ)空間不足的問(wèn)題。

當(dāng)然,以上功能也僅僅只適用于部分應(yīng)用場(chǎng)景,比如說(shuō)在分布式環(huán)境下就不能使用基于內(nèi)存的記憶存儲(chǔ),而需要借助外部存儲(chǔ)工具,如redis等。因此,在具體的應(yīng)用中,用戶可以選擇性地使用這些記憶工具,當(dāng)然也可以完全自己開(kāi)發(fā)一套記憶管理工具。

總之,大模型應(yīng)用在學(xué)習(xí)過(guò)程和實(shí)際應(yīng)用中還是存在一定的區(qū)別;有些問(wèn)題需要通過(guò)技術(shù)本身來(lái)解決,而有些問(wèn)題需要工程化的方式來(lái)避免或解決。


本文轉(zhuǎn)載自公眾號(hào)AI探索時(shí)代 作者:DFires

原文鏈接:??https://mp.weixin.qq.com/s/r5uO5HEN0f72cSE7sxoaKA??


?著作權(quán)歸作者所有,如需轉(zhuǎn)載,請(qǐng)注明出處,否則將追究法律責(zé)任
收藏
回復(fù)
舉報(bào)
回復(fù)
相關(guān)推薦