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

大語(yǔ)言模型評(píng)測(cè)中的評(píng)價(jià)指標(biāo):方法、基準(zhǔn)和最佳實(shí)踐

發(fā)布于 2024-12-6 07:22
瀏覽
0收藏

無(wú)論是通過(guò)微調(diào)提高模型準(zhǔn)確性,還是增強(qiáng)基于檢索的生成(RAG)系統(tǒng)的上下文相關(guān)性,對(duì)于任何希望構(gòu)建魯棒的大語(yǔ)言模型(LLM)應(yīng)用的人來(lái)說(shuō),評(píng)估 LLM 輸出都是至關(guān)重要的。但對(duì)許多人而言,LLM 評(píng)估仍然是一項(xiàng)具有挑戰(zhàn)性的任務(wù)。了解如何為你的用例開(kāi)發(fā)和選擇合適的 LLM 評(píng)估指標(biāo)集,對(duì)于構(gòu)建一個(gè)魯棒的 LLM 評(píng)估系統(tǒng)至關(guān)重要。

本文將教你關(guān)于 LLM 評(píng)估指標(biāo)需要了解的一切,包含代碼示例。我們將深入探討:

  • 什么是LLM 評(píng)估指標(biāo),如何使用它們來(lái)評(píng)估 LLM 系統(tǒng),常見(jiàn)的問(wèn)題,以及優(yōu)秀 LLM 評(píng)估指標(biāo)的特點(diǎn)。
  • 計(jì)算LLM 評(píng)估指標(biāo)分?jǐn)?shù)的各種不同方法,以及為什么 LLM-as-a-judge 是 LLM 評(píng)估的最佳方法。
  • 如何在代碼中使用 DeepEval(?https://github.com/confident-ai/deepeval)。

什么是大語(yǔ)言模型評(píng)估指標(biāo)?

LLM 評(píng)估指標(biāo),如答案正確性、語(yǔ)義相似性和幻覺(jué)等表現(xiàn)情況,是根據(jù)你關(guān)心的維度對(duì) LLM 系統(tǒng)的輸出進(jìn)行評(píng)分的指標(biāo)。它們對(duì) LLM 評(píng)估至關(guān)重要,因?yàn)樗鼈冇兄诹炕煌?LLM 系統(tǒng)的性能。

大語(yǔ)言模型評(píng)測(cè)中的評(píng)價(jià)指標(biāo):方法、基準(zhǔn)和最佳實(shí)踐-AI.x社區(qū)

以下是在將 LLM 系統(tǒng)投入生產(chǎn)之前最可能需要的最重要和最常見(jiàn)的指標(biāo):

  1. **答案相關(guān)性:**確定 LLM 輸出是否能以信息豐富和簡(jiǎn)潔的方式回答給定的輸入。
  2. **正確性:**根據(jù)某些基本事實(shí),確定 LLM 輸出是否正確。
  3. **幻覺(jué):**確定 LLM 輸出是否包含虛假或編造的信息。
  4. **上下文相關(guān)性:**確定基于 RAG 的 LLM 系統(tǒng)中的檢索器是否能為 LLM 提取最相關(guān)的信息作為上下文。
  5. **責(zé)任指標(biāo):**包括偏見(jiàn)和毒性等指標(biāo),確定 LLM 輸出是否包含(通常)有害和冒犯性的內(nèi)容。
  6. **任務(wù)特定指標(biāo):**包括摘要等指標(biāo),通常包含根據(jù)用例定制的標(biāo)準(zhǔn)。

雖然大多數(shù)指標(biāo)是通用且必要的,但它們不足以針對(duì)特定場(chǎng)景的問(wèn)題。這就是為什么你至少需要一個(gè)定制的任務(wù)特定指標(biāo),以使你的 LLM 評(píng)估管道做好投入生產(chǎn)的準(zhǔn)備(正如你稍后在 G-Eval 部分將看到的)。例如,如果你的 LLM 應(yīng)用程序旨在總結(jié)新聞文章的內(nèi)容,你將需要一個(gè)定制的 LLM 評(píng)估指標(biāo),根據(jù)以下標(biāo)準(zhǔn)進(jìn)行評(píng)分:

  1. 摘要是否包含原始文本的足夠信息。
  2. 摘要是否包含與原始文本相矛盾或隨想的內(nèi)容。

此外,如果你的 LLM 應(yīng)用程序具有基于 RAG 的架構(gòu),你可能還需要對(duì)檢索上下文的質(zhì)量進(jìn)行評(píng)分。關(guān)鍵是,LLM 評(píng)估指標(biāo)根據(jù)它設(shè)計(jì)執(zhí)行的任務(wù)評(píng)估 LLM 應(yīng)用程序。

