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

讓你的RAG應(yīng)用更加智能!引入自我反思的大模型 RAG 框架(Self-RAG) 原創(chuàng)

發(fā)布于 2024-12-3 08:48
瀏覽
0收藏

Self-RAG 出現(xiàn)的背景

經(jīng)典的RAG模型通過提供與問題相關(guān)的上下文信息來支持LLM在回答知識密集型問題。然而,這種方法存在兩個(gè)主要問題:

  • 過度檢索:RAG系統(tǒng)并不針對用戶意圖進(jìn)行精細(xì)的判斷,而是對每次輸入都執(zhí)行top-k的知識檢索,可能導(dǎo)致引入不必要或偏離主題的信息,從而影響輸出的質(zhì)量。例如,當(dāng)用戶僅是打招呼時(shí)(如 "hello"),理想的做法是直接利用LLM的能力來回答,而不需要查詢知識庫
  • 輸出一致性問題:無法百分百確定回答的內(nèi)容就是完全參考檢索到的上下文還是來自模型自己的生成,因?yàn)榇竽P捅旧聿荒鼙WC絕對的遵循,更何況知識的相關(guān)性也會(huì)存疑。

在實(shí)際應(yīng)用RAG時(shí),我們常常通過精細(xì)化的工作流程設(shè)計(jì)和創(chuàng)新性的Prompt調(diào)整來盡量緩解上述問題。具體來說:

  • 我們可以利用LLM的能力,在執(zhí)行檢索步驟之前先判斷是否真的需要進(jìn)行檢索。
  • 在給出Prompt指令時(shí),我們可以確保LLM嚴(yán)格按照找到的參考知識來形成答案。
  • 我們還可能依賴LLM的強(qiáng)大能力對答案進(jìn)行評估,經(jīng)過多輪迭代優(yōu)化,以提升答案的質(zhì)量。

然而這些方案往往比較復(fù)雜,并可能引入一些難以控制的潛在問題。Self-RAG則是另一種解決這些挑戰(zhàn)的方案。

什么是Self-RAG

Self-RAG是由來自華盛頓大學(xué)、IBM人工智能研究院等機(jī)構(gòu)技術(shù)專家提出的一種增強(qiáng)的RAG范式, Self-RAG 的論文地址可以看SELF-RAG: LEARNING TO RETRIEVE, GENERATE, AND CRITIQUE THROUGH SELF-REFLECTION。它主要是在模型層面的微調(diào),讓大模型本身直接具備了判斷按需檢索與自我評判的能力,并進(jìn)而通過與應(yīng)用層的配合,達(dá)到提升生成準(zhǔn)確性與質(zhì)量的問題。Self-RAG的運(yùn)作流程如下:

讓你的RAG應(yīng)用更加智能!引入自我反思的大模型 RAG 框架(Self-RAG)-AI.x社區(qū)

基本流程

Self-RAG的基本工作流程用網(wǎng)上的這張圖進(jìn)行說明:

讓你的RAG應(yīng)用更加智能!引入自我反思的大模型 RAG 框架(Self-RAG)-AI.x社區(qū)

從圖上我們可以看出Self-RAG相比經(jīng)典RAG有以下幾點(diǎn)不同:

  1. 按需檢索
  • 如果無需檢索(比如”hello“),則由模型直接生成
  • 如果需要檢索(比如”what is new features of iphone15“),則執(zhí)行檢索
  1. 并行生成:使用檢索出的K個(gè)相關(guān)知識與輸入問題組裝Prompt,并行生成K個(gè)輸出。而傳統(tǒng)的RAG則是把K個(gè)知識一起和輸入問題組成Prompt只生成1個(gè)輸出。
  2. 評估和選擇:先對生成的多個(gè)響應(yīng)進(jìn)行評分,然后選擇上一步其中一個(gè)響應(yīng)作為輸出

仔細(xì)研究上面的流程可以看出,有兩個(gè)環(huán)節(jié)需要借助LLM進(jìn)行評判:

  1. 用戶的問題是否需要進(jìn)行知識檢索
  2. 如果進(jìn)行檢索,如何對多個(gè)輸出計(jì)算評分

那么我們應(yīng)該如何進(jìn)行評判呢?常規(guī)的方式是借助LLM與Prompt來判斷,這種方式的好處是完全在應(yīng)用層實(shí)現(xiàn),但缺點(diǎn)是:

  • 過多的LLM交互會(huì)帶來響應(yīng)性能下降與tokens成本升高
  • 生成的評判指標(biāo)只能定性的判斷,難以量化

