深入解析:如何高效評(píng)估RAG系統(tǒng)(一)
本文深入探討了RAG系統(tǒng)的優(yōu)勢(shì)、挑戰(zhàn)以及如何通過RAGAS框架對(duì)其進(jìn)行有效評(píng)估,旨在為讀者提供一套系統(tǒng)的理解和應(yīng)用RAG技術(shù)的指南。
一、為什么要選擇RAG
眾所周知,大語言模型(LLM)存在”幻覺”問題,經(jīng)常一本正經(jīng)的胡說八道,除此之外還有在知識(shí)無法及時(shí)更新、可解釋性差等問題;RAG(檢索增強(qiáng)生成)和Fine-Tune(微調(diào))是目前主流的兩種解決方法,他們之間的對(duì)比如下:
在實(shí)際應(yīng)用中,判斷是采取RAG還是Fine-Tune方案可以通過以下幾個(gè)維度判斷:
筆者所處的行業(yè)是醫(yī)療療行業(yè),是典型的”嚴(yán)肅”應(yīng)用場(chǎng)景,要盡量避免”幻覺”問題,又因?yàn)閷儆谄怪钡膽?yīng)用,可用于微調(diào)的數(shù)據(jù)有限,所以RAG就成為了首選的方式。
RAG的介紹和快速搭建可以參考之前的文章基于開源框架快速搭建基于RAG架構(gòu)的醫(yī)療AI問答系統(tǒng),可選框架有很多,如果完全是無編程經(jīng)驗(yàn)的建立用coze.cn(具備科學(xué)上網(wǎng)條件的用.com)更容易上手一些,基本搭建流程都差不多。
二、如何評(píng)估RAG系統(tǒng)
“Demo只需一天,好用至少半年”,RAG是典型的入手簡(jiǎn)單做好難。自從跟隨大模型爆火之后,各種RAG框架層出不窮,他們內(nèi)置的大模型底座、檢索策略等各不相同,我們無論是選擇自己手動(dòng)搭建還是采用第三方RAG框架,都需要了解如何去評(píng)價(jià)它。
首先我們?cè)倩仡櫼幌翿AG的基本工作流程和關(guān)鍵節(jié)點(diǎn):
RAG包括三個(gè)核心內(nèi)容,用戶的輸入(Query)、檢索到的知識(shí)(Context)和模型最終給出的回答(Answer),他們之間兩兩對(duì)比可以得到三個(gè)基礎(chǔ)指標(biāo),分別是:
- Context Relevance衡量召回的內(nèi)容和問題之間相關(guān)程度。如果相關(guān)度很低甚至召回了毫不相關(guān)的內(nèi)容會(huì)給LLM提供錯(cuò)誤的Pormpt,這個(gè)也是目前RAG系統(tǒng)最大的挑戰(zhàn)之一。
- Groundedness(Faithfulness) 該指標(biāo)衡量了生成的答案在給定的上下文中的事實(shí)一致性。它是根據(jù)答案和檢索到的上下文計(jì)算出來的,如果該得分低,反應(yīng)出了 LLM 的回答不遵從召回的知識(shí),那么回答出現(xiàn)幻覺的可能就越大。
- Answer Relevance 該指標(biāo)衡量回答內(nèi)容和提問內(nèi)容之間的相關(guān)性,如果出現(xiàn)”答非所問”或者回答內(nèi)容不完整,該指標(biāo)會(huì)給出一個(gè)比較低的分?jǐn)?shù)。
- Answer Correctness對(duì)于一些有標(biāo)準(zhǔn)答案(Ground Truth)的場(chǎng)景,還可以評(píng)估回答的內(nèi)容和標(biāo)準(zhǔn)答案的一致性
- Instruction Follwing另外在挑選底座大模型的時(shí)候還可以評(píng)估不同底座模型的指令跟隨能力(尤其是針對(duì)小參數(shù)模型),簡(jiǎn)單來講就是”聽話”的能力
跟所有基于AI的應(yīng)用一樣,RAG應(yīng)用可以通過人工端到端的評(píng)估方式進(jìn)行評(píng)估,比如對(duì)于醫(yī)療問答系統(tǒng),可以讓專業(yè)的醫(yī)生直接給輸出的內(nèi)容打分,這種方式是最可靠的的但是很難覆蓋所有場(chǎng)景且費(fèi)時(shí)費(fèi)力;除此之外就是通過自動(dòng)化量化評(píng)估的方式給出評(píng)估結(jié)果,接下來將著重介紹幾種自動(dòng)化評(píng)估的框架。
三、開源RAG評(píng)估框架RAGAS
項(xiàng)目地址:https://github.com/explodinggradients/ragas
論文:https://arxiv.org/abs/2309.15217
RAGAS應(yīng)該目前評(píng)估比較全面,而且各種文檔也比較齊全的評(píng)估框架了,而且跟Langchain等框架做了集成,可以直接調(diào)用。RAGAS論文中提到三個(gè)指標(biāo),現(xiàn)在已經(jīng)擴(kuò)展到九個(gè)了:
Faithfulness(忠誠(chéng)度) RAGAS的計(jì)算原理是通過大語言模型(LLM)從生成的答案中拆分成一組描述,然后讓大模型去判斷是否是否可以從上下文中推斷出來,主要是通過提示詞工程實(shí)現(xiàn),Prompt如下:(注意:RAGAS內(nèi)置都是英文的提示詞,我們需要轉(zhuǎn)換成中文)
考慮給定的上下文和以下陳述,然后判斷這些陳述是否得到上下文信息的支持。 在得出結(jié)論(是/否)之前,對(duì)每個(gè)陳述進(jìn)行簡(jiǎn)要解釋。 最后按指定格式依次給出對(duì)每項(xiàng)陳述的最終裁定。 不要偏離指定格式:
[語句 1]
…
[語句 n]
例如某個(gè)問題被拆成5組描述,大模型判斷3組可以從上下文推斷出來,得分就是3/5=0.6
Answer Relevance (回答相關(guān)性)RAGAS采用的是經(jīng)典的余弦相似度來進(jìn)行判斷,首先使用大語言模型 (LLM) 從生成的答案中逆向設(shè)計(jì)問題的“n”個(gè)變體,然后計(jì)算生成的問題與實(shí)際問題之間的平均余弦相似度。引用官網(wǎng)給的例子:
Answer:France is in western Europe.
Question 1:“In which part of Europe is France located?”
Question 2:“What is the geographical location of France within Europe?”
Question 3:“Can you identify the region of Europe where France is situated?”
因?yàn)檫@個(gè)指標(biāo)跟Context無關(guān),所以也可以用來測(cè)試不是基于RAG的問答系統(tǒng)。
Context Precision(上下文召回精度) 是一個(gè)評(píng)估召回的指標(biāo),核心思路給定一個(gè)問題,然后判斷基于這個(gè)問題召回的內(nèi)容跟金標(biāo)準(zhǔn)是否相關(guān),計(jì)算步驟拆解如下:
第一步:判斷每個(gè)chunk是否跟ground truth相關(guān),假如一個(gè)問題和召回了top5的chunks,其中不同chunk分別用LLM進(jìn)行判斷相關(guān)性:
- chunk1 : 相關(guān)
- chunk2: 不相關(guān)
- chunk 3: 相關(guān)
- chunk 4:不相關(guān)
- chunk5:相關(guān)
第二步:計(jì)算每個(gè)chunk的 Precision@k值,在位置k之前的相關(guān)chunk數(shù)量除以 k,分別計(jì)算結(jié)果如下:
- Precision@1 = 1/1 = 1.0
- Precision@2 = 1/2 = 0.5
- Precision@3 = 2/3 ≈ 0.67
- Precision@4 = 2/4 = 0.5
- Precision@5 = 3/5 = 0.6
第三步:計(jì)算 Precision@k 的平均值
平均Precision@k=1.0+0.5+0.67+0.5+0.6=53.27=0.654
這里計(jì)算均值前引入了位置的信息判斷,跟答案相關(guān)的越靠前,得分就會(huì)越高,Context Precision 指標(biāo)可以看做是Faithfulness 指標(biāo)的的一種延伸,二者都是用來評(píng)價(jià)召回內(nèi)容跟金標(biāo)準(zhǔn)的一致性。
Context Recall (上下文召回率)也是一個(gè)評(píng)估召回的指標(biāo),它的思路跟Answer Relevance有點(diǎn)接近,只不過他是把ground truth拆分了幾份,每一份再去判斷跟context的相關(guān)性,最終計(jì)算一個(gè)比例出來。
Context entities recall (上下文實(shí)體召回率) 這個(gè)是最近剛推出的指標(biāo),引入了實(shí)體的概念,通過計(jì)算context和ground truth中同時(shí)存在的實(shí)體數(shù)據(jù)在ground truth 實(shí)體中的比例來衡量召回的內(nèi)容是否接近ground truth,舉個(gè)例子:
假設(shè)ground truth中抽取的實(shí)體如下:[‘長(zhǎng)城’, ‘北京’, ‘秦始皇’, ‘公元前221年’, ‘世界遺產(chǎn)’]
context1中抽取的實(shí)體 [‘長(zhǎng)城’, ‘北京’, ‘秦始皇’, ‘中國(guó)’]
context2中抽取的實(shí)體 [‘長(zhǎng)城’, ‘世界遺產(chǎn)’, ‘中國(guó)’]
計(jì)算相似度:
context1中的相關(guān)實(shí)體:[‘長(zhǎng)城’, ‘北京’, ‘秦始皇’]
context2中的相關(guān)實(shí)體 : [‘長(zhǎng)城’, ‘世界遺產(chǎn)’]
context1的召回準(zhǔn)確率0.6>context2的召回準(zhǔn)確率0.4,我們應(yīng)該選用context1的召回策略。
Answer semantic similarity (回答語義相關(guān)度)也是一個(gè)評(píng)估回答結(jié)果跟金標(biāo)準(zhǔn)一致性的指標(biāo),在RAGAS中,Answer Relevance指標(biāo)通過逆向生成問題對(duì)比得出分?jǐn)?shù),這個(gè)就比較簡(jiǎn)單了,直接把a(bǔ)nswer和ground truth 分別做一個(gè)向量化,然后直接通過語義相似度判斷一致性。語義相似度的判斷是通過余弦相似度來實(shí)現(xiàn)的。
Answer Correctness (回答準(zhǔn)確性)RAGAS提供的另外一個(gè)評(píng)估系統(tǒng)answer和ground truth 一致性的指標(biāo),只不過他是上一個(gè)指標(biāo)Context entities recall 在結(jié)合factual correctness(事實(shí)一致性),兩邊分給一個(gè)權(quán)重然后計(jì)算最終得分,但是官網(wǎng)并沒有提到事實(shí)一致性是如何計(jì)算的,那只能是人工評(píng)價(jià)后計(jì)算一個(gè)調(diào)和平均數(shù),我們可以簡(jiǎn)單理解為這個(gè)指標(biāo)是把人工評(píng)價(jià)和語義評(píng)價(jià)做了一個(gè)綜合。
Aspect Critique(特定方向評(píng)估)RAGAS提供一個(gè)可擴(kuò)展的評(píng)估方向,其中內(nèi)置的了,
無害性(Harmlessness)、惡意性(Maliciousness)、連貫性(Coherence)、正確性(Correctness)和 簡(jiǎn)潔性(Conciseness)5個(gè)評(píng)估方向,評(píng)估方法是通過寫一個(gè)提示詞然后讓大模型來進(jìn)行判斷是否存在上述問題,我們也可以自定義要評(píng)估指標(biāo),通過 SUPPORTED_ASPECTS 這個(gè)字段進(jìn)行維護(hù),每個(gè)指標(biāo)都可以單獨(dú)調(diào)用。
假設(shè)我們有一篇文章需要評(píng)估其質(zhì)量,你可以使用這些方面來進(jìn)行評(píng)估:
- 無害性檢查:判斷文章內(nèi)容是否會(huì)對(duì)讀者造成心理或情感上的傷害。
- 惡意性檢查:判斷文章內(nèi)容是否包含欺騙、操縱或傷害他人的意圖。
- 連貫性檢查:判斷文章內(nèi)容是否邏輯連貫,信息傳達(dá)清晰
- 正確性檢查:判斷文章中的信息是否準(zhǔn)確無誤
- 簡(jiǎn)潔性檢查:判斷文章內(nèi)容是否簡(jiǎn)潔明了,沒有冗長(zhǎng)和不必要的信息
Summarization Score (總結(jié)能力評(píng)分) 在RAG系統(tǒng)中,假如我們將 top k 設(shè)置為 5,那么通常會(huì)召回 5 個(gè)相關(guān)的知識(shí)片段。這些召回的知識(shí)片段會(huì)作為上下文的一部分全部傳遞給大語言模型。大語言模型會(huì)利用這些上下文信息來生成更準(zhǔn)確和相關(guān)的回答。所以召回的內(nèi)容進(jìn)行總結(jié)的好壞也會(huì)影響最終輸出的效果,好的總結(jié)應(yīng)該包含原文中的所有重要信息,這個(gè)指標(biāo)就是用來評(píng)估這個(gè)能力。實(shí)現(xiàn)思路如下:
- 首先從原文中提取出一組重要的關(guān)鍵詞或關(guān)鍵短語。
- 然后基于這些關(guān)鍵詞生成一組問題。
- 接著將這些問題應(yīng)用到總結(jié)中,檢查總結(jié)能否正確回答這些問題。
- 最后計(jì)算正確回答的問題數(shù)與總問題數(shù)的比值。
借用官網(wǎng)的例子:
摘要:摩根大通公司(JPMorgan Chase & Co.)是一家總部位于紐約市的美國(guó)跨國(guó)金融公司。截至2023年,它是美國(guó)最大的銀行,也是全球市值最大的銀行。公司成立于1799年,是主要的投資銀行服務(wù)提供商,擁有3.9萬億美元的總資產(chǎn),并在2023年《福布斯》全球2000強(qiáng)排名中位列第一。
關(guān)鍵詞: [ “摩根大通公司(JPMorgan Chase & Co.)”,
“美國(guó)跨國(guó)金融公司”,
“總部位于紐約市”,
“美國(guó)最大的銀行”,
“全球市值最大的銀行”,
“成立于1799年”,
“主要的投資銀行服務(wù)提供商”,
“3.9萬億美元的總資產(chǎn)”,
“《福布斯》全球2000強(qiáng)排名第一”,
]問題: [ “摩根大通公司是一家美國(guó)跨國(guó)金融公司嗎?”,
“摩根大通公司總部位于紐約市嗎?”,
“摩根大通公司是美國(guó)最大的銀行嗎?”,
“截至2023年,摩根大通公司是全球市值最大的銀行嗎?”,
“摩根大通公司被金融穩(wěn)定委員會(huì)認(rèn)為具有系統(tǒng)重要性嗎?”,
“摩根大通公司于1799年作為大通曼哈頓公司成立嗎?”,
“摩根大通公司是主要的投資銀行服務(wù)提供商嗎?”,
“摩根大通公司是全球資產(chǎn)排名第五的銀行嗎?”,
“摩根大通公司運(yùn)營(yíng)著收入最大的投資銀行嗎?”,
“摩根大通公司在《福布斯》全球2000強(qiáng)排名中位列第一嗎?”,
“摩根大通公司提供投資銀行服務(wù)嗎?”,
]答案: [“0”, “1”, “1”, “1”, “0”, “0”, “1”, “1”, “1”, “1”, “1”]
最后我們把RAGAS體系的指標(biāo)做一個(gè)總結(jié):
評(píng)估召回能力,關(guān)系到檢索策略、chunk策略:
- Context Precision
- Context Recall
- Context entities recall
基于上下文的回答回答準(zhǔn)確率,關(guān)系到大模型的指令跟隨能力:
- Faithfulness
- Answer Relevancy
- Answer Semantic Similarity
- context-answer
- Answer Correctness
- Aspect Critique
- Summarization Score
不依賴上下文也可以評(píng)估的指標(biāo):
- Answer semantic similarity
- Answer Correctness
- Aspect Critique
- Answer Relevance
上述內(nèi)容結(jié)合了項(xiàng)目官網(wǎng)和個(gè)人的理解,如果理解錯(cuò)誤的地方歡迎指正交流,后續(xù)文章后會(huì)接著介紹其他的RAG評(píng)估框架,敬請(qǐng)關(guān)注。
本文由 @Leo 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載
題圖來自Unsplash,基于CC0協(xié)議
該文觀點(diǎn)僅代表作者本人,人人都是產(chǎn)品經(jīng)理平臺(tái)僅提供信息存儲(chǔ)空間服務(wù)。
- 目前還沒評(píng)論,等你發(fā)揮!