自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

RAGChecker:顯著超越RAGAS,一個(gè)精細(xì)化評(píng)估和診斷 RAG 系統(tǒng)的創(chuàng)新框架 精華

發(fā)布于 2024-10-29 11:50
瀏覽
0收藏

RAG應(yīng)用已經(jīng)是當(dāng)下利用大模型能力的典型應(yīng)用代表,也獲得了極大的推廣,各種提升RAG性能的技術(shù)層出不窮。然而,如何全面、準(zhǔn)確地評(píng)估 RAG 系統(tǒng)一直是一個(gè)挑戰(zhàn)。傳統(tǒng)評(píng)估方法存在諸多局限性:無法有效評(píng)估長(zhǎng)文本回復(fù)、難以區(qū)分檢索和生成模塊的錯(cuò)誤來源、與人類判斷的相關(guān)性不高。為此,亞馬遜和上海交通大學(xué)等研究團(tuán)隊(duì)開發(fā)了 RAGChecker[1],這是一個(gè)專為 RAG 系統(tǒng)設(shè)計(jì)的創(chuàng)新評(píng)估框架。

RAGChecker:顯著超越RAGAS,一個(gè)精細(xì)化評(píng)估和診斷 RAG 系統(tǒng)的創(chuàng)新框架-AI.x社區(qū)圖片

RAGChecker 的核心亮點(diǎn)在于其細(xì)粒度的評(píng)估方法。它首先使用大型語言模型將文本分解為獨(dú)立的聲明,然后通過另一個(gè)模型驗(yàn)證每個(gè)聲明的準(zhǔn)確性。這種方法不僅能夠評(píng)估整體性能,還能深入診斷檢索和生成模塊的具體問題。

RAGChecker 提供了三類指標(biāo):

1)整體指標(biāo):包括精度、召回率和 F1 分?jǐn)?shù),全面反映 RAG 系統(tǒng)的輸出質(zhì)量。

2)檢索指標(biāo):

  • 聲明召回:衡量檢索上下文覆蓋標(biāo)準(zhǔn)答案聲明的比例。
  • 上下文精度:評(píng)估檢索上下文中相關(guān) chunks 的比例。

3)生成指標(biāo):

  • 上下文利用率:反映生成器有效利用相關(guān)信息的程度。
  • 幻覺:量化生成的錯(cuò)誤信息比例。
  • 忠實(shí)度:衡量生成器對(duì)檢索上下文的依賴程度。
  • 相關(guān)/不相關(guān)噪聲敏感度:評(píng)估生成器對(duì)不同類型噪聲的敏感程度。
  • 自知識(shí):反映生成器依賴內(nèi)部知識(shí)的程度。

使用方法

RAGChecker 提供了多種使用方法,包含命令行、python 編碼等方式,還可以與主流 LLM 開發(fā)框架集成,如 llamaindex。

  • 安裝

pip install ragchecker
python -m spacy download en_core_web_sm
  • 使用命令行

ragchecker-cli \
    --input_path=examples/checking_inputs.json \
    --output_path=examples/checking_outputs.json \
    --extractor_name=bedrock/meta.llama3-1-70b-instruct-v1:0 \
    --checker_name=bedrock/meta.llama3-1-70b-instruct-v1:0 \
    --batch_size_extractor=64 \
    --batch_size_checker=64 \
    --metrics all_metrics \
    # --disable_joint_check  # uncomment this line for one-by-one checking, slower but slightly more accurate
  • 使用 python

from ragchecker import RAGResults, RAGChecker
from ragchecker.metrics import all_metrics


# initialize ragresults from json/dict
with open("examples/checking_inputs.json") as fp:
    rag_results = RAGResults.from_json(fp.read())

# set-up the evaluator
evaluator = RAGChecker(
    extractor_name="bedrock/meta.llama3-1-70b-instruct-v1:0",
    checker_name="bedrock/meta.llama3-1-70b-instruct-v1:0",
    batch_size_extractor=32,
    batch_size_checker=32
)

# evaluate results with selected metrics or certain groups, e.g., retriever_metrics, generator_metrics, all_metrics
evaluator.evaluate(rag_results, all_metrics)
print(rag_results)

"""Output
RAGResults(
  2 RAG results,
  Metrics:
  {
    "overall_metrics": {
      "precision": 76.4,
      "recall": 62.5,
      "f1": 68.3
    },
    "retriever_metrics": {
      "claim_recall": 61.4,
      "context_precision": 87.5
    },
    "generator_metrics": {
      "context_utilization": 87.5,
      "noise_sensitivity_in_relevant": 19.1,
      "noise_sensitivity_in_irrelevant": 0.0,
      "hallucination": 4.5,
      "self_knowledge": 27.3,
      "faithfulness": 68.2
    }
  }
)
"""
  • 與 llamaindex 集成

# User query and groud truth answer
user_query = "What is RAGChecker?"
gt_answer = "RAGChecker is an advanced automatic evaluation framework designed to assess and diagnose Retrieval-Augmented Generation (RAG) systems. It provides a comprehensive suite of metrics and tools for in-depth analysis of RAG performance."


