论文分享|RAG理论-第二篇-评估

0.前言

本系列以同济大学的检索增强生成(RAG)综述[1],ACL2023 检索增强语言模型(RALM) Tutorial[2]作为参考材料,讲解RAG的前世今身,包含概述,评估方法,检索器,生成器,增强方法,多模态RAG等内容。

本篇为评估篇,介绍RAG的评估目标以及常见的基准和工具

1.评估目标

1.1 质量

一般从检索质量生成质量两方面进行评估。

1.1.1 检索质量

首先需要评估数据,可以采用现有信息检索数据集或用LLM构造自己领域的专属数据集,对每个查询-文档对都需要标注是否相关,或者相关程度

一般采用搜索引擎,推荐系统和信息检索系统中的指标来衡量RAG检索效果。比如Hit Rate(类似Recall@K),MRR,NDCG[3]。

1.1.2 生成质量

生成质量评估可以根据生成内容的目标来分类,即无标签的和有标签。对于无标签内容,主要从生成答案的诚实性,相关性和无害性来评估。对于有标签内容,可以从生成内容的准确性来评估。检索和生成质量都可以用人工自动评估方法[4,5]。

1.2 需求

1.2.1 质量需求

包含上下文相关性,答案诚实性和答案相关性[6,7,8]。

  • 上下文相关性:检索到的文档的准确性和特异性,确保相关性,尽量降低无关内容的处理成本。(检索
  • 答案诚实性:生成的答案相对于检索到的上下文保持真实和一致。(生成
  • 答案相关性:生成的答案和用户提出问题相关,有效地解决核心问题。(生成

1.2.2 能力需求

包含四个方面的能力用来评估RAG的适应性和效率[9,10]:

  • 噪声鲁棒性:模型管理和问题相关缺乏足够信息的文档的能力。(检索
  • 负排斥:当检索到的文档不包含回答问题所必需的知识时,模型是否能够拒绝回答。(生成
  • 信息集成:从多个文档中综合信息来解决复杂问题能力。(生成
  • 反事实鲁棒性:测试模型识别和忽略文档中不准确信息的能力,即使已经被要求使用错误信息。(检索

1.3 评价指标

[1]中的下图展示了各个需求对应的指标:

img

接下来介绍常见指标的定义。首先是机器学习常见指标:

  • Accuracy:正确识别正负样本的比例(即考虑每个样本的预测是否正确)。 a c c u r a c y = T P + T N P + N accuracy=\frac {TP+TN} {P+N} accuracy=P+NTP+TN
  • Recall:正确识别正样本的比例。(即所有的正样本被召回的比例)。 r e c a l l = T P T P + F N recall=\frac {TP} {TP+FN} recall=TP+FNTP
  • Precision预测为正样本的样本中确实为正样本的比例(只考虑预测为正样本的这一部分)。 p r e c i s i o n = T P T P + F P precision=\frac {TP} {TP+FP} precision=TP+FPTP
  • F分数 F β = ( 1 + β 2 ) × p r e c i s i o n × r e c a l l β 2 × p r e c i s i o n + r e c a l l F_\beta=\frac {(1+\beta^2)\times precision\times recall} {\beta^2\times precision + recall} Fβ=β2×precision+recall(1+β2)×precision×recall

之后是一些常见的推荐/检索指标:

  • EM(Exact Match):常用于问答系统,预测中和正确答案(ground truth answers)完全匹配的百分比

  • MRR(mean reciprocal rank):评估排序性能,每个rank表示这个query对应的target文档在候选文档中的排序。 M R R = 1 Q ∑ i = 1 Q 1 r a n k i MRR=\frac 1 Q \sum_{i=1}^Q\frac 1 {rank_i} MRR=Q1i=1Qranki1

  • Cosine Similarity:两个文档的表征的余弦相似度

  • MAP:AP的平均值。AP可以被简单定义为:如果某个查询有K个相关文档,返回结果中这K个文档的排序为 r a n k i rank_i ranki (从小到大),则 A P = ∑ i = 1 K i r a n k i AP=\sum_{i=1}^K\frac i {rank_i} AP=i=1Krankii,MAP是多个查询的AP的平均值。

  • NDCG

    • N D C G = D C G / I D C G NDCG=DCG/IDCG NDCG=DCG/IDCG
    • D C G = ∑ i = 1 k r e l ( i ) l o g 2 ( i + 1 ) DCG=\sum_{i=1}^k\frac {rel(i)} {log_2 (i+1)} DCG=i=1klog2(i+1)rel(i) r e l ( i ) rel(i) rel(i)代表返回列表中第i个文档与查询的相关程度
    • I D C G IDCG IDCG 代表最理想的返回列表的 D C G DCG DCG 结果,即按照 r e l ( i ) rel(i) rel(i) 从高到低排序。
  • Hit Rate(Recall@K):对每个查询返回的前K个文档中含有正确文档的比例

2.评估基准与工具

2.1 基准

主流的基准有RGB[9]和RECALL[10],侧重评估RAG的基础能力。

  • RGB

    • 开源地址:https://github.com/chen700564/RGB
    • 问答对形式,1000个问题,600个基础问题,200个专门面向信息集成的问题,200个专门面向反事实鲁棒性的问题。一半中文一半英文。
    • 从互联网和新闻中搜寻文档,利用编码模型m3e(中文)和mpnet(英文)进行重排。
    • 评估模型:ChatGPT,ChatGLM,Vicuna-7B,Qwen-7B,BELLE-7B-2M
    • 结论:对于噪声鲁棒性,随着噪声文档的增加(即不相关文档数量增加),RAG的性能逐渐下降;负排斥,信息集成,反事实鲁棒性对于RAG都很困难,提升空间都很大。
    • 关注RAG的整体
  • RECALL

    • 问答对形式,每个问题的提示都含有一段包含错误内容的文本,有的文本修改答案文本,有的文本修改非答案文本。模型被提供正确和错误答案两个选项。
    • 评估模型:ChatGLM2,Llama2,Vicuna,Baichuan2
    • 结论:模型很容易被错误的上下文误导,且内在知识和上下文矛盾时很容易产生质量较低的回复。通过提示词优化推理干预方法没法很好的解决,需要设计更好的方法。
    • 只关注生成

2.2 工具

最先进的自动化工具有RAGAS[6],ARES[7]和Trulens[11],使用LLM来自动评估。这部分工作主要以和人类的标注对齐为主要贡献,没有给出不同方法的对比。

  • RAGAS

    • 开源地址:https://github.com/explodinggradients/ragas
    • 创建了WikiEval数据集:https://huggingface.co/datasets/explodinggradients/WikiEval。根据50个wiki页面提示ChatGPT得到问题和答案。
    • 提示ChatGPT的方式评估,实验表明人类标注和RAGAS提出的标注方式的结果基本一致。
    • 评估目标包含上下文相关性,答案诚实性,答案相关性。
    • 关注RAG整体
  • ARES

    • 开源地址:https://github.com/stanford-futuredata/ARES
    • 和RAGAS的评估目标一致。训练一个小型LM来进行评估。
    • 包含KILT和SuperGLUE中的6个不同的知识密集型任务。
    • 关注RAG整体
  • Trulens

    • 开源地址:https://github.com/truera/trulens
    • 和RAGAS的评估目标一致。
    • 关注RAG整体

2.3 常见评估方式

语言模型评估
  1. Perplexity(困惑度)
    • 代表方法:ICRALM[13]
    • p e r p l e x i t y = ( ∏ i = 1 n 1 p ( w i ∣ w 1 , . . . , w i − 1 ) ) 1 n perplexity=(\prod_{i=1}^n\frac {1} {p(w_i|w_{1},...,w_{i-1})})^{\frac 1 n} perplexity=(i=1np(wiw1,...,wi1)1)n1
    • 取对数其实就得到了语言模型的交叉熵损失函数 L = − 1 n ∑ i = 1 n log ⁡ p ( w i ∣ w 1 , . . . , w i − 1 ) \mathcal L=-\frac 1 n\sum_{i=1}^n\log p(w_i|w_{1},...,w_{i-1}) L=n1i=1nlogp(wiw1,...,wi1)
    • 一般是使用wikitext[15]训练集作为检索文档集,使用wikitext测试集验证困惑度
    • 在GPT2,GPT3,ChatGPT,LLaMA等模型上测试
  2. BPB(bits per UTF-8 encoded byte)
    • 代表方法:REPLUG[12]
    • B P B = ( L T / L B ) log ⁡ 2 ( e L ) = ( L T / L B ) L / ln ⁡ 2 BPB=(L_T/L_B)\log_2(e^\mathcal L)=(L_T/L_B)\mathcal L/\ln 2 BPB=(LT/LB)log2(eL)=(LT/LB)L/ln2 L T L_T LT代表token长度, L B L_B LB代表字节长度;
    • BPB是Pile[14]建议的评估指标,因此一般也在Pile的测试集上测试
    • 在GPT2,GPT3,ChatGPT,LLaMA等模型上测试
下游任务评估
  1. 专业知识问答
    • 代表方法:REPLUG[12]
    • 用选择题的准确率评估
    • 数据集:MMLU[16]
  2. 开放领域问答
    • 代表方法:REPLUG[12]
    • 用问答的准确率评估
    • 数据集:Natural Questions (NQ) [17],TriviaQA[18]

3.结论

[1]中的下图展示了各个基准或工具的相应评估目标,其中Evaluation Targets代表是哪个方面的质量,Evaluation Aspects代表是哪个方面的需求。个人认为,综合易用性和全面性,比较适合用于学术评估的是RGB和RAGAS。TruLens含有对向量数据库的支持,ARES需要对特定领域进行打分器训练后再评估,可以考虑根据不同用途选用这两个工具进行评估。

img


大家好,我是NLP研究者BrownSearch,如果你觉得本文对你有帮助的话,不妨点赞收藏支持我的创作,您的正反馈是我持续更新的动力!如果想了解更多LLM/检索的知识,记得关注我!

4.引用

[1]Gao Y, Xiong Y, Gao X, et al. Retrieval-augmented generation for large language models: A survey[J]. arXiv preprint arXiv:2312.10997, 2023.

[2]Asai A, Min S, Zhong Z, et al. Retrieval-based language models and applications[C]//Proceedings of the 61st Annual Meeting of the Association for Computational Linguistics (Volume 6: Tutorial Abstracts). 2023: 41-46.

[3]Isabelle Nguyen. Evaluating rag part i: How to evaluate document retrieval. https://www.deepset.ai/blog/rag-evaluation-retrieval, 2023.

[4]Tian Lan, Deng Cai, Yan Wang, Heyan Huang, and Xian-Ling Mao. Copy is all you need. In The Eleventh International Conference on Learning Representations, 2022.

[5]Quinn Leng, Kasey Uhlenhuth, and Alkis Polyzotis. Best practices for llm evaluation of rag applications. https://www.databricks.com/blog/LLM-auto-eval-best-practices-RAG, 2023.

[6]Es S, James J, Espinosa-Anke L, et al. Ragas: Automated evaluation of retrieval augmented generation[J]. arXiv preprint arXiv:2309.15217, 2023.

[7]Saad-Falcon J, Khattab O, Potts C, et al. Ares: An automated evaluation framework for retrieval-augmented generation systems[J]. arXiv preprint arXiv:2311.09476, 2023.

[8]Colin Jarvis and John Allard. A survey of techniques for maximizing llm performance. https://community.openai.com/t/openai-dev-day-2023-breakout-sessions/505213#a-survey-of-techniques-for-maximizing-llm-performance-2, 2023.

[9]Chen J, Lin H, Han X, et al. Benchmarking large language models in retrieval-augmented generation[J]. arXiv preprint arXiv:2309.01431, 2023.

[10]Liu Y, Huang L, Li S, et al. RECALL: A Benchmark for LLMs Robustness against External Counterfactual Knowledge[J]. arXiv preprint arXiv:2311.08147, 2023.

[11]https://www.trulens.org/trulens_eval/core_concepts_rag_triad/

[12]Shi W, Min S, Yasunaga M, et al. Replug: Retrieval-augmented black-box language models[J]. arXiv preprint arXiv:2301.12652, 2023.

[13]Ram O, Levine Y, Dalmedigos I, et al. In-context retrieval-augmented language models[J]. arXiv preprint arXiv:2302.00083, 2023.

[14]Gao L, Biderman S, Black S, et al. The pile: An 800gb dataset of diverse text for language modeling[J]. arXiv preprint arXiv:2101.00027, 2020.

[15]Karpukhin V, Oguz B, Min S, et al. Dense Passage Retrieval for Open-Domain Question Answering[C]//Proceedings of the 2020 Conference on Empirical Methods in Natural Language Processing (EMNLP). 2020: 6769-6781.

[16]Hendrycks D, Burns C, Basart S, et al. Measuring Massive Multitask Language Understanding[C]//International Conference on Learning Representations. 2020.

[17]Kwiatkowski T, Palomaki J, Redfield O, et al. Natural Questions: a Benchmark for Question Answering Research[J]. Transactions of the Association for Computational Linguistics, 2019, 7: 452-466.

[18]Joshi M, Choi E, Weld D S, et al. TriviaQA: A Large Scale Distantly Supervised Challenge Dataset for Reading Comprehension[C]//Proceedings of the 55th Annual Meeting of the Association for Computational Linguistics (Volume 1: Long Papers). 2017: 1601-1611.

相关推荐

  1. 论文分享|RAG理论-第四-生成

    2024-07-15 04:26:01       26 阅读
  2. ClickHouse理论第一

    2024-07-15 04:26:01       63 阅读
  3. 使用RAGAs评估基于Milvus Cloud的RAG应用

    2024-07-15 04:26:01       25 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-15 04:26:01       66 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-15 04:26:01       70 阅读
  3. 在Django里面运行非项目文件

    2024-07-15 04:26:01       57 阅读
  4. Python语言-面向对象

    2024-07-15 04:26:01       68 阅读

热门阅读

  1. 用python实现反向输出链表

    2024-07-15 04:26:01       26 阅读
  2. 如何评价一个AI系统

    2024-07-15 04:26:01       21 阅读
  3. 查找运行中 sql中bind variable value 绑定变量值

    2024-07-15 04:26:01       22 阅读
  4. appium 实战问题 播放视频时无法定位到元素

    2024-07-15 04:26:01       28 阅读
  5. Django模板语言(简略教程)

    2024-07-15 04:26:01       25 阅读
  6. std::async和std::future异步编程

    2024-07-15 04:26:01       23 阅读
  7. C++智能指针

    2024-07-15 04:26:01       20 阅读