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