日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > windows >内容正文

windows

解密Prompt系列21. LLM Agent之再谈RAG的召回信息密度和质量

發(fā)布時(shí)間:2023/12/24 windows 36 coder
生活随笔 收集整理的這篇文章主要介紹了 解密Prompt系列21. LLM Agent之再谈RAG的召回信息密度和质量 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

話接上文的召回多樣性優(yōu)化,多路索引的召回方案可以提供更多的潛在候選內(nèi)容。但候選越多,如何對(duì)這些內(nèi)容進(jìn)行篩選和排序就變得更加重要。這一章我們嘮嘮召回的信息密度和質(zhì)量。同樣參考經(jīng)典搜索和推薦框架,這一章對(duì)應(yīng)排序+重排環(huán)節(jié),考慮排序中粗排和精排的區(qū)分主要是針對(duì)低延時(shí)的工程優(yōu)化,這里不再進(jìn)一步區(qū)分,統(tǒng)一算作排序模塊。讓我們先對(duì)比下重排和排序模塊在經(jīng)典框架和RAG中的異同

  • 排序模塊
    • 經(jīng)典框架:pointwise建模,局部單一item價(jià)值最大化,這里的價(jià)值可以是搜索推薦中的內(nèi)容點(diǎn)擊率,或者廣告中的ecpm,價(jià)值由后面使用的用戶來(lái)決定
    • RAG:基本和經(jīng)典框架相同,不過(guò)價(jià)值是大模型使用上文多大程度可以回答問(wèn)題,價(jià)值的定義先由背后的大模型給出,再進(jìn)一步才能觸達(dá)用戶。更具體的定義是,排序模塊承擔(dān)著最大化信息密度的功能,也就是在更少的TopK內(nèi)篩選出盡可能多的高質(zhì)量?jī)?nèi)容,并過(guò)濾噪聲信息。
  • 重排模塊
    • 經(jīng)典框架:Listwise建模,通過(guò)對(duì)item進(jìn)行排列組合,使得全局價(jià)值最大化,進(jìn)而使得用戶多次行為帶來(lái)的整體體驗(yàn)感更好。這里的整體可以是一個(gè)搜索列表頁(yè),一屏推薦信息流,也可以是更長(zhǎng)的一整個(gè)session內(nèi)用戶體驗(yàn)的整體指標(biāo),以及背后的商業(yè)價(jià)值。常見(jiàn)的做法是打散,提高連續(xù)內(nèi)容的多樣性,以及前后內(nèi)容的邏輯連貫性,不過(guò)打散只是手段,全局價(jià)值才是終極目標(biāo)
    • RAG:概念相似,通過(guò)重排優(yōu)化模型對(duì)整體上文的使用效率。優(yōu)化模型對(duì)上文的使用,提升信息連貫性和多樣性,最小化信息不一致性和沖突。不過(guò)當(dāng)前大模型對(duì)話式的交互方式更難拿到用戶體驗(yàn)的反饋信號(hào),想要優(yōu)化用戶體驗(yàn)難度更高。

下面我們分別說(shuō)兩這兩個(gè)模塊有哪些實(shí)現(xiàn)方案

1. 排序模塊

上一章提到使用query改寫,多路索引,包括bm25離散索引,多種embedding連續(xù)索引進(jìn)行多路內(nèi)容召回。這種方案會(huì)提供更豐富的內(nèi)容候選,但也顯著增加了上文長(zhǎng)度。而很多論文都評(píng)估過(guò),過(guò)長(zhǎng)的上文,以及過(guò)長(zhǎng)上文中更大比例的噪聲信息,都會(huì)影響模型推理的效果,如下圖

因此如何從這些召回內(nèi)容中排序篩選出更出質(zhì)量更高的內(nèi)容,過(guò)濾噪聲信息就是排序模塊需要做的。考慮不同索引之間對(duì)于相似度的計(jì)算打分相互不可比,更不可加,因此需要統(tǒng)一的打分維度來(lái)對(duì)候選內(nèi)容進(jìn)行排序,這里提供兩個(gè)無(wú)監(jiān)督的混合排序打分方案

