成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

讓你的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在回答知識密集型問題。然而,這種方法存在兩個主要問題:

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

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

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

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

什么是Self-RAG

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

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

基本流程

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

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

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

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

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

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

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

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

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

按需檢索

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

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

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

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)鍵字,表示這個問題不需要檢索,可以直接返回結(jié)果。

我們再問一個需要檢索的問題:

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)鍵字,表示這個問題需要補充外部知識,即需要檢索。

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

檢索和生成

在這個階段,Self-RAG LLM會生成三種類型的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 在這個階段的生成結(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]

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

評估算法

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

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

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

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

我們再來看下 OpenAI API 返回的一個結(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
  }
}

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

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

在Self-RAG中,評估函數(shù)使用logprobs參數(shù)來計算IsREL、IsSUP和IsUSE反射標(biāo)記的分?jǐn)?shù)。這里給出計算公式,數(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 基本的原理就先分享到這,下一篇文章會分享如何實現(xiàn)一個真正的Self-RAG應(yīng)用。


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

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


?著作權(quán)歸作者所有,如需轉(zhuǎn)載,請注明出處,否則將追究法律責(zé)任
標(biāo)簽
收藏
回復(fù)
舉報
回復(fù)
相關(guān)推薦
主站蜘蛛池模板: 国产精品久久久久久久 | 中文区中文字幕免费看 | 精品久久久久久 | 欧美激情精品久久久久久 | 成人h免费观看视频 | 黄色一级片视频 | 三区四区在线观看 | 欧美一区二区另类 | 国产免费拔擦拔擦8x高清 | 91精品国产乱码久久久 | 国产日韩91 | 欧美黄视频 | 国产精品一区二区电影 | 成人国内精品久久久久一区 | 欧美日韩久 | 91精品国产一区二区三区 | 欧美日韩在线一区二区 | 欧洲成人午夜免费大片 | 久久99精品久久久久久琪琪 | 亚洲欧美在线一区 | 欧美精品一二三 | 视频国产一区 | 亚洲一区二区中文字幕在线观看 | 91色在线视频 | 男女黄网站 | 91观看| 亚洲区视频 | 精品视频一区二区三区在线观看 | 欧美电影网| 久久国产婷婷国产香蕉 | 国产精品a久久久久 | 亚洲欧洲国产视频 | 色久伊人| 日韩美女一区二区三区在线观看 | 在线综合视频 | 99riav3国产精品视频 | 亚洲另类春色偷拍在线观看 | 黄色av网站在线免费观看 | 日本小电影网站 | 亚洲精品影院 | 亚洲天堂久久 |