Self-RAG采用了一種不同的方法:通過微調(diào)訓(xùn)練LLM,讓LLM在推理過程中實(shí)現(xiàn)自我反省,直接輸出一些特殊的Tokens,一般稱之為“Reflection Token”。我們可以利用這些特殊的Token來進(jìn)行不同的操作。下面我們會(huì)對上面需要LLM進(jìn)行評判的兩個(gè)環(huán)節(jié)做詳細(xì)說明。

按需檢索

Self-RAG 開始使用 LLM 對問題進(jìn)行生成時(shí),會(huì)輸出 ??Retrieve??類型的 Reflection Token。Reflection Token有三種可能的值,分別代表不同的行動(dòng)指示:

  • "Retrieval":表示需要查找更多相關(guān)信息。
  • "No Retrieval":表示無需進(jìn)一步檢索,模型應(yīng)該根據(jù)已有的知識或信息回答問題。
  • "Continue to Use Evidence":表示模型應(yīng)繼續(xù)利用先前檢索到的信息進(jìn)行問題的解答。

來看幾個(gè)例子,首先是一個(gè)不需要檢索的例子:

Question: Write a essay of your best summer vacation.
Answer: Sure![No Retrieval]As an AI, I don't have personal experiences or memories, but I can write about the importance and significance of summer vacations for individuals and families.[No Retrieval]......

在返回結(jié)果中我們可以看到包含了??[No Retrieval]??關(guān)鍵字,表示這個(gè)問題不需要檢索,可以直接返回結(jié)果。

我們再問一個(gè)需要檢索的問題:

Question: How did US statues get their names?
Answer: A number of them.[Retrieval]<paragraph>[Irrelevant]Some were named for the people who originally sponsored them, some were named for events or issues that they represented, and some were named for mythological figures.[Utility:4]

在返回結(jié)果中我們可以看到包含了??[Retrieval]<paragraph>?? 關(guān)鍵字,表示這個(gè)問題需要補(bǔ)充外部知識,即需要檢索。

在沒有Self-RAG之前,我們可以首先使用 LLM(Language Model)確定查詢問題是否需要檢索。如果無需檢索,那么直接用 LLM 生成最終答案。這種方式的一個(gè)缺點(diǎn)是,如果查詢問題實(shí)際上不需要檢索,那么標(biāo)準(zhǔn)的 RAG 模型將需要進(jìn)行兩次 LLM 調(diào)用。而 Self-RAG 模型則更高效,即便在此類情況下也只需調(diào)用一次 LLM??梢钥吹皆诓恍枰獧z索的這個(gè)分支上,Self-RAG的效率更高。

檢索和生成

