RAG質量評估

? ? ?當完成了一個RAG系統的開發工作以后,還需要對該系統的性能進行評估。如何對RAG系統的性能進行評估呢?仔細分析RAG系統的產出成果,主要涉及以下幾點:

(1)檢索器組件 檢索的相關文檔 context,

(2)生成器組件 產出的最終答案 answer,

(3)最初的用戶問題 question

因此RAG系統的評估應該將對question、context、answer 三者結合一起評估。

一、RAG 三元組

標準的 RAG 流程就是用戶提出 Query 問題,RAG 應用去召回 Context,然后 LLM 將 Context 組裝,生成滿足 Query 的 Response 回答。那么在這里出現的三元組:—— Query、Context 和 Response 就是 RAG 整個過程中最重要的三元組,它們之間兩兩相互牽制。我們可以通過檢測三元組之間兩兩元素的相關度,來評估這個 RAG 應用的效果:

  • Context Relevance: 衡量召回的 Context 能夠支持 Query 的程度。如果該得分低,反應出了召回了太多與Query 問題無關的內容,這些錯誤的召回知識會對 LLM 的最終回答造成一定影響。
  • Groundedness: 衡量 LLM 的 Response 遵從召回的 Context 的程度。如果該得分低,反應出了 LLM 的回答不遵從召回的知識,那么回答出現幻覺的可能就越大。
  • Answer Relevance:衡量最終的 Response 回答對 Query 提問的相關度。如果該得分低,反應出了可能答不對題。

?二、RagAs評估

RAGAs(RAG Assessment)是一個專為評估 RAG(檢索增強生成)系統 的開源框架。它可以幫助我們來快速評估RAG系統的性能,

1、評估數據

為了評估RAG系統,Ragas需要以下信息:

  • question:用戶輸入的問題。
  • answer:從 RAG 系統生成的答案(由LLM給出)。
  • contexts:根據用戶的問題從外部知識源檢索的上下文即與問題相關的文檔。
  • ?ground_truths: 人類提供的基于問題的真實(正確)答案。 這是唯一的需要人類提供的信息。

官網:https://www.ragas.io/

2、評估指標

Ragas提供了五種評估指標包括:

  • 忠實度(faithfulness)
  • 答案相關性(Answer relevancy)
  • 上下文精度(Context precision)
  • 上下文召回率(Context recall)
  • 上下文相關性(Context relevancy)

(1) 忠實度(faithfulness)

忠實度(faithfulness)衡量了生成的答案(answer)與給定上下文(context)的事實一致性。它是根據answer和檢索到的context計算得出的。并將計算結果縮放到 (0,1) 范圍且越高越好。

如果答案(answer)中提出的所有基本事實(claims)都可以從給定的上下文(context)中推斷出來,則生成的答案被認為是忠實的。為了計算這一點,首先從生成的答案中識別一組claims。然后,將這些claims中的每一項與給定的context進行交叉檢查,以確定是否可以從給定的context中推斷出它。忠實度分數由以下公式得出:

示例:

問題 (question):愛因斯坦出生于何時何地?
上下文 (context):阿爾伯特?愛因斯坦(Albert Einstein,1879 年 3 月 14 日出生)是一位出生于德國的理論物理學家,被廣泛認為是有史以來最偉大和最有影響力的科學家之一
高忠實度答案:愛因斯坦 1879 年 3 月 14 日出生于德國。
低忠實度答案:愛因斯坦于 1879 年 3 月 20 日出生于德國。

(2)答案相關性(Answer relevancy)?

評估指標“答案相關性”重點評估生成的答案(answer)與用戶問題(question)之間相關程度。不完整或包含冗余信息的答案將獲得較低分數。該指標是通過計算question和answer獲得的,它的取值范圍在 0 到 1 之間,其中分數越高表示相關性越好。

當答案直接且適當地解決原始問題時,該答案被視為相關。重要的是,我們對答案相關性的評估不考慮真實情況,而是對答案缺乏完整性或包含冗余細節的情況進行懲罰。為了計算這個分數,LLM會被提示多次為生成的答案生成適當的問題,并測量這些生成的問題與原始問題之間的平均余弦相似度。基本思想是,如果生成的答案準確地解決了最初的問題,LLM應該能夠從答案中生成與原始問題相符的問題。