# Get response from LlamaIndex
response_object = rag_application.query(user_query)

# Convert to RAGChecker format
rag_result = response_to_rag_results(
    query=user_query,
    gt_answer=gt_answer,
    response_object=response_object,
)

# Create RAGResults object
rag_results = RAGResults.from_dict({"results": [rag_result]})
print(rag_results)

實(shí)驗(yàn)結(jié)果

RAGChecker 的有效性已通過大規(guī)模實(shí)驗(yàn)和人工評(píng)估得到驗(yàn)證。結(jié)果顯示,RAGChecker 的評(píng)分與人類判斷的相關(guān)性顯著高于現(xiàn)有評(píng)估方法。在 Pearson 相關(guān)性上,RAGChecker 達(dá)到了 61.93%,而最接近的基線方法 RAGAS 僅為 48.31%。

RAGChecker:顯著超越RAGAS,一個(gè)精細(xì)化評(píng)估和診斷 RAG 系統(tǒng)的創(chuàng)新框架-AI.x社區(qū)

關(guān)鍵要點(diǎn)

利用 RAGChecker,研究人員評(píng)估了 8 個(gè)最先進(jìn)的 RAG 系統(tǒng),覆蓋了 10 個(gè)不同領(lǐng)域的數(shù)據(jù)集。

RAGChecker:顯著超越RAGAS,一個(gè)精細(xì)化評(píng)估和診斷 RAG 系統(tǒng)的創(chuàng)新框架-AI.x社區(qū)

通過分析結(jié)果,他們發(fā)現(xiàn)了一些關(guān)鍵洞見:

  • 檢索器的質(zhì)量至關(guān)重要。無論使用何種生成器,更好的檢索器都能帶來一致的性能提升。例如,將 BM25 檢索器替換為 E5-Mistral 檢索器,在使用 GPT-4 作為生成器時(shí),整體 F1 分?jǐn)?shù)從 50.3 提高到 52.7 。
  • 生成器模型的規(guī)模越大,整體性能越好。這體現(xiàn)在更高的上下文利用率、更低的噪聲敏感度和更少的幻覺。以 Llama3 系列為例,70B 版本在各項(xiàng)指標(biāo)上都優(yōu)于 8B 版本。
  • 開源模型在區(qū)分準(zhǔn)確信息和噪聲方面表現(xiàn)較差。它們傾向于過度信任上下文,特別是在檢索質(zhì)量提高時(shí)。例如,Llama3-70B 的忠實(shí)度從 93.2%上升到 95.9%,而 GPT-4 僅從 87.9%上升到 92.9%。
  • 存在檢索召回和生成器噪聲敏感度之間的權(quán)衡。提高檢索召回率會(huì)不可避免地引入更多噪聲,從而增加生成器的噪聲敏感度。數(shù)據(jù)顯示,使用 E5-Mistral 檢索器時(shí),聲明召回率從 74.0%提高到 83.5%,但相關(guān)噪聲敏感度也從 26.2%上升到 28.9%。

基于這些發(fā)現(xiàn),研究者提出了幾點(diǎn)改進(jìn) RAG 系統(tǒng)的建議:

  • 優(yōu)先提升檢索器性能,如使用更好的嵌入模型或適度增加檢索 chunk 數(shù)量和大小。實(shí)驗(yàn)表明,將 chunk 大小從 150 增加到 300,可以將整體 F1 分?jǐn)?shù)從 52.6 提高到 53.4 。
  • 在有限上下文長(zhǎng)度的情況下,使用較少數(shù)量的大 chunks 優(yōu)于較多數(shù)量的小 chunks 。這可以提高上下文精度,從而減少噪聲影響。
  • 針對(duì)不同的應(yīng)用場(chǎng)景和用戶偏好,可以通過調(diào)整生成提示來平衡上下文利用率、噪聲敏感度和忠實(shí)度。例如,通過優(yōu)化提示詞,可以將 GPT-4 的忠實(shí)度從 92.2%提高到 93.6%。
  • 對(duì)于開源模型,需要著重提升其推理能力,以更好地區(qū)分和利用上下文中的有用信息。這可能需要在訓(xùn)練過程中引入更多的推理任務(wù)。

小結(jié)

RAGChecker 為全面評(píng)估和診斷 RAG 系統(tǒng)提供了一個(gè)強(qiáng)大而靈活的工具。通過揭示 RAG 系統(tǒng)中檢索和生成模塊的復(fù)雜交互,以及不同設(shè)計(jì)選擇帶來的影響,RAGChecker 不僅能幫助研究人員更好地理解和改進(jìn)現(xiàn)有 RAG 系統(tǒng),還為未來 RAG 系統(tǒng)的優(yōu)化和創(chuàng)新指明了方向。

參考資料

[1]RAGChecker: https://github.com/amazon-science/RAGChecker

本文轉(zhuǎn)載自 ??AI工程化??,作者: ully


標(biāo)簽
收藏
回復(fù)
舉報(bào)
回復(fù)
相關(guān)推薦