1.1 RRF混排

  • https://learn.microsoft.com/en-us/azure/search/hybrid-search-ranking
  • https://python.langchain.com/docs/modules/data_connection/retrievers/ensemble

多路召回混合排序較常見(jiàn)的就是Reciprocal Rank Fusion(RRF),把所有打分維度都轉(zhuǎn)化成排名,每個(gè)文檔的最終得分是多路打分的排名之和的倒數(shù)。通過(guò)排名來(lái)解決不同打分之間scale的差異性。公式如下,其中r(d)是單一打分維度中的文檔排名,K是常數(shù)起到平滑的作用,微軟實(shí)驗(yàn)后給的取值是60。

以下是微軟搜索中使用RRF類合并文本檢索和向量檢索的一個(gè)示意圖,使用RRF分別對(duì)文本檢索和向量檢索的多路召回內(nèi)容進(jìn)行混合排序

1.2 信息熵打分

除了使用排名來(lái)對(duì)各路召回的內(nèi)容質(zhì)量進(jìn)行歸一化,當(dāng)然也可以使用統(tǒng)一的模型打分來(lái)對(duì)內(nèi)容質(zhì)量進(jìn)行衡量,比如可以使用Bert Cross-Encoder BGE-Reranker來(lái)對(duì)所有候選文檔來(lái)進(jìn)行打分排序,利用cross模型比embedding模型更精準(zhǔn)的特點(diǎn)來(lái)進(jìn)一步對(duì)召回內(nèi)容進(jìn)行過(guò)濾。

這里我想聊聊除了相關(guān)性之外的另一個(gè)內(nèi)容質(zhì)量評(píng)估維度 - Information-Entropy。Information-Entropy是從文本信息熵的角度對(duì)內(nèi)容有效性和質(zhì)量進(jìn)行打分篩選,有以下幾種不同的信息熵度量方式

1.2.1 Selective-Context

Unlocking Context Constraints of LLMs: Enhancing Context Efficiency of LLMs with Self-Information-Based Content Filtering

Selective-Context使用自信息對(duì)內(nèi)容質(zhì)量進(jìn)行評(píng)估。上一次碰到自信息,還是在做新詞挖掘的算法。放在內(nèi)容質(zhì)量篩選也是同樣的道理,熵值越低(不確定性越低),自信息越低的token帶給語(yǔ)言模型的信息量就越低,例如停用詞,同義詞等等。因此自信息更低的內(nèi)容本身的價(jià)值更低。不過(guò)自信息的計(jì)算是token粒度的,想要對(duì)短語(yǔ),句子,段落進(jìn)行計(jì)算可以近似采用token求和的方式,也就是假設(shè)token之間是相互獨(dú)立。但是越大粒度的信息合并,簡(jiǎn)單求和的自信息誤差越大,因?yàn)閠oken并非真正獨(dú)立。因此單純使用內(nèi)容自信息的計(jì)算方式更適合短語(yǔ)粒度的上文內(nèi)容壓縮,似乎不完全適合對(duì)RAG召回的段落內(nèi)容進(jìn)行打分,不過(guò)不要著急接著往后看喲~

以下是Selective-Context通過(guò)自信息對(duì)Context進(jìn)行壓縮的效果,至于壓縮幅度和壓縮后對(duì)模型推理的影響我們放到最后一起對(duì)比

1.2.2 LLMLingua

LLMLingua: Compressing Prompts for Accelerated Inference of Large Language Models

LLMLingua同樣是使用token熵值來(lái)對(duì)內(nèi)容質(zhì)量進(jìn)行打分,不過(guò)進(jìn)一步放松了token獨(dú)立性的假設(shè)。 計(jì)算公式如下,先把整個(gè)上文context分段,論文使用100個(gè)token為一段。以下\(S_{j,i}\)為第j個(gè)段落中第i個(gè)字,\(\tilde{S}_j\)是第j個(gè)段落前所有段落經(jīng)過(guò)壓縮后的內(nèi)容。也就是在計(jì)算當(dāng)前段落每個(gè)字的熵值時(shí),會(huì)把之前已經(jīng)壓縮過(guò)的內(nèi)容拼接在前面,使得對(duì)更大粒度的段落熵值估計(jì)更加準(zhǔn)確。