示例:

問題 (question):法國在哪里,首都是哪里?
低相關性答案:法國位于西歐。
高相關性答案:法國位于西歐,巴黎是其首都。

(3)上下文精度(Context precision)?

上下文精度是一種衡量標準,它評估所有在上下文(contexts)中呈現的與基本事實(ground-truth)相關的條目是否排名較高。理想情況下,所有相關文檔塊(chunks)必須出現在頂層。該指標使用question和計算contexts,值范圍在 0 到 1 之間,其中分數越高表示精度越高。

?(4)上下文召回率(Context recall)?

上下文召回率(Context recall)衡量檢索到的上下文(Context)與人類提供的真實答案(ground truth)的一致程度。它是根據ground truth和檢索到的Context計算出來的,取值范圍在 0 到 1 之間,值越高表示性能越好。

為了根據真實答案(ground truth)估算上下文召回率(Context recall),分析真實答案中的每個句子以確定它是否可以歸因于檢索到的Context。 在理想情況下,真實答案中的所有句子都應歸因于檢索到的Context。

示例:

問題 (question):法國在哪里,首都是哪里?
基本事實 (Ground truth):法國位于西歐,其首都是巴黎。
高的上下文召回率 (High context recall):法國位于西歐,擁有中世紀城市、高山村莊和地中海海灘。其首都巴黎以其時裝屋、盧浮宮等古典藝術博物館和埃菲爾鐵塔等古跡而聞名。
低的上下文召回率 (Low context recall):法國位于西歐,擁有中世紀城市、高山村莊和地中海海灘。該國還以其葡萄酒和精致的美食而聞名。拉斯科的古代洞穴壁畫、里昂的羅馬劇院和宏偉的凡爾賽宮都證明了其豐富的歷史。

?(5)上下文相關性(Context relevancy)?

該指標衡量檢索到的上下文(Context)的相關性,根據用戶問題(question)和上下文(Context)計算得到,并且取值范圍在 (0, 1)之間,值越高表示相關性越好。理想情況下,檢索到的Context應只包含解答question的信息。 我們首先通過識別檢索到的Context中與回答question相關的句子數量來估計 |S| 的值。 最終分數由以下公式確定:

說明:這里的|S|是指Context中存在的與解答question相關的句子數量。

示例:

問題 (question):法國的首都是哪里?

高的上下文相關性 (Context relevancy):法國位于西歐,擁有中世紀城市、高山村莊和地中海海灘。其首都巴黎以其時裝屋、盧浮宮等古典藝術博物館和埃菲爾鐵塔等古跡而聞名。

低的上下文相關性 (Context relevancy):西歐的法國包括中世紀城市、高山村莊和地中海海灘。其首都巴黎以其時裝屋、盧浮宮等古典藝術博物館和埃菲爾鐵塔等古跡而聞名。該國還以其葡萄酒和精致的美食而聞名。拉斯科的古代洞穴壁畫、里昂的羅馬劇院和宏偉的凡爾賽宮都證明了其豐富的歷史。

3、編碼

(1)準備評估數據

RAGAs 作為一個無需參照的評估框架,其評估數據集的準備相對簡單。你需要準備一些?question?和?ground_truths?的配對,從中可以推導出其他所需信息,操作如下:

pip install ragas
from datasets import Datasetquestions = ["客戶經理被投訴了,投訴一次扣多少分?","客戶經理每年評聘申報時間是怎樣的?","客戶經理在工作中有不廉潔自律情況的,發現一次扣多少分?","客戶經理不服從支行工作安排,每次扣多少分?","客戶經理需要什么學歷和工作經驗才能入職?","個金客戶經理職位設置有哪些?"
]ground_truths = ["每投訴一次扣2分","每年一月份為客戶經理評聘的申報時間","在工作中有不廉潔自律情況的每發現一次扣50分","不服從支行工作安排,每次扣2分","須具備大專以上學歷,至少二年以上銀行工作經驗","個金客戶經理職位設置為:客戶經理助理、客戶經理、高級客戶經理、資深客戶經理"
]answers = []
contexts = []# Inference
for query in questions:answers.append(chain.invoke({"question": query}))contexts.append([docs.page_content for docs in retriever.get_relevant_documents(query)])# To dict
data = {"user_input": questions,"response": answers,"retrieved_contexts": contexts,"reference": ground_truths
}# Convert dict to dataset
dataset = Dataset.from_dict(data)

