Ragas:專(zhuān)為RAG系統(tǒng)打造的高效評(píng)估工具
Ragas 是一個(gè)專(zhuān)為檢索增強(qiáng)生成(RAG)系統(tǒng)設(shè)計(jì)的開(kāi)源評(píng)估框架。它通過(guò)多維度指標(biāo),系統(tǒng)性評(píng)估檢索與生成質(zhì)量,支持無(wú)參考自動(dòng)化評(píng)測(cè),幫助開(kāi)發(fā)者精準(zhǔn)定位性能瓶頸,提升RAG系統(tǒng)的準(zhǔn)確性與可靠性,適用于各類(lèi)知識(shí)密集型應(yīng)用場(chǎng)景。
Ragas:專(zhuān)為RAG系統(tǒng)打造的高效評(píng)估工具
1. RAG 與評(píng)估的必要性
2. RAGAS是什么
3. Ragas 關(guān)鍵評(píng)估指標(biāo)詳解
3.1 檢索質(zhì)量指標(biāo)
3.1.1 上下文精確度 (Context Precision)
3.1.2 上下文召回率 (Context Recall)
3.2 生成質(zhì)量指標(biāo)
3.2.1 忠實(shí)度 (Faithfulness)
3.2.2 答案相關(guān)性 (Response Relevancy)
4. Ragas 從安裝到評(píng)估
4.1 Ragas 安裝
4.2 準(zhǔn)備需要評(píng)估的RAG系統(tǒng)
4.3 生成測(cè)試數(shù)據(jù)集
4.4 準(zhǔn)備評(píng)估數(shù)據(jù)
4.5 選擇并初始化 Ragas 指標(biāo)
4.6 運(yùn)行評(píng)估
4.7 分析結(jié)果
5. RAGAS的局限性
1. RAG 與評(píng)估的必要性
什么是檢索增強(qiáng)生成 (RAG)?
檢索增強(qiáng)生成(Retrieval-Augmented Generation,RAG)系統(tǒng)代表了大型語(yǔ)言模型(LLM)與信息交互方式的一項(xiàng)重大進(jìn)步。
與傳統(tǒng)上僅依賴(lài)其預(yù)訓(xùn)練的靜態(tài)知識(shí)的LLM不同,RAG系統(tǒng)將LLM的生成能力與動(dòng)態(tài)的外部信息檢索機(jī)制相結(jié)合 。
這使得它們能夠從龐大的外部來(lái)源(如數(shù)據(jù)庫(kù)或知識(shí)庫(kù))獲取相關(guān)數(shù)據(jù) 。通過(guò)使用檢索到的信息增強(qiáng)LLM的上下文,RAG系統(tǒng)能夠生成更具信息量、更精確的響應(yīng),從而有效解決LLM常見(jiàn)的領(lǐng)域知識(shí)空白、事實(shí)性問(wèn)題以及“幻覺(jué)”(即編造信息)的傾向 。
為什么 RAG 系統(tǒng)需要評(píng)估?
RAG系統(tǒng)由檢索器和生成式LLM的多個(gè)組件構(gòu)成,這引入了多層復(fù)雜性,使得全面評(píng)估不僅有益,而且絕對(duì)必要。
僅僅最終答案“聽(tīng)起來(lái)不錯(cuò)”是遠(yuǎn)遠(yuǎn)不夠的;它必須事實(shí)正確,基于檢索到的數(shù)據(jù),并與用戶(hù)的查詢(xún)直接相關(guān)。
如果沒(méi)有嚴(yán)格的評(píng)估,如檢索到不相關(guān)信息、事實(shí)不準(zhǔn)確或細(xì)微幻覺(jué)等問(wèn)題,會(huì)削弱RAG系統(tǒng)的實(shí)用性。
Ragas能夠系統(tǒng)地評(píng)估RAG,通過(guò)單獨(dú)和整體分析其組件,從而診斷問(wèn)題 。
通過(guò)評(píng)估單個(gè)組件(檢索器和生成器),開(kāi)發(fā)人員可以精確定位性能瓶頸或錯(cuò)誤發(fā)生的具體階段,從而實(shí)現(xiàn)更高效的調(diào)試和有針對(duì)性的改進(jìn)。
2. RAGAS是什么
Ragas是一個(gè)專(zhuān)門(mén)為系統(tǒng)評(píng)估RAG性能而精心設(shè)計(jì)的開(kāi)源框架。
它的首要目標(biāo)是為開(kāi)發(fā)人員提供一種高效且可量化的方法,以衡量其RAG系統(tǒng)在兩個(gè)關(guān)鍵維度上的有效性:信息檢索的準(zhǔn)確性和相關(guān)性,以及生成響應(yīng)的質(zhì)量和上下文適當(dāng)性 。
Ragas的一個(gè)突出特點(diǎn)是其開(kāi)創(chuàng)性的“無(wú)參考”評(píng)估能力,這顯著減少了對(duì)人工標(biāo)注真實(shí)答案的依賴(lài),他本身是利用LLM進(jìn)行評(píng)估,它能夠模擬人類(lèi)的判斷和對(duì)細(xì)微差別的理解。
然而,這種方法也帶來(lái)了一個(gè)需要權(quán)衡的問(wèn)題:
LLM驅(qū)動(dòng)的指標(biāo)可能具有一定的不確定性,因?yàn)長(zhǎng)LM對(duì)于相同的輸入可能不會(huì)總是返回相同的結(jié)果。
這意味著,雖然LLM作為“評(píng)判者”極大地提高了評(píng)估的速度和自動(dòng)化水平,但開(kāi)發(fā)人員在實(shí)踐中應(yīng)注意這種波動(dòng)性。為了獲得穩(wěn)健的評(píng)估結(jié)果,可能需要運(yùn)行更多的測(cè)試樣本或進(jìn)行多次評(píng)估,以平衡評(píng)估速度與統(tǒng)計(jì)置信度。
3. Ragas 關(guān)鍵評(píng)估指標(biāo)詳解
Ragas 提供了一套全面的指標(biāo),從而可以對(duì) RAG 系統(tǒng)進(jìn)行整體評(píng)估。這些指標(biāo)可以評(píng)估 RAG 的兩個(gè)基本方面:LLM 生成響應(yīng)的質(zhì)量和檢索機(jī)制提供上下文的有效性。
它使開(kāi)發(fā)人員不僅能夠了解整體性能,還能精確診斷潛在的問(wèn)題。
通過(guò)分析這些不同的指標(biāo)類(lèi)別,Ragas 能夠?qū)崿F(xiàn)有針對(duì)性的改進(jìn),從而提高 RAG 系統(tǒng)的準(zhǔn)確性、相關(guān)性和可靠性。
3.1 檢索質(zhì)量指標(biāo)
3.1.1 上下文精確度 (Context Precision)
衡量目的: 該指標(biāo)衡量檢索到的信息中真正相關(guān)且對(duì)回答用戶(hù)查詢(xún)有用的比例。它評(píng)估檢索系統(tǒng)過(guò)濾掉不相關(guān)或“噪聲”數(shù)據(jù)的能力。高分?jǐn)?shù)表明檢索到的文檔高度相關(guān)且沒(méi)有干擾信息 。
要點(diǎn): 上下文精確度在減輕檢索引起的幻覺(jué)方面發(fā)揮著直接作用。這個(gè)指標(biāo)明確指出,它有助于“避免不相關(guān)的數(shù)據(jù),這些數(shù)據(jù)可能會(huì)誤導(dǎo)LLM的響應(yīng)” 。它確保了輸入上下文本身是干凈和相關(guān)的。
3.1.2 上下文召回率 (Context Recall)
衡量目的: 該指標(biāo)評(píng)估檢索上下文的完整性,確保檢索器成功檢索了回答用戶(hù)問(wèn)題所需的所有相關(guān)信息。它檢查在檢索過(guò)程中是否遺漏了真實(shí)答案中的任何關(guān)鍵細(xì)節(jié)或事實(shí)。高分?jǐn)?shù)表明檢索器成功識(shí)別并提供了所有相關(guān)信息。
要點(diǎn): 上下文召回率直接影響生成答案的完整性。這對(duì)于RAG系統(tǒng)生成完整的答案至關(guān)重要 。高上下文召回率確保LLM能夠訪(fǎng)問(wèn)所有必要的信息,以提供全面和詳盡的答案。相反,低召回率直接導(dǎo)致不完整的響應(yīng)。
3.2 生成質(zhì)量指標(biāo)
3.2.1 忠實(shí)度 (Faithfulness)
衡量目的: 該指標(biāo)評(píng)估生成響應(yīng)與所提供的檢索上下文的事實(shí)一致性。它可以確定LLM答案中提出的所有主張和陳述是否可以直接從檢索到的信息中推斷出來(lái)或完全得到支持 。
要點(diǎn): 忠實(shí)度是抵御RAG中產(chǎn)生幻覺(jué)的主要防線(xiàn)。忠實(shí)度被定義為檢查生成文本是否“忠實(shí)于檢索到的信息,避免虛假信息” 。高忠實(shí)度分?jǐn)?shù)直接表明RAG系統(tǒng)成功利用檢索到的上下文生成了事實(shí)依據(jù)的響應(yīng),從而減輕了LLM產(chǎn)生幻覺(jué)的傾向。
3.2.2 答案相關(guān)性 (Response Relevancy)
衡量目的: 該指標(biāo)評(píng)估生成答案與原始用戶(hù)查詢(xún)的相關(guān)性和集中程度。它確保LLM的響應(yīng)直接解決用戶(hù)的意圖和問(wèn)題,避免離題信息或不必要的冗余。高分?jǐn)?shù)表明答案簡(jiǎn)潔且直接切中要點(diǎn) 。
要點(diǎn): 答案相關(guān)性是用戶(hù)體驗(yàn)和實(shí)用性的直接衡量標(biāo)準(zhǔn)。Ragas“檢查響應(yīng)是否符合用戶(hù)問(wèn)題。這個(gè)指標(biāo)直接量化了這種契合度。雖然事實(shí)正確性(忠實(shí)度)至關(guān)重要,但一個(gè)事實(shí)正確但與用戶(hù)實(shí)際問(wèn)題不相關(guān)的答案會(huì)提供糟糕的用戶(hù)體驗(yàn)。這個(gè)指標(biāo)確保RAG系統(tǒng)不僅準(zhǔn)確,而且對(duì)用戶(hù)意圖“有用”和“響應(yīng)迅速”,彌合了技術(shù)性能與實(shí)際實(shí)用性之間的差距。
可用指標(biāo):??https://docs.ragas.io/en/stable/concepts/metrics/available_metrics/??
4. Ragas 從安裝到評(píng)估
4.1 Ragas 安裝
pip install ragas4.2 準(zhǔn)備需要評(píng)估的RAG系統(tǒng)
這是本次測(cè)試需要評(píng)估的RAG系統(tǒng)
# 配置OpenAI API環(huán)境變量
import os
os.environ["OPENAI_API_KEY"] = "hk-iwtbie100a91e427"
os.environ["OPENAI_API_BASE"] = "https://api.openai-hk.com/v1"
# 導(dǎo)入RAG系統(tǒng)所需的核心庫(kù)
from langchain.document_loaders import PyPDFLoader # PDF文檔加載器
from langchain.text_splitter import RecursiveCharacterTextSplitter # 文本分割器,用于將長(zhǎng)文檔分割成小塊
from langchain_chroma import Chroma # Chroma向量數(shù)據(jù)庫(kù),用于存儲(chǔ)和檢索文檔嵌入
from langchain.embeddings import SentenceTransformerEmbeddings # 句子嵌入模型,用于將文本轉(zhuǎn)換為向量
# 創(chuàng)建PDF加載器實(shí)例,指定BERT論文的路徑
loader = PyPDFLoader('./bert.pdf')
# 加載PDF文檔,返回文檔對(duì)象列表
# 每個(gè)文檔對(duì)象包含頁(yè)面內(nèi)容和元數(shù)據(jù)(如頁(yè)碼、來(lái)源等)
docs = loader.load()
# 導(dǎo)入聊天提示詞模板類(lèi)
from langchain.prompts import ChatPromptTemplate
# 定義RAG系統(tǒng)的提示詞模板
# 這個(gè)模板將指導(dǎo)LLM如何使用檢索到的上下文來(lái)回答問(wèn)題
template = """You are an assistant for question-answering tasks.
Use the following pieces of retrieved context to answer the question.
If you don't know the answer, just say that you don't know.
Use three sentences maximum and keep the answer concise.
Question: {question}
Context: {context}
Answer:
"""
# 從模板字符串創(chuàng)建ChatPromptTemplate對(duì)象
# 這個(gè)對(duì)象可以接受question和context參數(shù)來(lái)生成完整的提示詞
prompt = ChatPromptTemplate.from_template(template)
# print(prompt)
# 導(dǎo)入OpenAI聊天模型和字符串輸出解析器
from langchain_openai import ChatOpenAI
from langchain.schema.output_parser import StrOutputParser
defrag_chain():
"""
創(chuàng)建并返回RAG處理鏈
Returns:
Chain: 完整的RAG處理鏈,包含提示詞模板、語(yǔ)言模型和輸出解析器
"""
# 初始化OpenAI的GPT-4o-mini模型
# temperature=0 確保輸出的一致性和確定性
llm = ChatOpenAI(model_name="gpt-4o-mini", temperature=0)
# 使用管道操作符 | 連接處理鏈的各個(gè)組件
# 處理流程: 提示詞模板 -> 語(yǔ)言模型 -> 字符串解析器
rag_chain = (
prompt # 1. 格式化提示詞
| llm # 2. 發(fā)送給語(yǔ)言模型處理
| StrOutputParser() # 3. 解析輸出為字符串
)
return rag_chain
# 導(dǎo)入父文檔檢索器相關(guān)組件
from langchain.retrievers import ParentDocumentRetriever # 父文檔檢索器核心類(lèi)
from langchain.storage import InMemoryStore # 內(nèi)存存儲(chǔ),用于存儲(chǔ)父文檔
# 配置文檔分割策略
# 父文檔分割器:創(chuàng)建較大的文檔塊,保持上下文完整性
parent_splitter = RecursiveCharacterTextSplitter(chunk_size=1500) # 父文檔塊大小:1500字符
# 子文檔分割器:創(chuàng)建較小的文檔塊,提高檢索精度
child_splitter = RecursiveCharacterTextSplitter(chunk_size=200) # 子文檔塊大小:200字符
# 初始化嵌入模型
# 使用輕量級(jí)但高效的all-MiniLM-L6-v2模型進(jìn)行文本向量化
embeddings = SentenceTransformerEmbeddings(model_name="all-MiniLM-L6-v2")
# 創(chuàng)建向量數(shù)據(jù)庫(kù)
# 用于存儲(chǔ)子文檔的向量表示,支持語(yǔ)義相似性搜索
vectorstore = Chroma(
collection_name="split_parents", # 集合名稱(chēng)
embedding_function=embeddings # 嵌入
)
# 創(chuàng)建內(nèi)存存儲(chǔ)
# 用于存儲(chǔ)父文檔的完整內(nèi)容,通過(guò)ID快速檢索
store = InMemoryStore()
# 創(chuàng)建父文檔檢索器實(shí)例
# 這是整個(gè)檢索系統(tǒng)的核心組件,整合了所有必要的組件
parent_document_retriever = ParentDocumentRetriever(
vectorstore=vectorstore, # 向量數(shù)據(jù)庫(kù):存儲(chǔ)子文檔的向量表示
docstore=store, # 文檔存儲(chǔ):存儲(chǔ)父文檔的完整內(nèi)容
child_splitter=child_splitter, # 子文檔分割器:用于創(chuàng)建小塊進(jìn)行精確匹配
parent_splitter=parent_splitter, # 父文檔分割器:用于創(chuàng)建大塊提供豐富上下文
)
# 將加載的文檔添加到父文檔檢索器中
# 這個(gè)過(guò)程會(huì)自動(dòng)執(zhí)行以下操作:
# 1. 使用parent_splitter將文檔分割成父文檔塊
# 2. 使用child_splitter將父文檔塊進(jìn)一步分割成子文檔塊
# 3. 將子文檔塊向量化并存儲(chǔ)到vectorstore中
# 4. 將父文檔塊存儲(chǔ)到docstore中,并建立父子關(guān)系映射
parent_document_retriever.add_documents(docs)4.3 生成測(cè)試數(shù)據(jù)集
在生產(chǎn)環(huán)境中,評(píng)估RAG系統(tǒng)時(shí)對(duì)于數(shù)據(jù)集的要求:
? 高質(zhì)量、覆蓋面廣的問(wèn)答對(duì),以確保評(píng)測(cè)結(jié)果具有統(tǒng)計(jì)意義和代表性。
? 問(wèn)答對(duì)應(yīng)涵蓋文檔的各個(gè)核心知識(shí)點(diǎn)、邊界情況和易混淆點(diǎn)。
? 問(wèn)題類(lèi)型應(yīng)多樣化,包括事實(shí)性、推理性、細(xì)節(jié)性和開(kāi)放性問(wèn)題。
? 標(biāo)準(zhǔn)答案(Ground Truth)需經(jīng)過(guò)人工校驗(yàn),確保準(zhǔn)確無(wú)歧義。
實(shí)際操作中,可以結(jié)合人工標(biāo)注與大模型輔助生成,構(gòu)建更大規(guī)模的評(píng)測(cè)集,以滿(mǎn)足生產(chǎn)環(huán)境下對(duì)系統(tǒng)性能評(píng)估的嚴(yán)苛要求。
本次測(cè)試基于BERT論文,使用GPT生成3對(duì)問(wèn)答對(duì)用于測(cè)試。
# 定義評(píng)估問(wèn)題集合
# 這些問(wèn)題涵蓋了BERT論文的關(guān)鍵技術(shù)點(diǎn),用于全面評(píng)估RAG系統(tǒng)的性能
questions = [
"What are the two main tasks BERT is pre-trained on?",
"What model sizes are reported for BERT, and what are their specifications?",
"How does BERT's architecture facilitate the use of a unified model across diverse NLP tasks?"
]
# 定義標(biāo)準(zhǔn)答案(Ground Truth)
ground_truths = [
"Masked LM (MLM) and Next Sentence Prediction (NSP).",
"BERTBASE (L=12, H=768, A=12, Total Parameters=110M) and BERTLARGE (L=24, H=1024, A=16, Total Parameters=340M).",
"BERT uses a multi-layer bidirectional Transformer encoder architecture, allowing for minimal task-specific architecture modifications in fine-tuning."
]4.4 準(zhǔn)備評(píng)估數(shù)據(jù)
一個(gè)完整的評(píng)估數(shù)據(jù)集應(yīng)包含用戶(hù)查詢(xún)、RAG 系統(tǒng)檢索到的上下文、RAG 系統(tǒng)生成的響應(yīng),以及可選的真實(shí)答案。通過(guò)上邊的問(wèn)答對(duì)來(lái)生成最終評(píng)估數(shù)據(jù)集
def format_docs(relevant_docs):
"""
將檢索到的文檔列表格式化為單個(gè)字符串
Args:
relevant_docs: 檢索器返回的文檔對(duì)象列表
Returns:
str: 用換行符連接的文檔內(nèi)容字符串
"""
return"\n".join(doc.page_content for doc in relevant_docs)
defcreate_ragas_dataset(rag_chain, retriever):
"""
創(chuàng)建Ragas評(píng)估所需的數(shù)據(jù)集
這個(gè)函數(shù)執(zhí)行完整的RAG流程并收集評(píng)估所需的所有數(shù)據(jù):
1. 對(duì)每個(gè)問(wèn)題使用檢索器獲取相關(guān)文檔
2. 使用RAG鏈生成答案
3. 收集所有必要的數(shù)據(jù)用于評(píng)估
Args:
rag_chain: RAG處理鏈,用于生成答案
retriever: 文檔檢索器,用于獲取相關(guān)上下文
Returns:
Dataset: 包含評(píng)估所需所有字段的HuggingFace數(shù)據(jù)集
"""
answers = [] # 存儲(chǔ)RAG系統(tǒng)生成的答案
contexts = [] # 存儲(chǔ)檢索到的上下文文檔
# 對(duì)每個(gè)評(píng)估問(wèn)題執(zhí)行RAG流程
for query in questions:
# 1. 使用檢索器獲取相關(guān)文檔
relevant_docs = retriever.invoke(query)
# 2. 格式化上下文并生成答案
formatted_context = format_docs(relevant_docs)
answer = rag_chain.invoke({
"context": formatted_context,
"question": query
})
# 3. 收集結(jié)果
answers.append(answer)
contexts.append([doc.page_content for doc in relevant_docs])
# 構(gòu)建Ragas評(píng)估數(shù)據(jù)集的標(biāo)準(zhǔn)格式
data = {
"user_input": questions, # 用戶(hù)輸入的問(wèn)題
"response": answers, # RAG系統(tǒng)生成的答案
"retrieved_contexts": contexts, # 檢索到的上下文文檔
"reference": ground_truths # 標(biāo)準(zhǔn)參考答案
}
# 創(chuàng)建HuggingFace數(shù)據(jù)集對(duì)象
dataset = Dataset.from_dict(data)
return dataset4.5 選擇并初始化 Ragas 指標(biāo)
根據(jù)評(píng)估目標(biāo),選擇一個(gè)或多個(gè) Ragas 指標(biāo)(詳情見(jiàn)第3章)。
例如,如果關(guān)注生成答案的事實(shí)準(zhǔn)確性,可以選擇“忠實(shí)度”和“答案相關(guān)性”;
如果關(guān)注檢索質(zhì)量,則選擇“上下文精確度”和“上下文召回率”。然后,使用配置初始化這些指標(biāo) 。
# 導(dǎo)入Ragas評(píng)估框架的核心指標(biāo)
from ragas.metrics import (
answer_relevancy, # 答案相關(guān)性:評(píng)估生成答案與問(wèn)題的相關(guān)程度
faithfulness, # 忠實(shí)度:評(píng)估答案是否基于檢索到的上下文
context_recall, # 上下文召回率:評(píng)估檢索到的上下文是否包含回答問(wèn)題所需的信息
context_precision # 上下文精確率:評(píng)估檢索到的上下文中相關(guān)信息的比例
)
# 導(dǎo)入Ragas評(píng)估函數(shù)和數(shù)據(jù)集處理庫(kù)
from ragas import evaluate # 主要評(píng)估函數(shù)
from datasets import Dataset # HuggingFace數(shù)據(jù)集庫(kù),用于構(gòu)建評(píng)估數(shù)據(jù)集4.6 運(yùn)行評(píng)估
使用 Ragas 的 ??evaluate?? 函數(shù),將準(zhǔn)備好的數(shù)據(jù)集、選擇的指標(biāo)作為輸入。
Ragas 將自動(dòng)計(jì)算每個(gè)樣本的指標(biāo)分?jǐn)?shù),并聚合為數(shù)據(jù)集的整體分?jǐn)?shù)。
def evaluate_ragas_dataset(ragas_dataset):
"""
使用Ragas框架評(píng)估RAG系統(tǒng)性能
該函數(shù)對(duì)構(gòu)建好的數(shù)據(jù)集進(jìn)行多維度評(píng)估,包括檢索質(zhì)量和生成質(zhì)量。
Args:
ragas_dataset: 包含問(wèn)題、答案、上下文和參考答案的數(shù)據(jù)集
Returns:
EvaluationResult: 包含各項(xiàng)評(píng)估指標(biāo)得分的結(jié)果對(duì)象
"""
# 執(zhí)行Ragas評(píng)估,使用四個(gè)核心指標(biāo)
result = evaluate(
ragas_dataset,
metrics=[
context_recall, # 上下文召回率:檢索是否包含了回答問(wèn)題所需的信息
context_precision, # 上下文精確率:檢索內(nèi)容的相關(guān)性比例
faithfulness, # 忠實(shí)度:答案是否忠實(shí)于檢索到的上下文
answer_relevancy # 答案相關(guān)性:答案與問(wèn)題的相關(guān)程度
],
)
return result
# 步驟1: 創(chuàng)建用于父文檔檢索器評(píng)估的RAG處理鏈
# 這個(gè)鏈將與父文檔檢索器配合工作,處理檢索到的豐富上下文
parent_document_qa_chain = rag_chain()
# 步驟2: 構(gòu)建父文檔檢索器的評(píng)估數(shù)據(jù)集
# 這個(gè)過(guò)程將:
# 1. 對(duì)每個(gè)評(píng)估問(wèn)題使用父文檔檢索器檢索相關(guān)父文檔
# 2. 使用RAG鏈基于檢索到的父文檔生成答案
# 3. 收集所有必要的數(shù)據(jù)用于Ragas評(píng)估
parent_document_dataset = create_ragas_dataset(parent_document_qa_chain, parent_document_retriever)
# 步驟3: 執(zhí)行Ragas評(píng)估
# 使用四個(gè)核心指標(biāo)對(duì)父文檔檢索器的性能進(jìn)行全面評(píng)估
# 這可能需要幾分鐘時(shí)間,因?yàn)樾枰{(diào)用LLM進(jìn)行評(píng)估計(jì)算
print("開(kāi)始執(zhí)行Ragas評(píng)估,請(qǐng)稍候...")
parent_document_result = evaluate_ragas_dataset(parent_document_dataset)
print("評(píng)估完成!")4.7 分析結(jié)果
評(píng)估完成后,Ragas 會(huì)返回一個(gè)包含所有指標(biāo)分?jǐn)?shù)的對(duì)象。

