譯者 | 朱先忠
審校 | 重樓
簡(jiǎn)介
最近,我們團(tuán)隊(duì)推出了LettuceDetect框架,這是一款用于檢索增強(qiáng)生成(RAG)開(kāi)發(fā)管道的輕量級(jí)幻覺(jué)檢測(cè)器。它是一種基于ModernBERT模型構(gòu)建的基于編碼器的模型,根據(jù)MIT許可證發(fā)布,帶有現(xiàn)成的Python包和預(yù)訓(xùn)練模型。
- 是什么:LettuceDetect是一個(gè)標(biāo)記級(jí)檢測(cè)器,可標(biāo)記LLM回答中不受支持的片段。
- 如何使用:在RAGTruth(18k個(gè)樣本)幻覺(jué)語(yǔ)料庫(kù)上進(jìn)行訓(xùn)練,利用ModernBERT模型實(shí)現(xiàn)長(zhǎng)達(dá)4k個(gè)標(biāo)記的上下文長(zhǎng)度。
- 開(kāi)發(fā)原因:它解決了(1)先前僅編碼器模型中的上下文窗口限制;以及(2)基于LLM的檢測(cè)器的高計(jì)算成本。
- 此框架的亮點(diǎn)主要體現(xiàn)在:
A.在RAGTruth幻覺(jué)語(yǔ)料庫(kù)上擊敗了之前基于編碼器的模型(例如Luna)。
B.尺寸僅為其一小部分,卻超越了經(jīng)過(guò)微調(diào)的Llama-2-13B(引文2),并且推理效率極高。
C.完全開(kāi)源,遵循MIT許可證。
LettuceDetect框架通過(guò)發(fā)現(xiàn)LLM輸出中的“過(guò)時(shí)的”部分來(lái)保持你的RAG框架一直最新。
快速鏈接
- GitHub:github.com/KRLabsOrg/LettuceDetect
- PyPI:pypi.org/project/lettucedetect
- arXiv論文:2502.17125
- Hugging Face模型:
B.大型模型
- Streamlit演示程序:訪問(wèn)我們的Hugging Face空間或者是按照GitHub說(shuō)明在本地運(yùn)行。
為什么選擇LettuceDetect?
時(shí)至今日,大型語(yǔ)言模型(LLM)在NLP任務(wù)中取得了長(zhǎng)足進(jìn)步,例如GPT-4(引文4)、Llama-3模型(引文5)或Mistral(引文6)(還有更多)。盡管LLM取得了成功,但幻覺(jué)仍然是在高風(fēng)險(xiǎn)場(chǎng)景(例如醫(yī)療保健或法律領(lǐng)域)中部署LLM的主要障礙(引文7和8)。
檢索增強(qiáng)生成(RAG)技術(shù)嘗試通過(guò)將LLM的響應(yīng)建立在檢索到的文檔中來(lái)減輕幻覺(jué),從而提供模型可以參考的外部知識(shí)(引文9)。但是,盡管RAG是減少幻覺(jué)的有效方法,但LLM在這些設(shè)置下仍然會(huì)受到幻覺(jué)的影響(引文1)?;糜X(jué)是指輸出中的信息毫無(wú)意義、事實(shí)不正確或與檢索到的上下文不一致(引文8)。Ji等人(引文10)將幻覺(jué)分為以下幾類(lèi):
- 內(nèi)在幻覺(jué):源于模型先前存在的內(nèi)部知識(shí)。
- 外在幻覺(jué):當(dāng)答案與所提供的上下文或參考資料相沖突時(shí)發(fā)生。
雖然RAG方法可以減輕內(nèi)在幻覺(jué),但它們并不能免受外在幻覺(jué)的影響。Sun等人(引文11)研究結(jié)果表明,模型傾向于優(yōu)先考慮其內(nèi)在知識(shí)而不是外部環(huán)境。由于LLM仍然容易產(chǎn)生幻覺(jué),因此它們?cè)卺t(yī)學(xué)或法律等關(guān)鍵領(lǐng)域的應(yīng)用仍然可能存在缺陷。
幻覺(jué)檢測(cè)的當(dāng)前解決方案
當(dāng)前的幻覺(jué)檢測(cè)解決方案可以根據(jù)所采用的方法分為不同的類(lèi)別:
- 基于提示的檢測(cè)器:這些方法(例如RAGAS、Trulens、ARES)通常利用零樣本或少量樣本提示來(lái)檢測(cè)幻覺(jué)。它們通常依賴(lài)于大型LLM(如GPT-4)并采用SelfCheckGPT(引文12)、LMvs.LM(引文13)或Chainpoll(引文14)等策略。雖然它們通常很有效,但由于重復(fù)調(diào)用LLM,計(jì)算成本可能很高。
- 微調(diào)LLM檢測(cè)器:大型模型(例如Llama-2、Llama-3)可以進(jìn)行微調(diào)以檢測(cè)幻覺(jué)(引文1和15)。這可以產(chǎn)生高精度(如RAGTruth作者使用Llama-2-13B或RAG-HAT對(duì)Llama-3-8B所做的工作所示),但訓(xùn)練和部署需要大量資源。由于其規(guī)模較大且速度較慢,推理成本也往往較高。
- 基于編碼器的檢測(cè)器:Luna(引文2)等模型依賴(lài)于BERT樣式的編碼器(通常限制為512個(gè)標(biāo)記)進(jìn)行標(biāo)記級(jí)分類(lèi)。這些方法通常比在推理時(shí)運(yùn)行完整的LLM更有效,但受到短上下文窗口和針對(duì)較小輸入優(yōu)化的注意機(jī)制的限制。
適用于長(zhǎng)上下文的ModernBERT
ModernBERT(引文3)是BERT的直接替代品,它是一種先進(jìn)的僅編碼器的轉(zhuǎn)換器架構(gòu),在原始BERT模型上融入了幾項(xiàng)現(xiàn)代設(shè)計(jì)改進(jìn),例如它使用旋轉(zhuǎn)位置嵌入(RoPe)來(lái)處理最多8,192個(gè)標(biāo)記的序列,使用取消填充優(yōu)化來(lái)消除填充標(biāo)記上浪費(fèi)的計(jì)算,使用GeGLU激活層來(lái)增強(qiáng)表現(xiàn)力,并使用交替注意力來(lái)實(shí)現(xiàn)更高效的注意力計(jì)算。
LettuceDetect利用ModernBERT的擴(kuò)展上下文窗口構(gòu)建用于幻覺(jué)檢測(cè)的標(biāo)記級(jí)分類(lèi)器。這種方法避開(kāi)了舊版基于BERT的模型的許多限制(例如,短上下文邊界),并避免了大型基于LLM的檢測(cè)器的推理開(kāi)銷(xiāo)。我們的實(shí)驗(yàn)表明,LettuceDetect的性能優(yōu)于其他基于編碼器的系統(tǒng),同時(shí)仍能與經(jīng)過(guò)微調(diào)的LLM檢測(cè)器相媲美,而計(jì)算成本僅為后者的一小部分。
數(shù)據(jù)
RAGTruth是第一個(gè)大型開(kāi)源(MIT許可證)基準(zhǔn),專(zhuān)門(mén)用于評(píng)估檢索增強(qiáng)生成(RAG)設(shè)置中的幻覺(jué)檢測(cè)。它包含18,000個(gè)帶注釋的樣本,涵蓋多個(gè)任務(wù):
- 問(wèn)答(QA):從MS MARCO數(shù)據(jù)集中抽樣,其中每個(gè)問(wèn)題最多檢索三個(gè)文檔,并提示LLM給出答案。
- 數(shù)據(jù)到文本生成:基于Yelp開(kāi)放數(shù)據(jù)集,其中LLM為抽樣企業(yè)生成評(píng)論。
- 新聞?wù)菏褂脕?lái)自CNN/DailyMail的隨機(jī)文檔,促使LLM提供摘要。
其中,RAGTruth中的每個(gè)樣本包括:
- 一個(gè)問(wèn)題和一個(gè)提示;
- 一個(gè)或多個(gè)參考段落或上下文文檔;
- LLM生成的響應(yīng);
- 跨度級(jí)別的人工注釋?zhuān)砻鞔鸢傅娜魏尾糠质欠駴](méi)有事實(shí)依據(jù)或與參考段落相矛盾。
下面是來(lái)自RAGTruth的說(shuō)明性樣本,展示了幻覺(jué)的一個(gè)實(shí)例:
提出問(wèn)題:
如何解釋四分位數(shù)?
參考資料:
第2段:
第二四分位數(shù)(Q2)更常被稱(chēng)為中位數(shù),它將數(shù)據(jù)分成兩半(50%)。
中位數(shù)將數(shù)據(jù)分為下半部分和上半部分。
第三四分位數(shù)(Q3)也稱(chēng)為上四分位數(shù),將數(shù)據(jù)的最低75%(或最高25%)分開(kāi)。
(……)
回復(fù)如下:
第一個(gè)四分位數(shù)(Q1)將數(shù)據(jù)中最低的25%分成兩部分,而第二個(gè)四分位數(shù)(Q2)將數(shù)據(jù)分成兩個(gè)相等的部分,中位數(shù)是下半部分的中間值。最后,第三個(gè)四分位數(shù)(Q3)將數(shù)據(jù)中最高的75%分成兩部分。
(……)
注解
跨度:“最高75%”
類(lèi)型:明顯沖突
原因:
原文:“最低75%(或最高25%)”
生成文本:“最高75%”
此樣本展示了一個(gè)RAGTruth注釋?zhuān)婕按鸢钢信c參考段落相沖突的特定跨度,提供了幻覺(jué)的類(lèi)型(例如,明顯沖突)和人類(lèi)可讀的理由。我們的方法僅使用二進(jìn)制注釋?zhuān)皇褂没糜X(jué)注釋的類(lèi)型。
方法
作者自制圖片
這里給出的是LettuceDetect架構(gòu)的一種高級(jí)描述。這里,給出了一個(gè)樣本問(wèn)題、上下文和答案三元組。首先,對(duì)文本進(jìn)行標(biāo)記,然后LettuceDetect執(zhí)行標(biāo)記級(jí)分類(lèi)。問(wèn)題和上下文中的標(biāo)記都被屏蔽(圖中用紅線表示),以便將它們排除在損失函數(shù)之外。答案中的每個(gè)標(biāo)記都會(huì)收到一個(gè)概率,表明它是幻覺(jué)的還是被支持的。對(duì)于跨度級(jí)檢測(cè),我們將幻覺(jué)概率高于0.5的連續(xù)標(biāo)記合并為單個(gè)預(yù)測(cè)跨度。
我們?cè)赗AGTruth數(shù)據(jù)集上訓(xùn)練ModernBERT-base和ModernBERT-large變體作為標(biāo)記分類(lèi)模型。模型的輸入是Context、Question和Answer段的串聯(lián),帶有專(zhuān)門(mén)的標(biāo)記([CLS])(用于上下文)和([SEP])(作為分隔符)。為了便于計(jì)算,我們將序列長(zhǎng)度限制為4,096個(gè)標(biāo)記,但ModernBERT理論上最多可以處理8,192個(gè)標(biāo)記。
標(biāo)記化和數(shù)據(jù)處理
- 標(biāo)記化:我們使用轉(zhuǎn)換器庫(kù)中的AutoTokenizer來(lái)處理子詞標(biāo)記化,并適當(dāng)?shù)夭迦隱CLS]和[SEP]。
- 標(biāo)簽:
A.上下文/問(wèn)題標(biāo)記被屏蔽(即在PyTorch中分配-100的標(biāo)簽),因此它們不會(huì)導(dǎo)致?lián)p失。
B.每個(gè)答案標(biāo)記都會(huì)收到一個(gè)標(biāo)簽0(支持)或1(幻覺(jué))。
模型架構(gòu)
我們的模型基于Hugging Face的AutoModelForTokenClassification構(gòu)建,使用ModernBERT作為編碼器,并在其上設(shè)置分類(lèi)頭。與之前一些基于編碼器的方法(例如,在NLI任務(wù)上進(jìn)行預(yù)訓(xùn)練的方法)不同,我們的方法僅使用ModernBERT,沒(méi)有額外的預(yù)訓(xùn)練階段。
訓(xùn)練配置
- 優(yōu)化器:AdamW,學(xué)習(xí)率為1*10^-5,權(quán)重衰減為0.01。
- 硬件:?jiǎn)蝹€(gè)NVIDIA A100 GPU。
- 世代(Epochs):總共6個(gè)訓(xùn)練世代。
- 批處理:
A.批次大小為8;
B.使用PyTorch DataLoader加載數(shù)據(jù)(啟用數(shù)據(jù)混洗功能);
C.通過(guò)DataCollatorForTokenClassification進(jìn)行動(dòng)態(tài)填充,以有效處理可變長(zhǎng)度序列。
在訓(xùn)練期間,我們會(huì)監(jiān)控驗(yàn)證拆分中的符號(hào)級(jí)F1分?jǐn)?shù),并使用safetensors格式保存檢查點(diǎn)。訓(xùn)練完成后,我們會(huì)將表現(xiàn)最佳的模型上傳到Hugging Face供公眾訪問(wèn)。
在推理時(shí),模型會(huì)輸出答案中每個(gè)標(biāo)記的幻覺(jué)概率。我們聚合超過(guò)0.5閾值的連續(xù)標(biāo)記以生成跨度級(jí)預(yù)測(cè),準(zhǔn)確指示答案的哪些部分可能產(chǎn)生幻覺(jué)。上圖說(shuō)明了此工作流程。
接下來(lái),我們對(duì)模型的性能進(jìn)行更詳細(xì)的評(píng)估。
測(cè)試結(jié)果
我們?cè)赗AGTruth測(cè)試集上對(duì)所有任務(wù)類(lèi)型(問(wèn)答、數(shù)據(jù)轉(zhuǎn)文本和摘要)的模型進(jìn)行了評(píng)估。對(duì)于每個(gè)示例,RAGTruth都包含手動(dòng)注釋的跨度,以指示幻覺(jué)內(nèi)容。
示例級(jí)結(jié)果
我們首先評(píng)估樣本級(jí)別的問(wèn)題:生成的答案是否包含任何幻覺(jué)?我們的大型模型(lettucedetect-large-v1)的總體F1得分達(dá)到79.22%,超過(guò)了:
- GPT-4(63.4%);
- Luna(65.4%)(之前最先進(jìn)的基于編碼器的模型);
- RAGTruth論文中提出了經(jīng)過(guò)微調(diào)的Llama-2-13B(78.7%)。
它僅次于RAG-HAT論文(引文15)中經(jīng)過(guò)微調(diào)的Llama-3-8B(83.9%),但LettuceDetect明顯更小,運(yùn)行速度更快。同時(shí),我們的基礎(chǔ)模型(lettucedetect-base-v1)在使用較少參數(shù)的情況下仍保持了極高的競(jìng)爭(zhēng)力。
作者本人提供圖片
上表是一張比較表,說(shuō)明了LettuceDetect與基于提示的方法(例如GPT-4)和基于編碼器的替代解決方案(例如Luna)的對(duì)比情況??傮w而言,lettucedetect-large-v1和lettucedect-base-v1是性能非常出色的模型,同時(shí)在推理設(shè)置中也非常有效。
跨度級(jí)結(jié)果
除了檢測(cè)答案是否包含幻覺(jué)之外,我們還檢查了LettuceDetect識(shí)別不支持內(nèi)容的確切跨度的能力。在這里,LettuceDetect在報(bào)告跨度級(jí)別性能的模型中取得了最先進(jìn)的結(jié)果,大大優(yōu)于RAGTruth論文(引文1)和其他基線中經(jīng)過(guò)微調(diào)的Llama-2-13B模型。
作者本人提供圖片
大多數(shù)方法(例如RAG-HAT(引文15))都沒(méi)有報(bào)告跨度級(jí)指標(biāo),因此我們?cè)谶@里不與它們進(jìn)行比較。
推理效率
lettucedetect-base-v1和lettucedetect-large-v1所需的參數(shù)都比典型的基于LLM的檢測(cè)器(例如GPT-4或Llama-3-8B)少,并且可以在單個(gè)NVIDIA A100 GPU上每秒處理30-60個(gè)樣本。這使得它們適用于工業(yè)工作負(fù)載、實(shí)時(shí)面向用戶的系統(tǒng)和資源受限的環(huán)境。
總體而言,這些結(jié)果表明LettuceDetect具有良好的平衡性:與基于LLM的大型評(píng)判系統(tǒng)相比,它以極小的規(guī)模和成本實(shí)現(xiàn)了接近最先進(jìn)的準(zhǔn)確度,同時(shí)提供了精確的標(biāo)記級(jí)幻覺(jué)檢測(cè)。
開(kāi)發(fā)實(shí)戰(zhàn)
安裝軟件包:
pip install lettucedetect
然后,你可以按如下方式使用該包:
from lettucedetect.models.inference import HallucinationDetector
#對(duì)于基于轉(zhuǎn)換器的方法:
detector = HallucinationDetector(
method="transformer", model_path="KRLabsOrg/lettucedect-base-modernbert-en-v1"
)
contexts = ["France is a country in Europe. The capital of France is Paris. The population of France is 67 million.",]
question = "What is the capital of France? What is the population of France?"
answer = "The capital of France is Paris. The population of France is 69 million."
#得到跨度級(jí)的預(yù)測(cè),表明答案的哪一部分被認(rèn)為是幻覺(jué)。
predictions = detector.predict(cnotallow=contexts, questinotallow=question, answer=answer, output_format="spans")
print("Predictions:", predictions)
#預(yù)測(cè)結(jié)果是:[{'start': 31, 'end': 71, 'confidence': 0.9944414496421814, 'text': ' The population of France is 69 million.'}]
結(jié)論
我們?cè)诒疚闹性敿?xì)介紹了我們團(tuán)隊(duì)研發(fā)的LettuceDetect,這是一個(gè)輕量級(jí)且高效的RAG系統(tǒng)幻覺(jué)檢測(cè)框架。通過(guò)利用ModernBERT的擴(kuò)展上下文功能,我們的模型在RAGTruth基準(zhǔn)上實(shí)現(xiàn)了強(qiáng)勁的性能,同時(shí)保持了較高的推理效率。這項(xiàng)工作為未來(lái)的研究方向奠定了基礎(chǔ),例如擴(kuò)展到其他數(shù)據(jù)集、支持多種語(yǔ)言以及探索更先進(jìn)的架構(gòu)。即使在這個(gè)階段,LettuceDetect也證明了使用精簡(jiǎn)的、專(zhuān)門(mén)構(gòu)建的基于編碼器的模型可以實(shí)現(xiàn)有效的幻覺(jué)檢測(cè)。
引文
【1】Niu等人,2024,RAGTruth: A Dataset for Hallucination Detection in Retrieval-Augmented Generation(RAGTruth:檢索增強(qiáng)生成中的幻覺(jué)檢測(cè)數(shù)據(jù)集)。
【2】Luna: A Simple and Effective Encoder-Based Model for Hallucination Detection in Retrieval-Augmented Generation(Luna:一種簡(jiǎn)單有效的基于編碼器的檢索增強(qiáng)生成幻覺(jué)檢測(cè)模型)。
【3】ModernBERT: A Modern BERT Model for Long-Context Processing(ModernBERT:用于長(zhǎng)上下文處理的現(xiàn)代BERT模型)。
【4】GPT-4 report(GPT-4報(bào)告)。
【5】Llama-3 report(Llama-3報(bào)告)。
【6】Mistral 7B。
【7】Kaddour等人,2023,Challenges and Applications of Large Language Models(大型語(yǔ)言模型的挑戰(zhàn)與應(yīng)用)。
【8】Huang等人,2025,A Survey on Hallucination in Large Language Models: Principles, Taxonomy, Challenges, and Open Questions(大型語(yǔ)言模型中的幻覺(jué)調(diào)查:原理、分類(lèi)、挑戰(zhàn)和未決問(wèn)題)。
【9】Gao等人,2024,Retrieval-Augmented Generation for Large Language Models: A Survey(大型語(yǔ)言模型的檢索增強(qiáng)生成:一項(xiàng)調(diào)查)。
【10】Ji等人,2023,Survey of Hallucination in Natural Language Generation(自然語(yǔ)言生成中的幻覺(jué)研究)。
【11】Sun等人,2025,ReDeEP: Detecting Hallucination in Retrieval-Augmented Generation via Mechanistic Interpretability(ReDeEP:通過(guò)機(jī)械可解釋性檢測(cè)檢索增強(qiáng)生成中的幻覺(jué))。
【12】Manakul等人,2023,SelfCheckGPT: Zero-Resource Black-Box Hallucination Detection for Generative Large Language Models(SelfCheckGPT:用于生成大型語(yǔ)言模型的零資源黑盒幻覺(jué)檢測(cè))。
【13】Cohen等人,2023,LM vs LM: Detecting Factual Errors via Cross Examination(LM vs LM:通過(guò)交叉詢(xún)問(wèn)檢測(cè)事實(shí)錯(cuò)誤)。
【14】Friel等人,2023,Chainpoll: A high efficacy method for LLM hallucination detection(Chainpoll:一種高效的LLM幻覺(jué)檢測(cè)方法)。
【15】Song等人,2024,RAG-HAT: A Hallucination-Aware Tuning Pipeline for {LLM} in Retrieval-Augmented Generation(RAG-HAT:檢索增強(qiáng)生成中用于LLM的幻覺(jué)感知調(diào)整管道)。
【16】Devlin等人,2019,BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding(BERT:用于語(yǔ)言理解的深度雙向Transformer預(yù)訓(xùn)練)。
譯者介紹
朱先忠,51CTO社區(qū)編輯,51CTO專(zhuān)家博客、講師,濰坊一所高校計(jì)算機(jī)教師,自由編程界老兵一枚。
原文標(biāo)題:LettuceDetect: A Hallucination Detection Framework for RAG Applications,作者:Adam Kovacs