優(yōu)秀的評(píng)估指標(biāo)具有以下特點(diǎn):

  1. 定量化。在評(píng)估手頭的任務(wù)時(shí),指標(biāo)應(yīng)始終計(jì)算分?jǐn)?shù)。這種方法使你能夠設(shè)置最低通過(guò)閾值,以確定你的 LLM 應(yīng)用程序是否"足夠好",并允許你監(jiān)控這些分?jǐn)?shù)隨著迭代和改進(jìn)實(shí)現(xiàn)而隨時(shí)間變化。
  2. 可靠。盡管 LLM 輸出可能不可預(yù)測(cè),但你最不希望的是 LLM 評(píng)估指標(biāo)同樣不可靠。因此,盡管使用 LLM 評(píng)估的指標(biāo)(即LLM-as-a-judge或 LLM-Evals),如 G-Eval,比傳統(tǒng)的評(píng)分方法更準(zhǔn)確,但它們通常不一致,這是大多數(shù) LLM-Evals 的不足之處。
  3. 準(zhǔn)確。如果分?jǐn)?shù)不能真正代表你的 LLM 應(yīng)用程序的性能,可靠的分?jǐn)?shù)就毫無(wú)意義。事實(shí)上,讓優(yōu)秀的 LLM 評(píng)估指標(biāo)變得卓越的秘訣是使其盡可能符合人類(lèi)的期望。

那么問(wèn)題就變成了,LLM 評(píng)估指標(biāo)如何計(jì)算可靠和準(zhǔn)確的分?jǐn)?shù)?

計(jì)算指標(biāo)分?jǐn)?shù)的不同方法

有許多已建立的方法可用于計(jì)算指標(biāo)分?jǐn)?shù)——有些利用神經(jīng)網(wǎng)絡(luò),包括嵌入模型和 LLM,而其他方法完全基于統(tǒng)計(jì)分析。

大語(yǔ)言模型評(píng)測(cè)中的評(píng)價(jià)指標(biāo):方法、基準(zhǔn)和最佳實(shí)踐-AI.x社區(qū)

我將逐一介紹每種方法,并在本節(jié)結(jié)束時(shí)討論最佳方法,所以請(qǐng)繼續(xù)閱讀!

統(tǒng)計(jì)類(lèi)評(píng)分器

在我們開(kāi)始之前,我想說(shuō)統(tǒng)計(jì)評(píng)分方法在我看來(lái)不是必須學(xué)習(xí)的,所以如果你時(shí)間緊迫,請(qǐng)直接跳到"G-Eval"部分。這是因?yàn)槊慨?dāng)需要推理時(shí),統(tǒng)計(jì)方法的表現(xiàn)都很差,這使得它作為大多數(shù) LLM 評(píng)估標(biāo)準(zhǔn)的評(píng)分器太不準(zhǔn)確了。

簡(jiǎn)單介紹一下它們:

  • BLEU**(雙語(yǔ)評(píng)估替補(bǔ))**評(píng)分器根據(jù)標(biāo)注的基本事實(shí)(或預(yù)期輸出)評(píng)估 LLM 應(yīng)用程序輸出。它計(jì)算 LLM 輸出和預(yù)期輸出之間每個(gè)匹配 n-gram(n 個(gè)連續(xù)單詞)的精確度,以計(jì)算它們的幾何平均值,并在需要時(shí)應(yīng)用簡(jiǎn)潔懲罰。
  • ROUGE**(面向召回的摘要評(píng)估替補(bǔ))**評(píng)分器主要用于評(píng)估 NLP 模型生成的文本摘要,通過(guò)比較 LLM 輸出和預(yù)期輸出之間的 n-gram 重疊來(lái)計(jì)算召回率。它確定參考文本中存在于 LLM 輸出中的 n-gram 的比例(0-1)。
  • **METEOR(考慮顯式排序的翻譯評(píng)估指標(biāo))**評(píng)分器更全面,因?yàn)樗ㄟ^(guò)評(píng)估精確度(n-gram 匹配)和召回率(n-gram 重疊)來(lái)計(jì)算分?jǐn)?shù),并根據(jù) LLM 輸出和預(yù)期輸出之間的詞序差異進(jìn)行調(diào)整。它還利用 WordNet 等外部語(yǔ)言數(shù)據(jù)庫(kù)來(lái)考慮同義詞。最終得分是精確度和召回率的調(diào)和平均值,并對(duì)排序差異進(jìn)行懲罰。
  • Levenshtein 距離(或編輯距離,你可能將其識(shí)別為 LeetCode 上的一個(gè)困難 DP 問(wèn)題)評(píng)分器計(jì)算將一個(gè)單詞或文本字符串更改為另一個(gè)所需的最小單字符編輯(插入、刪除或替換)次數(shù),這對(duì)于評(píng)估拼寫(xiě)更正或其他字符精確對(duì)齊至關(guān)重要的任務(wù)很有用。

由于純統(tǒng)計(jì)評(píng)分器幾乎不考慮任何語(yǔ)義,并且推理能力非常有限,因此它們不夠準(zhǔn)確,無(wú)法評(píng)估通常很長(zhǎng)且復(fù)雜的 LLM 輸出。

基于模型的評(píng)分器

純統(tǒng)計(jì)的評(píng)分器是可靠的,但不準(zhǔn)確,因?yàn)樗鼈冸y以考慮語(yǔ)義。在本節(jié)中,情況恰恰相反——純粹依賴(lài) NLP 模型的評(píng)分器相對(duì)更準(zhǔn)確,但由于其概率性質(zhì),也更不可靠。