將字典轉換為數據集
dataset = Dataset.from_dict(data)

如果你不關注 context_recall 指標,就不必提供 ground_truths 數據。在這種情況下,你只需準備 question 即可。

(2)評估 RAG 應用

首先,從?ragas.metrics?導入你計劃使用的所有度量標準。然后,使用?evaluate()?函數,簡單地傳入所需的度量標準和已準備好的數據集即可。

# 評測結果
from ragas import evaluate
from ragas.metrics import (faithfulness,answer_relevancy,context_recall,context_precision,
)result = evaluate(dataset = dataset, metrics=[context_precision,context_recall,faithfulness,answer_relevancy,],embeddings=embeddings
)df = result.to_pandas()

下方展示了示例中的 RAGAs 分數:

參考網址

https://zhuanlan.zhihu.com/p/673077106?utm_source=chatgpt.com

RAG Pipeline Evaluation Using RAGAS | Haystack

Ragas: Evaluation Framework for RAG Systems - Build Fast with AI

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/908800.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/908800.shtml
英文地址,請注明出處:http://en.pswp.cn/news/908800.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

LLMs基礎學習(八)強化學習專題(1)

LLMs基礎學習(八)強化學習專題(1) 文章目錄 LLMs基礎學習(八)強化學習專題(1)學習資料資源強化學習是什么強化學習一句話精準定義 強化學習與其他學習類型的對比強化學習 vs 監督學習…

19-Oracle 23 ai Database Sharding-知識準備

小伙伴是不是經常遇見大規模集群和數量的時候,業務就提出要對數據進行sharding。 Oracle 和其他數據庫(如 MySQL、PostgreSQL、MongoDB 等) 為什么要進行分片(sharding),分片的原因是什么,實現…

分類與邏輯回歸 - 一個完整的guide

線性回歸和邏輯回歸其實比你想象的更相似 😃 它們都是所謂的參數模型。讓我們先看看什么是參數模型,以及它們與非參數模型的區別。 線性回歸 vs 邏輯回歸 線性回歸:用于回歸問題的線性參數模型。邏輯回歸:用于分類問題的線性參數…

英語寫作中“每一個”each individual、every individual、every single的用法

一、Individual :個體,相對于團體,例如: Individual competition (個人比賽),相對于team competition (團體比賽) Individual users (個人用戶)…

由于 z(x,y) 的變化導致的影響(那部分被分給了鏈式項)