1.2.3 LongLLMLingua

LongLLMLingua: Accelerating and Enhancing LLMs in Long Context Scenarios via Prompt Compression

LongLLMLingua進(jìn)一步把完全基于內(nèi)容的信息熵,優(yōu)化成了基于內(nèi)容回答問(wèn)題的條件熵,更完美的適配RAG框架中排序模塊對(duì)召回內(nèi)容整體打分的要求。

以上LLMLinugua和Selective-Context單純對(duì)上文內(nèi)容的熵值進(jìn)行計(jì)算,但很有可能熵值高的內(nèi)容雖然包含大量信息但都和問(wèn)題無(wú)關(guān),只是單純的信息噪聲。因此LongLLMLingua在熵值計(jì)算中引入了問(wèn)題,那無(wú)非就是兩種計(jì)算方案,要么給定問(wèn)題計(jì)算內(nèi)容的熵值,要么給定內(nèi)容計(jì)算問(wèn)題的熵值。論文考慮內(nèi)容中可能是有效信息和噪聲信息的混合,因此選用了后者。也就是給定每段召回內(nèi)容,計(jì)算問(wèn)題的熵值。

這里論文還在問(wèn)題前加了一段指令,"\(X^{restrict}=\)we can get the answer to this question in the given documents",通過(guò)增加內(nèi)容到問(wèn)題的關(guān)聯(lián)程度,來(lái)優(yōu)化條件熵的計(jì)算。

論文對(duì)比了不同打分排序方案,包括BM25,各種向量embedding,以及LLMLingua,其中LongLLMLinuga在TopK文檔的召回率上顯著更優(yōu),如下圖。具體的壓縮率和推理效果對(duì)比,我們放到后面的重排模塊一起來(lái)說(shuō)。

LongLLMLingua在以上的段落打分之外,還加入了對(duì)段落內(nèi)部token級(jí)別的內(nèi)容壓縮。也就是先篩選TopN段落,再在段落內(nèi)篩選有效Token。不過(guò)看論文效果感覺(jué)段落排序的重要性>>內(nèi)容壓縮,這部分就不再贅述,感興趣的朋友去看論文吧~

重排模塊

針對(duì)排序模塊篩選出的TopK上文候選,重排模塊需要通過(guò)對(duì)內(nèi)容進(jìn)一步排列組合,最大化模型整體推理效果。和排序模塊最大的差異在于它的整體性,不再針對(duì)每個(gè)Doc進(jìn)行獨(dú)立打分,而是優(yōu)化整個(gè)Context上文的效果。主要有以下兩個(gè)優(yōu)化方向:一個(gè)是文檔位置的優(yōu)化,一個(gè)是文檔之間關(guān)聯(lián)性的優(yōu)化

文檔位置

  • LongLLMLingua: Accelerating and Enhancing LLMs in Long Context Scenarios via Prompt Compression
  • Lost in the Middle: How Language Models Use Long Contexts
  • https://api.python.langchain.com/en/latest/document_transformers/langchain.document_transformers.long_context_reorder.LongContextReorder.html#

針對(duì)文檔位置的最優(yōu)化就是Lost in the Middle(上圖),相信大家可能都比較熟悉。簡(jiǎn)單說(shuō)就是大模型在使用上文推理時(shí),傾向于使用最前面和最后面的內(nèi)容,而對(duì)中間的內(nèi)容愛(ài)搭不理。因此可以基于內(nèi)容的質(zhì)量,把重要的內(nèi)容放在Context的前面和后面。

LongLLMLingua也做了類似的嘗試,并且認(rèn)為前面的位置比后面更加重要,因此直接使用上面排序模塊對(duì)段落的打分,對(duì)排序后保留的候選內(nèi)容,進(jìn)行重新排列,按照分?jǐn)?shù)由高到低依次從前往后排列。