這有可能點(diǎn)難以理解,但是不基于 LLM 的評(píng)分器表現(xiàn)比 LLM-as-a-judge 差,也是由于與統(tǒng)計(jì)評(píng)分器相同的原因。非 LLM 評(píng)分器包括:

  • NLI評(píng)分器,它使用自然語(yǔ)言推理模型(一種 NLP 分類(lèi)模型)對(duì) LLM 輸出是否與給定參考文本在邏輯上一致(蘊(yùn)涵)、矛盾還是無(wú)關(guān)(中性)進(jìn)行分類(lèi)。分?jǐn)?shù)通常在蘊(yùn)涵(值為 1)和矛盾(值為 0)之間,提供了一種邏輯一致性的度量。
  • BLEURT(利用 Transformers 表示的雙語(yǔ)評(píng)估替補(bǔ))評(píng)分器,它使用預(yù)訓(xùn)練模型(如 BERT)根據(jù)一些預(yù)期輸出對(duì) LLM 輸出進(jìn)行評(píng)分。

除了不一致的分?jǐn)?shù)外,現(xiàn)實(shí)是這些方法存在幾個(gè)缺點(diǎn)。例如,NLI 評(píng)分器在處理長(zhǎng)文本時(shí)也可能難以準(zhǔn)確,而 BLEURT 受其訓(xùn)練數(shù)據(jù)的質(zhì)量和代表性的限制。所以在這里,讓我們討論一下 LLM judges。

G-Eval

G-Eval 是最近從一篇題為"NLG Evaluation using GPT-4 with Better Human Alignment"的論文中開(kāi)發(fā)出來(lái)的框架,它使用 LLM 評(píng)估 LLM 輸出(即 LLM-Evals),是創(chuàng)建任務(wù)特定指標(biāo)的最佳方式之一。

大語(yǔ)言模型評(píng)測(cè)中的評(píng)價(jià)指標(biāo):方法、基準(zhǔn)和最佳實(shí)踐-AI.x社區(qū)

G-Eval 首先使用思維鏈(CoT)生成一系列評(píng)估步驟,然后使用生成的步驟通過(guò)表單填充范式(這只是一種花哨的說(shuō)法,即 G-Eval 需要幾條信息才能工作)確定最終得分。例如,使用 G-Eval 評(píng)估 LLM 輸出一致性涉及構(gòu)建一個(gè)包含要評(píng)估的標(biāo)準(zhǔn)和文本的提示,以生成評(píng)估步驟,然后使用 LLM 根據(jù)這些步驟輸出 1 到 5 的分?jǐn)?shù)。

讓我們通過(guò)這個(gè)例子來(lái)運(yùn)行 G-Eval 算法。首先,生成評(píng)估步驟:

  1. 向你選擇的 LLM 介紹一個(gè)評(píng)估任務(wù)(例如,根據(jù)連貫性從 1-5 對(duì)這個(gè)輸出進(jìn)行評(píng)分)
  2. 給出你的標(biāo)準(zhǔn)定義(例如,"連貫性——實(shí)際輸出中所有句子的整體質(zhì)量")。

在生成一系列評(píng)估步驟之后:

  1. 通過(guò)將評(píng)估步驟與評(píng)估步驟中列出的所有參數(shù)連接起來(lái)創(chuàng)建一個(gè)提示(例如,如果你要評(píng)估 LLM 輸出的連貫性,LLM 輸出將是一個(gè)必需的參數(shù))。
  2. 在提示的最后,要求它生成 1-5 之間的分?jǐn)?shù),其中 5 優(yōu)于 1。
  3. (可選)獲取 LLM 輸出標(biāo)記的概率,以規(guī)范化分?jǐn)?shù),并將其加權(quán)總和作為最終結(jié)果。

第 3 步是可選的,因?yàn)橐@得輸出標(biāo)記的概率,你需要訪問(wèn)原始模型嵌入,這不能保證所有模型接口都可用。然而,本文引入了這一步,因?yàn)樗峁┝烁?xì)粒度的分?jǐn)?shù),并最小化了 LLM 評(píng)分中的偏差(正如本文所述,在 1-5 的量表中,3 被認(rèn)為具有更高的標(biāo)記概率)。

以下是論文中的結(jié)果,顯示了 G-Eval 如何優(yōu)于本文前面提到的所有傳統(tǒng)的非 LLM 評(píng)估:

大語(yǔ)言模型評(píng)測(cè)中的評(píng)價(jià)指標(biāo):方法、基準(zhǔn)和最佳實(shí)踐-AI.x社區(qū)

Spearman 和 Kendall-Tau 相關(guān)性越高,表示與人類(lèi)判斷的一致性越高。

G-Eval 很棒,因?yàn)樽鳛?LLM-Eval,它能夠考慮 LLM 輸出的完整語(yǔ)義,使其更加準(zhǔn)確。這很有道理——想想看,非 LLM 評(píng)估使用的評(píng)分器遠(yuǎn)不如 LLM 能力強(qiáng),怎么可能理解 LLM 生成的文本的全部范圍?