? 本質問題:為什么鏈式法則中 ? F ? x \frac{\partial F}{\partial x} ?x?F? 不考慮 z z ( x , y ) zz(x,y) zz(x,y)? 🔍 一、關鍵是:偏導數的定義是什么? 我們從最根本的定義開始: ? F ( x , y…

python打卡day44@浙大疏錦行

知識點回顧: 預訓練的概念常見的分類預訓練模型圖像預訓練模型的發展史預訓練的策略預訓練代碼實戰:resnet18 作業: 嘗試在cifar10對比如下其他的預訓練模型,觀察差異,盡可能和他人選擇的不同嘗試通過ctrl進入resnet的…

十一(3) 類,加深對拷貝構造函數的理解

class ClassName { public: // 拷貝構造函數:參數是同類型對象的引用(通常為 const 引用) ClassName(const ClassName& other) { // 復制 other 的成員變量到當前對象 } }; 參數要求:必須是同類型對象的引用&#xff0…

網頁后端開發(基礎1--maven)

maven的作用: Maven是一款管理和構建Java項目的工具。 1.依賴管理: 方便快捷的管理項目依賴的資源(jar包) 不用手動下載jar包,只需要中maven中引用,maven會查找本地倉庫。若本地倉庫沒有,會直…

認識電子元器件---高低邊驅動

目錄 一、基本概念 二、關鍵參數對比 三、工作原理 (1)高邊驅動 (2)低邊驅動 四、典型的應用場景 五、如何選擇 一、基本概念 可以理解成:高低邊驅動是MOS/IGBT的一種應用方式 高低邊驅動是電路拓撲概念&#…

JavaScript 標簽加載

目錄 JavaScript 標簽加載script 標簽的 async 和 defer 屬性,分別代表什么,有什么區別1. 普通 script 標簽2. async 屬性3. defer 屬性4. type"module"5. 各種加載方式的對比6. 使用建議 JavaScript 標簽加載 script 標簽的 async 和 defer …

C/CPP 結構體、聯合體、位段內存計算 指南

C/CPP 結構體、聯合體、位段內存計算 指南 在C語言中,結構體、聯合體和位段是對數據的高級抽象,它們可以讓程序員以更易于理解的方式來操作復雜的數據結構。然而,這些結構在內存中的布局可能并不如它們的語法結構那樣直觀,特別是當…

ASR(語音識別)語音/字幕標注 通過via(via_subtitle_annotator)

文章目錄 1 VIA 官網資料2 語音/字幕標注3 鍵盤快捷鍵常規當一個時間片段被選中時圖像或視頻幀中的空間區域 1 VIA 官網資料 VIA官網:https://www.robots.ox.ac.uk/~vgg/software/via/ VIA官網標注示例:https://www.robots.ox.ac.uk/~vgg/software/via/…

mq安裝新版-3.13.7的安裝

一、下載包,上傳到服務器 https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.13.7/rabbitmq-server-generic-unix-3.13.7.tar.xz 二、 erlang直接安裝 rpm -ivh erlang-26.2.4-1.el8.x86_64.rpm不需要配置環境變量,直接就安裝了。 erl…

高通平臺PCIE EP模式log丟失問題

高通平臺PCIE EP模式log丟失問題 1 問題背景2 問題分析2.1 對比USB2.1.1 Logtool優化2.1.2 Device mhi與fs對比2.2 優化方案2.2.1 Diag系統優化2.2.2 Host mhi優化3 最終成果1 問題背景 高通5G模組如SDX55\SDX62\SDX65\SDX72\SDX75等支持pcie ep模式。會通過pcie與host(如MT7…

Python應用輸入輸出函數

大家好!在 Python 編程中,輸入輸出函數是與用戶進行交互的橋梁。通過輸入函數,我們可以獲取用戶的輸入數據;通過輸出函數,我們可以向用戶展示程序的運行結果。對于初學者來說,掌握基本的輸入輸出操作是編程入門的重要一…

如何使用 Ansible 在 Ubuntu 24.04 上安裝和設置 LNMP

在當今世界,自動化是有效管理和部署 Web 應用程序的關鍵。Ansible 是一個強大的自動化工具,它是一款開源軟件配置、配置管理和應用程序部署工具。本文將指導您使用 Ansible 在 Ubuntu 服務器上安裝 LNMP 堆棧(Linux、Nginx、MySQL、PHP)。 先決條件 為了執行本指南中討論的…

Xela矩陣三軸觸覺傳感器的工作原理解析與應用場景

Xela矩陣三軸觸覺傳感器通過先進技術模擬人類觸覺感知,幫助設備實現精確的力測量與位移監測。其核心功能基于磁性三維力測量與空間位移測量,能夠捕捉多維觸覺信息。該傳感器的設計不僅提升了觸覺感知的精度,還為機器人、醫療設備和制造業的智…

RK3288項目(四)--linux內核之V4L2框架及ov9281驅動分析(中)

目錄 一、引言 二、V4L2其他部件驅動分析 ------>2.1、mipi-dphy ------------>2.1.1、dts ------------>2.1.2、driver ------------>2.1.3、notifier機制 ------------>2.1.4、異步回調 ------------>2.1.5、V4L2 subdev ------>2.2、mipi-csi…

容器-使用slim減少10x+大模型鏡像

slim(原docker-slim)是一個開源工具,全稱SlimToolkit(https://github.com/slimtoolkit/slim),用于基于已有的Docker鏡像減小鏡像的大小,同時盡可能保留容器的功能。它通過分析鏡像的運行環境和應…

Golang基礎學習

?????????? 初見golang語法 go項目路徑 cd $GOPATH //ls可以看到有bin,pkg,src三個文件 cd src/ mkdir GolangStudy cd GolangStudy mkdir firstGolanggo程序執行: go run hello.go//如果想分兩步執行: go build hello.go ./hello導入包的…