給RAG系統做一次全面「體檢」,亞馬遜開源RAGChecker診斷工具
亞馬遜上海人工智能研究院成立于 2018 年,已成為深度學習研究領域的領先機構之一,共發表了~90 篇論文。研究領域包括深度學習的基礎理論、自然語言處理、計算機視覺、圖機器學習、高性能計算、智能推薦系統、欺詐檢測與風險控制、知識圖譜構建以及智能決策系統等。研究院率先研究和開發了世界領先的深度圖學習庫 Deep Graph Library (DGL),結合了深度學習和圖結構表示的優勢,影響許多重要應用領域。
檢索增強生成(Retrieval-Augmented Generation, RAG)技術正在徹底革新 AI 應用領域,通過將外部知識庫和 LLM 內部知識的無縫整合,大幅提升了 AI 系統的準確性和可靠性。然而,隨著 RAG 系統在各行各業的廣泛部署,其評估和優化面臨著重大挑戰。現有的評估方法,無論是傳統的端到端指標還是針對單一模塊的評估,都難以全面反映 RAG 系統的復雜性和實際表現。特別是,它們只能提供一個最終打分報告,僅反映 RAG 系統的性能優劣。
人生病了需要去醫院做檢查,那 RAG 系統生病了,如何診斷呢?
近日,亞馬遜上海人工智能研究院推出了一款名為 RAGChecker 的診斷工具為 RAG 系統提供細粒度、全面、可靠的診斷報告,并為進一步提升性能,提供可操作的方向。本文詳細介紹了這個 RAG 的 “顯微鏡”,看看它如何幫助開發者們打造更智能、更可靠的 RAG 系統。
- 論文:https://arxiv.org/pdf/2408.08067
- 項目地址:https://github.com/amazon-science/RAGChecker
RAGChecker: RAG 系統的全面診斷工具
想象一下,如果我們能對 RAG 系統進行一次全面的 “體檢”,會是什么樣子?RAGChecker 就是為此而生的。它不僅能評估系統的整體表現,還能深入分析檢索和生成兩大核心模塊的性能。
RAGChecker 的主要特點包括:
- 細粒度評估:RAGChecker 采用基于聲明(claim)級別的蘊含關系檢查,而非簡單的回復級別評估。這種方法能夠對系統性能進行更加詳細和微妙的分析,提供深入的洞察。
- 全面的指標體系:該框架提供了一套涵蓋 RAG 系統各個方面性能的指標,包括忠實度(faithfulness)、上下文利用率(context utilization)、噪聲敏感度(noise sensitivity)和幻覺(hallucination)等。
- 經過驗證的有效性:可靠性測試表明,RAGChecker 的評估結果與人類判斷有很強的相關性,其表現超過了其他現有的評估指標。這保證了評估結果的可信度和實用性。
- 可操作的洞察:RAGChecker 提供的診斷指標為改進 RAG 系統提供了明確的方向指導。這些洞察能夠幫助研究人員和實踐者開發出更加有效和可靠的 AI 應用。
RAGChecker 的核心指標
RAGChecker 的指標體系可以用下圖直觀的理解:
這些指標被分為三大類:
1. 整體指標:
- Precision(精確率):模型回答中正確陳述的比例
- Recall(召回率):模型回答中包含的標準答案中陳述的比例
- F1 score(F1 分數):精確率和召回率的調和平均數,提供平衡的性能度量
2. 檢索模塊指標:
- Context Precision(上下文精確率):在所有檢索塊中,包含至少一個標準答案陳述的塊的比例
- Claim Recall(陳述召回率):被檢索塊覆蓋的標準答案陳述的比例
3. 生成模塊指標:
- Context Utilization(上下文利用率):評估生成模塊如何有效利用從檢索塊中獲取的相關信息來產生正確的陳述。這個指標反映了系統對檢索到的信息的利用效率。
- Noise Sensitivity(噪音敏感度):衡量生成模塊在回答中包含來自檢索塊的錯誤信息的傾向。這個指標幫助識別系統對不相關或錯誤信息的敏感程度。
- Hallucination(幻覺):測量模型生成既不存在于檢索塊也不在標準答案中的信息的頻率。這就像是捕捉模型 “憑空捏造” 信息的情況,是評估模型可靠性的重要指標。
- Self-knowledge(模型內部知識):評估模型在未從檢索塊獲得信息的情況下,正確回答問題的頻率。這反映了模型在需要時利用自身內置知識的能力。
- Faithfulness(忠實度):衡量生成模塊的響應與檢索塊提供的信息的一致程度。這個指標反映了系統對給定信息的依從性。
這些指標就像是 RAG 系統的 “體檢報告”,幫助開發者全面了解系統的健康狀況,并找出需要改進的地方。
開始使用 RAGChecker
對于想要嘗試 RAGChecker 的開發者來說,上手過程非常簡單。以下是快速入門的步驟:
1. 環境設置:首先,安裝 RAGChecker 及其依賴:
pip install ragchecker
python -m spacy download en_core_web_sm
2. 準備數據:將 RAG 系統的輸出準備成特定的 JSON 格式,包括查詢、標準答案、模型回答和檢索的上下文。數據格式應如下所示:
{
"results": [
{
"query_id": "< 查詢 ID>",
"query": "< 輸入查詢 >",
"gt_answer": "< 標準答案 >",
"response": "<RAG 系統生成的回答 >",
"retrieved_context": [
{
"doc_id": "< 文檔 ID>",
"text": "< 檢索塊的內容 >"
},
...
]
},
...
]
}
3. 運行評估:
- 使用命令行:
ragchecker-cli \
--input_path=examples/checking_inputs.json \
--output_path=examples/checking_outputs.json
- 或者使用 Python 代碼:
from ragchecker import RAGResults, RAGChecker
from ragchecker.metrics import all_metrics
# 從 JSON 初始化 RAGResults
with open ("examples/checking_inputs.json") as fp:
rag_results = RAGResults.from_json (fp.read ())
# 設置評估器
evaluator = RAGChecker ()
# 評估結果
evaluator.evaluate (rag_results, all_metrics)
print (rag_results)
4. 分析結果:RAGChecker 會輸出 json 格式的文件來展示評估指標,幫助你了解 RAG 系統的各個方面表現。
輸出結果的格式如下:
通過分析這些指標,開發者可以針對性地優化 RAG 系統的各個方面。例如:
- 較低的 Claim Recall(陳述召回率)可能表明需要改進檢索策略。這意味著系統可能沒有檢索到足夠多的相關信息,需要優化檢索算法或擴展知識庫。
- 較高的 Noise Sensitivity(噪音敏感度)表明生成模塊需要提升其推理能力,以便更好地從檢索到的上下文中區分相關信息和不相關或錯誤的細節。這可能需要改進模型的訓練方法或增強其對上下文的理解能力。
- 高 Hallucination(幻覺)分數可能指出需要更好地將生成模塊與檢索到的上下文結合。這可能涉及改進模型對檢索信息的利用方式,或增強其對事實的忠實度。
- Context Utilization(上下文利用率)和 Self-knowledge(模型內部知識)之間的平衡可以幫助你優化檢索信息利用和模型固有知識之間的權衡。這可能涉及調整模型對檢索信息的依賴程度,或改進其綜合利用多種信息源的能力。
通過這種方式,RAGChecker 不僅提供了詳細的性能評估,還為 RAG 系統的具體優化方向提供了清晰的指導。
在 LlamaIndex 中使用 RAGChecker
RAGChecker 現在已經與 LlamaIndex 集成,為使用 LlamaIndex 構建的 RAG 應用提供了強大的評估工具。如果你想了解如何在 LlamaIndex 項目中使用 RAGChecker,可以參考 LlamaIndex 文檔中關于 RAGChecker 集成的部分。
結語
RAGChecker 的推出為 RAG 系統的評估和優化提供了一個新的工具。它為開發者提供了一把 “顯微鏡”,幫助他們深入了解、精準優化 RAG 系統。無論你是正在研究 RAG 技術的學者,還是致力于開發更智能 AI 應用的工程師,RAGChecker 都將是你不可或缺的得力助手。讀者可以訪問 https://github.com/amazon-science/RAGChecker 獲取更多信息或參與到項目的開發中來。