盡管與同類(lèi)產(chǎn)品相比,G-Eval 與人類(lèi)判斷的相關(guān)性要高得多,但它仍然可能不可靠,因?yàn)橐?LLM 提供分?jǐn)?shù)無(wú)疑是主觀的。

話(huà)雖如此,鑒于 G-Eval 的評(píng)估標(biāo)準(zhǔn)可以有多靈活,已經(jīng)將 G-Eval 作為DeepEval(一個(gè)開(kāi)源 LLM 評(píng)估框架)的指標(biāo)實(shí)現(xiàn)了(其中包括原始論文中的歸一化技術(shù))。

# 安裝 pip install deepeval # 將OpenAI API密鑰設(shè)置為環(huán)境變量 export OPENAI_API_KEY="..."

from deepeval.test_case import LLMTestCase, LLMTestCaseParams from deepeval.metrics import GEval test_case = LLMTestCase(input="input to your LLM", actual_output="your LLM output") coherence_metric = GEval( name="Coherence", criteria="Coherence - the collective quality of all sentences in the actual output", evaluation_params=[LLMTestCaseParams.ACTUAL_OUTPUT], ) coherence_metric.measure(test_case) print(coherence_metric.score) print(coherence_metric.reason)

使用 LLM-Eval 的另一個(gè)主要優(yōu)勢(shì)是,LLM 能夠?yàn)槠湓u(píng)估分?jǐn)?shù)生成理由。

Prometheus

Prometheus 是一個(gè)完全開(kāi)源的 LLM,當(dāng)提供適當(dāng)?shù)膮⒖假Y料(參考答案、評(píng)分細(xì)則)時(shí),其評(píng)估能力可與 GPT-4 相媲美。它也像 G-Eval 一樣與用例無(wú)關(guān)。Prometheus 是一種語(yǔ)言模型,使用Llama-2-Chat作為基礎(chǔ)模型,并在Feedback Collection中的 100K 反饋(由 GPT-4 生成)上進(jìn)行微調(diào)。

以下是prometheus 研究論文的簡(jiǎn)要結(jié)果。

大語(yǔ)言模型評(píng)測(cè)中的評(píng)價(jià)指標(biāo):方法、基準(zhǔn)和最佳實(shí)踐-AI.x社區(qū)

Prometheus 遵循與 G-Eval 相同的原則。但是,有幾個(gè)區(qū)別:

  1. G-Eval 是使用 GPT-3.5/4 的框架,而 Prometheus 是為評(píng)估而微調(diào)的 LLM。
  2. G-Eval 通過(guò) CoTs 生成評(píng)分細(xì)則/評(píng)估步驟,而 Prometheus 的評(píng)分細(xì)則是在提示中提供的。
  3. Prometheus 需要參考/示例評(píng)估結(jié)果。

盡管我個(gè)人還沒(méi)有嘗試過(guò),Prometheus 在 hugging face 上可用。我沒(méi)有嘗試實(shí)現(xiàn)它的原因是,Prometheus 旨在使評(píng)估開(kāi)源,而不是依賴(lài) OpenAI 的 GPT 等專(zhuān)有模型。對(duì)于旨在構(gòu)建可用的最佳 LLM 評(píng)估的人來(lái)說(shuō),這不是一個(gè)好的選擇。

結(jié)合統(tǒng)計(jì)和基于模型的評(píng)分器

到目前為止,我們已經(jīng)看到統(tǒng)計(jì)方法是可靠的,但不準(zhǔn)確,而非 LLM 模型的方法不太可靠,但更準(zhǔn)確。與上一節(jié)類(lèi)似,有一些非 LLM 評(píng)分器,例如:

  • **BERTScore **評(píng)分器,它依賴(lài)于像 BERT 這樣的預(yù)訓(xùn)練語(yǔ)言模型,并計(jì)算參考文本和生成文本中單詞的上下文嵌入之間的余弦相似度。然后將這些相似度聚合以產(chǎn)生最終分?jǐn)?shù)。BERTScore 越高,表示 LLM 輸出和參考文本之間語(yǔ)義重疊的程度越高。
  • **MoverScore **評(píng)分器,它首先使用嵌入模型,特別是像 BERT 這樣的預(yù)訓(xùn)練語(yǔ)言模型,獲得參考文本和生成文本的深度情境化單詞嵌入,然后使用 Earth Mover's Distance(EMD)來(lái)計(jì)算將 LLM 輸出中的單詞分布轉(zhuǎn)換為參考文本中的單詞分布所必須付出的最小代價(jià)。

BERTScore 和 MoverScore 評(píng)分器都容易受到來(lái)自像 BERT 這樣的預(yù)訓(xùn)練模型的上下文嵌入的上下文感知和偏差的影響。但 LLM-Evals 呢?

GPTScore

與 G-Eval 直接使用表單填充范式執(zhí)行評(píng)估任務(wù)不同,GPTScore 使用生成目標(biāo)文本的條件概率作為評(píng)估指標(biāo)。

大語(yǔ)言模型評(píng)測(cè)中的評(píng)價(jià)指標(biāo):方法、基準(zhǔn)和最佳實(shí)踐-AI.x社區(qū)

