技術筆記 #009|RAGAS 的指標到底都在評估什麼?我決定用《全面啟動》來記🎬
強迫自己每天輸出 Day018
最近又在看 RAG 的評估,每次看到 RAGAS 的:
Context Precision、Context Recall、Faithfulness、Answer Relevancy⋯
都會有種「我知道我看過,但它到底又是在評估哪一段?」的感覺🫠
後來想了一下,乾脆用我很喜歡的電影,《全面啟動》來記。
假設今天 Cobb 接到一個任務。
他不能只靠自己腦中的記憶完成,所以要先找到情報,再拿著這些情報完成任務。
整個過程其實就蠻像 RAG:
接到問題 → 找資料 → 拿資料回答
那 RAGAS 在做的事情,就有點像任務結束後開始檢討:
❶ Context Precision:情報準不準?
找回來的情報裡,有多少是真的有用?
如果帶了一大堆看起來相關、實際上根本用不到的資料,Precision 就會受到影響。
→ 我自己會記成:找得準不準
❷ Context Recall:情報找齊了嗎?
完成任務真正需要的情報,有沒有漏掉?
可能你找回來的每一份資料都很相關,但最重要的那份偏偏沒找到。
→ 找得齊不齊
❸ Faithfulness:有沒有照情報講?
情報明明寫 A,最後卻自己推成 B,甚至講了一個情報裡根本沒出現的東西。
→ 有沒有自己亂補
❹ Answer Relevancy:最後有回答問題嗎?
情報找對了,也沒有亂講,但委託人問 A,你最後講了一大圈卻沒真的回答 A。
→ 有沒有答到問題
拆成兩組來記
所以後來我把 RAGAS 先拆成兩組記:
🔎 Retrieval(檢索層):準不準、齊不齊
- Context Precision
- Context Recall
🗣️ Generation(生成層):有沒有亂講、有沒有答題
- Faithfulness
- Answer Relevancy
這樣再回頭看那些英文 Metric,好像就沒那麼容易搞混了 XD
而且這樣拆還有一個我覺得蠻實用的地方:
RAG 答錯的時候,可以先判斷到底是「沒找對資料」,還是「資料明明找到了,LLM 卻沒答好」。
不然最後只看到一個「答案錯了」,其實還是不知道要從 Retriever 還是 Generator 開始改。
你們還有什麼每次都要重新查一次才記得的 LLM / RAG 名詞嗎🤣
搞不好也可以找一部電影來記。