在這個(gè)階段,Self-RAG LLM會(huì)生成三種類型的Reflection Token:

  • IsREL: 檢查檢索到的文檔是否為查詢提供了有用信息,值為??[Relevant]??和??[Irrelevant]??表示相關(guān)性。
  • IsSUP:檢查檢索到的文檔是否都為生成的答案提供了支持,它的值有??[Fully supported]??,??[Partially supported]??,??[No support / Contradictory]??,表示支持的程度
  • IsUSE: 表示生成的答案是否對查詢有幫助,值[Utility:5]??、??[Utility:4]??、??[Utility:3]??、??[Utility:2]??、??[Utility:1]`,表示答案的質(zhì)量,數(shù)字越大表示質(zhì)量越高,表示答案的質(zhì)量,數(shù)字越高表示質(zhì)量越高。

讓你的RAG應(yīng)用更加智能!引入自我反思的大模型 RAG 框架(Self-RAG)-AI.x社區(qū)

我們來看下 Self-RAG 在這個(gè)階段的生成結(jié)果,問題和輸出結(jié)果示例如下:

Question: What mysterious object did Loki use in his attempt to conquer Earth?
Answer1: [Relevant]The mysterious object that Loki used in his attempt to conquer Earth was the Tesseract, which is a powerful energy source of unknown potential.[Fully supported][Utility:5]
Answer2: [Relevant]Thanos used the Time Stone to dodge Loki's attack.[No support / Contradictory][Utility:5]

可以看到,在每個(gè)生成結(jié)果中,基本上都包含了以上 3 種 Reflection Token,這些 Token 會(huì)在后面的評估階段進(jìn)行使用,評估得分最高的文檔被選作最終結(jié)果。

評估算法

我們看到的標(biāo)記tokens并非量化指標(biāo),因此這里需要借助到LLM推理輸出結(jié)果的一個(gè)字段:logprobs(對數(shù)),我們來了解一下這個(gè)字段和相對應(yīng)的算法。

LLM的工作方式是通過連續(xù)預(yù)測并生成token,直到整個(gè)文本生成完畢。它并不是事先確定下一個(gè)token,而是通過復(fù)雜的計(jì)算和神經(jīng)網(wǎng)絡(luò)處理來推測下一個(gè)可能的詞元。輸出結(jié)果是一個(gè)包含多個(gè)可能詞元及其相應(yīng)概率的列表,從中LLM選擇概率最高的詞元進(jìn)行輸出??梢詤⒖枷聢D簡單理解下:

讓你的RAG應(yīng)用更加智能!引入自我反思的大模型 RAG 框架(Self-RAG)-AI.x社區(qū)

LLM最后從多個(gè)候選tokens中選擇“機(jī)器”這個(gè)詞輸出,并將其附加到輸入提示,進(jìn)入下一次生成。而logprobs就是用來保存這里每一步預(yù)測時(shí)的多個(gè)可能的token概率(取對數(shù),所以叫對數(shù)概率).

我們再來看下 OpenAI API 返回的一個(gè)結(jié)果示例:

{
  "id": "copl-6yE4TGqItUpYJ6xYcIzY6",
  "object": "text_completion",
  "created": 1723073722,
  "model": "davinci",
  "choices": [
    {
      "text": " I'm good, thanks!",
      "index": 0,
      "logprobs": {
        "tokens": [" I'm", " good", ",", " thanks", "!"],
        "token_logprobs": [-0.1, -0.05, -0.2, -0.3, -0.15],
        "top_logprobs": [
          {
            " I'm": -0.1,
            " I am": -2.3,
            " I": -3.1
          },
          {
            " good": -0.05,
            " fine": -1.5,
            " great": -2.0
          },
          {
            ",": -0.2,
            ".": -2.5,
            "!": -3.0
          },
          {
            " thanks": -0.3,
            " thank you": -1.8,
            " thank": -2.6
          },
          {
            "!": -0.15,
            ".": -1.9,
            "?": -2.7
          }
        ],
        "text_offset": [5, 9, 14, 15, 21]
      },
      "finish_reason": "length"
    }
  ],
  "usage": {
    "prompt_tokens": 5,
    "completion_tokens": 5,
    "total_tokens": 10
  }
}

在這個(gè)示例中,logprobs 參數(shù)的輸出如下:

  • tokens:生成的 token 列表 [" I’m", " good", ",", " thanks", "!"]
  • token_logprobs:每個(gè)生成的 token 的對數(shù)概率值 [-0.1, -0.05, -0.2, -0.3, -0.15]
  • top_logprobs:每個(gè)生成的 token 的前幾名候選 token 的對數(shù)概率值及其對應(yīng)的 token,例如第一個(gè) token??I’m??的前幾名候選 token 及其對數(shù)概率值為??{" I’m": -0.1, " I am": -2.3, " I": -3.1}??
  • text_offset:每個(gè) token 在生成文本中的偏移量 [5, 9, 14, 15, 21]

在Self-RAG中,評估函數(shù)使用logprobs參數(shù)來計(jì)算IsREL、IsSUP和IsUSE反射標(biāo)記的分?jǐn)?shù)。這里給出計(jì)算公式,數(shù)學(xué)不好的可以跳過:

  • 知識相關(guān)度:s(ISREL) = p(ISREL = RELEVANT) / (p(ISREL = RELEVANT) + p(ISREL = IRRELEVANT)),即用“relevant”token的概率占本類型兩種token的概率和的比例
  • 響應(yīng)支持度:s(ISSUP) = p(ISSUP = FULLY) / S + 0.5 * p(ISSUP = PARTIALLY) / S,即用“fully supported”token的概率占本類型三種類型token概率和的比例,加上“partially supported”token的概率所占比例。但后者要乘以權(quán)重0.5
  • 響應(yīng)有效性:s(ISUSE) = (∑i wi * p(ISUSE = i)) / S,用本類型的5種類型token的概率占總概率的比例乘以對應(yīng)的權(quán)重(分別為從-1到1不等),然后求和

好了,Self-RAG 基本的原理就先分享到這,下一篇文章會(huì)分享如何實(shí)現(xiàn)一個(gè)真正的Self-RAG應(yīng)用。


本文轉(zhuǎn)載自公眾號AI 博物院 作者:longyunfeigu

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


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