SelfCheckGPT

SelfCheckGPT 有點(diǎn)奇怪。它是一種用于事實(shí)核查 LLM 輸出的簡(jiǎn)單抽樣方法。它假設(shè)幻覺(jué)輸出是不可重現(xiàn)的,而如果 LLM 對(duì)給定概念有知識(shí),抽樣響應(yīng)可能是相似的,并包含一致的事實(shí)。

SelfCheckGPT 是一種有趣的方法,因?yàn)樗箼z測(cè)幻覺(jué)成為一個(gè)無(wú)參考的過(guò)程,這在生產(chǎn)環(huán)境中非常有用。

大語(yǔ)言模型評(píng)測(cè)中的評(píng)價(jià)指標(biāo):方法、基準(zhǔn)和最佳實(shí)踐-AI.x社區(qū)

但是,盡管你會(huì)注意到 G-Eval 和 Prometheus 與用例無(wú)關(guān),但 SelfCheckGPT 則不然。它只適用于幻覺(jué)檢測(cè),而不適用于評(píng)估其他用例,如摘要、連貫性等。

QAG Score

QAG(問(wèn)答生成)分?jǐn)?shù)是一種利用 LLM 強(qiáng)大推理能力可靠評(píng)估 LLM 輸出的評(píng)分器。它使用封閉式問(wèn)題(可以生成或預(yù)設(shè))的答案(通常是"是"或"否")來(lái)計(jì)算最終的指標(biāo)分?jǐn)?shù)。之所以可靠,是因?yàn)樗皇褂?LLM 直接生成分?jǐn)?shù)。例如,如果你想計(jì)算忠實(shí)度(衡量 LLM 輸出是否是幻覺(jué))的分?jǐn)?shù),你可以:

  1. 使用 LLM 提取輸出中所有的聲明。
  2. 對(duì)于每個(gè)聲明,詢(xún)問(wèn)基本事實(shí)是否同意("是")或不同意("否")所做的聲明。

因此,對(duì)于這個(gè)示例 LLM 輸出:

馬丁·路德·金是著名的民權(quán)領(lǐng)袖,于 1968 年 4 月 4 日在田納西州孟菲斯的洛林汽車(chē)旅館遇刺身亡。他當(dāng)時(shí)在孟菲斯支持罷工的衛(wèi)生工人,在站在汽車(chē)旅館二樓陽(yáng)臺(tái)上時(shí),被一名逃犯詹姆斯·厄爾·雷致命射殺。

一個(gè)聲明可能是:

馬丁·路德·金于 1968 年 4 月 4 日遇刺身亡

相應(yīng)的封閉式問(wèn)題是:

馬丁·路德·金是否于 1968 年 4 月 4 日遇刺身亡?

然后,你會(huì)拿這個(gè)問(wèn)題,詢(xún)問(wèn)基本事實(shí)是否同意這個(gè)聲明。最后,你將得到一些"是"和"否"的答案,你可以通過(guò)你選擇的一些數(shù)學(xué)公式來(lái)計(jì)算分?jǐn)?shù)。

就忠實(shí)度而言,如果我們將其定義為 LLM 輸出中與基本事實(shí)一致的聲明的比例,可以很容易地通過(guò)將準(zhǔn)確(真實(shí))聲明的數(shù)量除以 LLM 做出的總聲明數(shù)量來(lái)計(jì)算。由于我們沒(méi)有使用 LLM 直接生成評(píng)估分?jǐn)?shù),而是利用其更強(qiáng)的推理能力,所以我們得到的分?jǐn)?shù)既準(zhǔn)確又可靠。

選擇評(píng)估指標(biāo)

選擇使用哪種 LLM 評(píng)估指標(biāo)取決于 LLM 應(yīng)用程序的用例和架構(gòu)。

例如,如果你正在 OpenAI 的 GPT 模型之上構(gòu)建一個(gè)基于 RAG 的客戶(hù)支持聊天機(jī)器人,你將需要使用幾個(gè) RAG 指標(biāo)(例如,忠實(shí)度、答案相關(guān)性、上下文精確度),而如果你正在微調(diào)你自己的 Mistral 7B,你將需要諸如偏見(jiàn)等指標(biāo),以確保 LLM 決策公正。

在這最后一節(jié)中,我們將討論你絕對(duì)需要了解的評(píng)估指標(biāo)。(作為獎(jiǎng)勵(lì),每個(gè)指標(biāo)的實(shí)現(xiàn)。)

RAG 指標(biāo)

RAG 作為一種方法,為 LLM 提供額外的上下文以生成定制輸出,非常適合構(gòu)建聊天機(jī)器人。它由兩個(gè)組件組成——檢索器和生成器。

大語(yǔ)言模型評(píng)測(cè)中的評(píng)價(jià)指標(biāo):方法、基準(zhǔn)和最佳實(shí)踐-AI.x社區(qū)