這些結(jié)果可以導(dǎo)出為 pandas DataFrame,以便進(jìn)行詳細(xì)的樣本級(jí)分析。

較高的指標(biāo)值表示更好的性能。
這個(gè)迭代的評(píng)估過(guò)程是 RAG 系統(tǒng)開(kāi)發(fā)和優(yōu)化的核心。通過(guò)系統(tǒng)地運(yùn)行測(cè)試、分析結(jié)果并根據(jù)指標(biāo)反饋調(diào)整組件,開(kāi)發(fā)人員可以持續(xù)改進(jìn) RAG 系統(tǒng)的性能、可靠性和用戶(hù)滿(mǎn)意度。
5. RAGAS的局限性
雖然 Ragas 在 RAG 系統(tǒng)評(píng)估方面提供了強(qiáng)大的工具和創(chuàng)新的“無(wú)參考”評(píng)測(cè)能力,但在實(shí)際應(yīng)用中仍存在一些局限性,開(kāi)發(fā)者在使用時(shí)需加以關(guān)注:
1)對(duì)大模型的依賴(lài)
Ragas 的許多評(píng)估指標(biāo)(如忠實(shí)度、答案相關(guān)性等)依賴(lài)于大型語(yǔ)言模型(LLM)作為“裁判”進(jìn)行自動(dòng)化判斷。這意味著評(píng)估的準(zhǔn)確性和一致性很大程度上取決于所用 LLM 的能力和偏好。如果 LLM 本身存在幻覺(jué)或理解偏差,評(píng)估結(jié)果可能不完全可靠。
2)評(píng)估成本較高
由于需要多次調(diào)用 LLM 進(jìn)行自動(dòng)化評(píng)判,Ragas 的評(píng)估過(guò)程在大規(guī)模數(shù)據(jù)集上可能帶來(lái)較高的計(jì)算和經(jīng)濟(jì)成本,尤其是在使用付費(fèi) API(如 OpenAI GPT-4)時(shí)。這對(duì)資源有限的團(tuán)隊(duì)可能是一個(gè)實(shí)際障礙。
3)指標(biāo)解釋性有限
盡管 Ragas 提供了多維度的量化指標(biāo),但這些分?jǐn)?shù)的具體含義和改進(jìn)方向有時(shí)并不直觀。例如,某些指標(biāo)分?jǐn)?shù)較低時(shí),開(kāi)發(fā)者仍需結(jié)合樣本級(jí)分析和人工檢查,才能定位具體問(wèn)題所在。
4)無(wú)法完全替代人工評(píng)測(cè)
雖然 Ragas 大幅減少了人工標(biāo)注的需求,但在高風(fēng)險(xiǎn)或高要求場(chǎng)景下(如醫(yī)療、金融),人工評(píng)測(cè)仍然不可或缺。Ragas 更適合作為自動(dòng)化、快速迭代的輔助工具,而非最終的質(zhì)量裁決者。
5)對(duì)數(shù)據(jù)集構(gòu)建質(zhì)量的敏感性
Ragas 的評(píng)估效果依賴(lài)于輸入數(shù)據(jù)集的合理性和代表性。如果評(píng)測(cè)數(shù)據(jù)集本身存在偏差或覆蓋不全,評(píng)估結(jié)果也會(huì)受到影響。因此,數(shù)據(jù)集的設(shè)計(jì)和采樣同樣需要嚴(yán)格把控。
本文轉(zhuǎn)載自??????AI取經(jīng)路??,作者:AI取經(jīng)路

