最后來(lái)一起看下效果,在LongLLMLingua中,論文對(duì)比了各種相似度排序方案保留TopN文檔,并使用該排序方案進(jìn)一步重排內(nèi)容的效果。在2倍和4倍的壓縮率下LongLLMLingua的效果都是顯著最好的,不過(guò)可以發(fā)現(xiàn)只使用LongLLMLingua進(jìn)行排序(Retrieval-base Methods)并做重排(Reorder列)的效果其實(shí)就已經(jīng)不差了,而段落內(nèi)部的token壓縮更多是錦上添花。

文檔關(guān)聯(lián)性

  • https://python.langchain.com/docs/integrations/retrievers/merger_retriever
  • MetaInsight: Automatic Discovery of Structured Knowledge for
    Exploratory Data Analysis

以上排序和重排的邏輯,都是考慮問(wèn)題和召回內(nèi)容之間的關(guān)聯(lián)性,但都沒(méi)有引入Context內(nèi)部不同召回內(nèi)容之間的關(guān)聯(lián)性。

langchain的LOTR (Merger Retriever)實(shí)現(xiàn)了部分類似的功能,包括使用embedding對(duì)多路召回的內(nèi)容進(jìn)行消重,以及對(duì)內(nèi)容進(jìn)行聚類,每個(gè)聚類中篩選最靠近中心的一條內(nèi)容。這一步可以放在排序中去做,也可以放在排序后的重排模塊。

之前解密Prompt系列19. LLM Agent之?dāng)?shù)據(jù)分析領(lǐng)域的應(yīng)用章節(jié)提到的微軟的MetaInsight也引入了類似的打散邏輯。其中

  • 內(nèi)容的整體價(jià)值=每條內(nèi)容的價(jià)值之和-內(nèi)容之間重合的價(jià)值
  • 兩兩內(nèi)容重合價(jià)值=兩條內(nèi)容打分的最小值*內(nèi)容重合率

那放到RAG框架可能就可以使用以上的信息熵來(lái)作為打分,相似度來(lái)作為重合率

這塊我們也在嘗試中,所以沒(méi)有結(jié)論性的內(nèi)容,這里只拋出幾個(gè)問(wèn)題,有試驗(yàn)過(guò)效果的有緣人可以在評(píng)論區(qū)回復(fù)

  • 信息連貫性:把內(nèi)容相似的多個(gè)召回連續(xù)排列,會(huì)比散落在Context各處效果更好么
  • 信息多樣性:對(duì)召回內(nèi)容進(jìn)行聚類,把內(nèi)容相似觀的多個(gè)召回進(jìn)行消重,或者只使用每個(gè)cluster內(nèi)距離類中心最新的一條或TopN條內(nèi)容,會(huì)提升推理效果么
  • 信息一致性:觀點(diǎn)或內(nèi)容沖突的多個(gè)召回內(nèi)容,對(duì)推理的影響有多大

想看更全的大模型相關(guān)論文梳理·微調(diào)及預(yù)訓(xùn)練數(shù)據(jù)和框架·AIGC應(yīng)用,移步Github >> DecryPrompt


Reference

  1. 推薦系統(tǒng)[四]:精排-詳解排序算法LTR (Learning to Rank)_ poitwise, pairwise, listwise相關(guān)評(píng)價(jià)指標(biāo),超詳細(xì)知識(shí)指南。
  2. 多業(yè)務(wù)建模在美團(tuán)搜索排序中的實(shí)踐
  3. 搜索重排序和推薦列表重排序,在建模思路上有什么異同?
  4. Transformer 在美團(tuán)搜索排序中的實(shí)踐
  5. 工業(yè)界(搜索 推薦)粗排模型一般怎么做?
  6. 知乎搜索排序模型的演進(jìn)

總結(jié)

以上是生活随笔為你收集整理的解密Prompt系列21. LLM Agent之再谈RAG的召回信息密度和质量的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。