以下是 RAG 工作流的典型工作方式:

  1. RAG 系統(tǒng)接收輸入。
  2. 檢索器使用此輸入在知識(shí)庫(kù)(現(xiàn)在大多數(shù)情況下是向量數(shù)據(jù)庫(kù))中執(zhí)行向量搜索。
  3. 生成器接收檢索上下文和用戶(hù)輸入作為額外的上下文,以生成定制輸出。

有一點(diǎn)要記住——高質(zhì)量的 LLM 輸出是優(yōu)秀檢索器和生成器的產(chǎn)物。 因此,優(yōu)秀的 RAG 指標(biāo)側(cè)重于以可靠和準(zhǔn)確的方式評(píng)估 RAG 檢索器或生成器。(事實(shí)上,RAG 指標(biāo)最初被設(shè)計(jì)為參考無(wú)關(guān)的指標(biāo),這意味著它們不需要基本事實(shí),即使在生產(chǎn)環(huán)境中也可以使用。)

忠實(shí)度

忠實(shí)度是一種 RAG 指標(biāo),用于評(píng)估 RAG 管道中的 LLM/生成器是否生成與檢索上下文中呈現(xiàn)的信息在事實(shí)上一致的 LLM 輸出。但我們應(yīng)該使用哪種評(píng)分器來(lái)評(píng)估忠實(shí)度指標(biāo)呢?

劇透警告:QAG 評(píng)分器是 RAG 指標(biāo)的最佳評(píng)分器,因?yàn)樗瞄L(zhǎng)評(píng)估目標(biāo)明確的任務(wù)。 對(duì)于忠實(shí)度,如果你將其定義為 LLM 輸出中關(guān)于檢索上下文的真實(shí)聲明的比例,我們可以通過(guò)以下算法使用 QAG 計(jì)算忠實(shí)度:

  1. 使用 LLM 提取輸出中的所有聲明。
  2. 對(duì)于每個(gè)聲明,檢查它是否與檢索上下文中的每個(gè)單獨(dú)節(jié)點(diǎn)一致或矛盾。在這種情況下,QAG 中的封閉式問(wèn)題將類(lèi)似于:"給定的聲明是否與參考文本一致",其中"參考文本"將是每個(gè)單獨(dú)的檢索節(jié)點(diǎn)。(注意,你需要將答案限制為"是"、"否"或"不知道"。"不知道"狀態(tài)代表檢索上下文不包含相關(guān)信息以給出是/否答案的邊緣情況。)
  3. 將真實(shí)聲明("是"和"不知道")的總數(shù)相加,然后除以所做聲明的總數(shù)。

這種方法通過(guò)使用 LLM 的高級(jí)推理能力來(lái)確保準(zhǔn)確性,同時(shí)避免 LLM 生成分?jǐn)?shù)的不可靠性,使其成為比 G-Eval 更好的評(píng)分方法。

如果你覺(jué)得這太復(fù)雜而無(wú)法實(shí)現(xiàn),你可以使用 DeepEval。

# 安裝 pip install deepeval # 將OpenAI API密鑰設(shè)置為環(huán)境變量 export OPENAI_API_KEY="..."

from deepeval.metrics import FaithfulnessMetric from deepeval.test_case import LLMTestCase test_case=LLMTestCase( input="...", actual_output="...", retrieval_cnotallow=["..."] ) metric = FaithfulnessMetric(threshold=0.5) metric.measure(test_case) print(metric.score) print(metric.reason) print(metric.is_successful())

DeepEval 將評(píng)估視為測(cè)試用例。這里,actual_output 就是你的 LLM 輸出。此外,由于忠實(shí)度是一個(gè) LLM-Eval,你可以獲得最終計(jì)算分?jǐn)?shù)的推理。

答案相關(guān)性

答案相關(guān)性是一種 RAG 指標(biāo),用于評(píng)估 RAG 生成器是否輸出簡(jiǎn)潔的答案,可以通過(guò)確定 LLM 輸出中與輸入相關(guān)的句子的比例來(lái)計(jì)算(即將相關(guān)句子的數(shù)量除以總句子數(shù))。

構(gòu)建魯棒的答案相關(guān)性指標(biāo)的關(guān)鍵是考慮檢索上下文,因?yàn)轭~外的上下文可能證明一個(gè)看似無(wú)關(guān)的句子的相關(guān)性。以下是答案相關(guān)性指標(biāo)的實(shí)現(xiàn):

from deepeval.metrics import AnswerRelevancyMetric from deepeval.test_case import LLMTestCase test_case=LLMTestCase( input="...", actual_output="...", retrieval_cnotallow=["..."] ) metric = AnswerRelevancyMetric(threshold=0.5) metric.measure(test_case) print(metric.score) print(metric.reason) print(metric.is_successful())

上下文精確度

上下文精確度是一種 RAG 指標(biāo),用于評(píng)估 RAG 管道檢索器的質(zhì)量。當(dāng)我們談?wù)撋舷挛闹笜?biāo)時(shí),我們主要關(guān)注檢索上下文的相關(guān)性。高的上下文精確度分?jǐn)?shù)意味著檢索上下文中相關(guān)的節(jié)點(diǎn)排名高于不相關(guān)的節(jié)點(diǎn)。這很重要,因?yàn)?LLM 對(duì)出現(xiàn)在檢索上下文前面的節(jié)點(diǎn)中的信息賦予更高的權(quán)重,這會(huì)影響最終輸出的質(zhì)量。

from deepeval.metrics import ContextualPrecisionMetric from deepeval.test_case import LLMTestCase test_case=LLMTestCase( input="...", actual_output="...", # Expected output是LLM的"理想"輸出,它是 # 上下文指標(biāo)所需的額外參數(shù) expected_output="...", retrieval_cnotallow=["..."] ) metric = ContextualPrecisionMetric(threshold=0.5) metric.measure(test_case) print(metric.score) print(metric.reason) print(metric.is_successful())

上下文召回率

上下文精確度是評(píng)估基于檢索器的生成器(RAG)的另一個(gè)指標(biāo)。它通過(guò)確定預(yù)期輸出或基本事實(shí)中可以歸因于檢索上下文中節(jié)點(diǎn)的句子的比例來(lái)計(jì)算。分?jǐn)?shù)越高,表示檢索到的信息與預(yù)期輸出之間的一致性越高,表明檢索器有效地獲取相關(guān)和準(zhǔn)確的內(nèi)容,以幫助生成器產(chǎn)生上下文適當(dāng)?shù)捻憫?yīng)。

from deepeval.metrics import ContextualRecallMetric from deepeval.test_case import LLMTestCase test_case=LLMTestCase( input="...", actual_output="...", # Expected output是LLM的"理想"輸出,它是 # 上下文指標(biāo)所需的額外參數(shù) expected_output="...", retrieval_cnotallow=["..."] ) metric = ContextualRecallMetric(threshold=0.5) metric.measure(test_case) print(metric.score) print(metric.reason) print(metric.is_successful())

上下文相關(guān)性

可能是最容易理解的指標(biāo),上下文相關(guān)性簡(jiǎn)單地說(shuō)就是檢索上下文中與給定輸入相關(guān)的句子的比例。

from deepeval.metrics import ContextualRelevancyMetric from deepeval.test_case import LLMTestCase test_case=LLMTestCase( input="...", actual_output="...", retrieval_cnotallow=["..."] ) metric = ContextualRelevancyMetric(threshold=0.5) metric.measure(test_case) print(metric.score) print(metric.reason) print(metric.is_successful())

微調(diào)指標(biāo)

當(dāng)我說(shuō)"微調(diào)指標(biāo)"時(shí),我的意思是評(píng)估 LLM 本身而不是整個(gè)系統(tǒng)的指標(biāo)。撇開(kāi)成本和性能優(yōu)勢(shì)不談,LLM 通常進(jìn)行微調(diào)以:

  1. 融入額外的上下文知識(shí)。
  2. 調(diào)整其行為。

幻覺(jué)

你們中的一些人可能認(rèn)識(shí)到這與忠實(shí)度指標(biāo)相同。盡管相似,但微調(diào)中的幻覺(jué)更加復(fù)雜,因?yàn)橥ǔ:茈y為給定輸出確定確切的基本事實(shí)。為了解決這個(gè)問(wèn)題,我們可以利用 SelfCheckGPT 的零樣本方法來(lái)采樣 LLM 輸出中幻覺(jué)句子的比例。

from deepeval.metrics import HallucinationMetric from deepeval.test_case import LLMTestCase test_case=LLMTestCase( input="...", actual_output="...", # 請(qǐng)注意,"context"與"retrieval_context"不同。 # 雖然檢索上下文更關(guān)注RAG管道, # 但上下文是給定輸入的理想檢索結(jié)果, # 通常位于用于微調(diào)LLM的數(shù)據(jù)集中 cnotallow=["..."], ) metric = HallucinationMetric(threshold=0.5) metric.measure(test_case) print(metric.score) print(metric.is_successful())

但是,這種方法可能會(huì)變得非常昂貴,所以目前我建議使用 NLI 評(píng)分器,并手動(dòng)提供一些上下文作為基本事實(shí)。

毒性

毒性指標(biāo)評(píng)估文本包含冒犯、有害或不適當(dāng)語(yǔ)言的程度??梢允褂矛F(xiàn)成的預(yù)訓(xùn)練模型(如 Detoxify)來(lái)評(píng)估毒性,這些模型使用 BERT 評(píng)分器。

from deepeval.metrics import ToxicityMetric from deepeval.test_case import LLMTestCase metric = ToxicityMetric(threshold=0.5) test_case = LLMTestCase( input="What if these shoes don't fit?", # 將此替換為L(zhǎng)LM應(yīng)用程序的實(shí)際輸出 actual_output = "We offer a 30-day full refund at no extra cost." ) metric.measure(test_case) print(metric.score)

但是,這種方法可能不準(zhǔn)確,因?yàn)?與咒罵、侮辱或褻瀆相關(guān)的詞語(yǔ)出現(xiàn)在評(píng)論中,無(wú)論作者的語(yǔ)氣或意圖如何(例如幽默/自嘲),都可能被歸類(lèi)為有毒"。

在這種情況下,你可能要考慮使用 G-Eval 來(lái)定義毒性的自定義標(biāo)準(zhǔn)。事實(shí)上,G-Eval 不受用例限制的特性是我如此喜歡它的主要原因。

from deepeval.metrics import GEval from deepeval.test_case import LLMTestCase test_case = LLMTestCase( input="What if these shoes don't fit?", # 將此替換為L(zhǎng)LM應(yīng)用程序的實(shí)際輸出 actual_output = "We offer a 30-day full refund at no extra cost." ) toxicity_metric = GEval( name="Toxicity", criteria="Toxicity - determine if the actual outout contains any non-humorous offensive, harmful, or inappropriate language", evaluation_params=[LLMTestCaseParams.ACTUAL_OUTPUT], ) metric.measure(test_case) print(metric.score)

偏見(jiàn)

偏見(jiàn)指標(biāo)評(píng)估文本內(nèi)容中的政治、性別和社會(huì)偏見(jiàn)等方面。這對(duì)于自定義 LLM 參與決策過(guò)程的應(yīng)用程序尤其重要。例如,在銀行貸款審批中提供無(wú)偏見(jiàn)的建議,或在招聘中,協(xié)助確定候選人是否應(yīng)該進(jìn)入面試。

與毒性類(lèi)似,偏見(jiàn)可以使用 G-Eval 來(lái)評(píng)估。(但不要誤會(huì),QAG 也可以是毒性和偏見(jiàn)等指標(biāo)的可行評(píng)分器。)

from deepeval.metrics import GEval from deepeval.test_case import LLMTestCase test_case = LLMTestCase( input="What if these shoes don't fit?", # 將此替換為L(zhǎng)LM應(yīng)用程序的實(shí)際輸出 actual_output = "We offer a 30-day full refund at no extra cost." ) toxicity_metric = GEval( name="Bias", criteria="Bias - determine if the actual output contains any racial, gender, or political bias.", evaluation_params=[LLMTestCaseParams.ACTUAL_OUTPUT], ) metric.measure(test_case) print(metric.score)

偏見(jiàn)是一個(gè)高度主觀的問(wèn)題,在不同的地理、地緣政治和地緣社會(huì)環(huán)境中差異很大。例如,在一種文化中被認(rèn)為是中性的語(yǔ)言或表達(dá)方式,在另一種文化中可能具有不同的內(nèi)涵。(這也是為什么小樣本評(píng)估不太適用于偏見(jiàn)的原因。)

一個(gè)潛在的解決方案是為評(píng)估或?yàn)樯舷挛膶W(xué)習(xí)提供非常明確的細(xì)則而微調(diào)定制 LLM,因此,我認(rèn)為偏見(jiàn)是所有指標(biāo)中最難實(shí)施的。

用例特定指標(biāo)

摘要

簡(jiǎn)而言之,所有好的總結(jié):

  1. 與原文在事實(shí)上一致。
  2. 包括原文中的重要信息。

使用 QAG,我們可以計(jì)算事實(shí)一致性和包含性分?jǐn)?shù),以計(jì)算最終的摘要分?jǐn)?shù)。在 DeepEval 中,我們將兩個(gè)中間分?jǐn)?shù)的最小值作為最終摘要分?jǐn)?shù)。

from deepeval.metrics import SummarizationMetric from deepeval.test_case import LLMTestCase # 這是要總結(jié)的原始文本 input = """ The 'inclusion score' is calculated as the percentage of assessment questions for which both the summary and the original document provide a 'yes' answer. This method ensures that the summary not only includes key information from the original text but also accurately represents it. A higher inclusion score indicates a more comprehensive and faithful summary, signifying that the summary effectively encapsulates the crucial points and details from the original content. """ # 這是摘要,用LLM應(yīng)用程序的實(shí)際輸出替換它 actual_output=""" The inclusion score quantifies how well a summary captures and accurately represents key information from the original text, with a higher score indicating greater comprehensiveness. """ test_case = LLMTestCase(input=input, actual_output=actual_output) metric = SummarizationMetric(threshold=0.5) metric.measure(test_case) print(metric.score)

結(jié)論

LLM 評(píng)估指標(biāo)的主要目標(biāo)是量化 LLM(應(yīng)用)的性能,為此有不同的評(píng)分器,有些比其他的更好。對(duì)于 LLM 評(píng)估,使用 LLM 的評(píng)分器(G-Eval、Prometheus、SelfCheckGPT 和 QAG)由于其高推理能力而最準(zhǔn)確,但我們需要采取額外的預(yù)防措施來(lái)確保這些分?jǐn)?shù)是可靠的。

最終,指標(biāo)的選擇取決于 LLM 應(yīng)用程序的用例和實(shí)現(xiàn),其中 RAG 和微調(diào)指標(biāo)是評(píng)估 LLM 輸出的很好起點(diǎn)。對(duì)于更多特定于用例的指標(biāo),你可以使用 G-Eval 和少樣本提示以獲得最準(zhǔn)確的結(jié)果。

本文轉(zhuǎn)載自??芝士AI吃魚(yú)??,作者: 芝士AI吃魚(yú) ????

收藏
回復(fù)
舉報(bào)
回復(fù)
相關(guān)推薦