网站首页 > 技术文章 正文
上下文是关键:检索增强生成
大型语言模型(LLM)是一种生成式 AI 技术,在过去两年中获得了极大的欢迎。然而,当在实际场景中使用 LLM 时,我们仍然在努力克服LLM 的知识限制和幻觉。检索增强生成(RAG)通过为 LLM 提供额外的内存和上下文来解决这些问题。2024 年,它已成为应用生成式 AI 领域最流行的技术之一。事实上,我们可以假设,没有一个由 LLM 驱动的应用程序不以某种方式使用 RAG。
RAG 通过创建对非参数记忆的访问来增强 LLM 的参数记忆
RAG 评估
为了使 RAG 履行将 LLM 响应建立在数据基础之上的承诺,我们需要超越简单的索引、检索、增强和生成。但是,要改进某些东西,我们需要首先测量性能。RAG 评估有助于为您的 RAG 系统性能设定基准,然后让您对其进行改进。
构建 PoC RAG 管道并不复杂。通过对一组有限的示例进行简短的训练和验证即可实现。但是,为了增强其稳健性,必须在准确反映生产用例的数据集上进行全面测试。RAG 管道可能会受到自身幻觉的影响。从高层次来看,RAG 系统有三个故障点。
- 检索器未能检索完整上下文或检索不相关的上下文
- 尽管提供了背景信息,但LLM并不考虑这一点
- LLM不回答问题,而是从上下文中选择不相关的信息
检索质量是 RAG 管道中的第一个故障点
在在本文中,我将重点介绍几个评估指标,这些指标主要针对第一个失败点——“检索器无法检索整个上下文或检索不相关的上下文”。换句话说,这些指标评估了检索器的质量。
检索指标
RAG 系统的评估指标可分为三类:
- 信息检索任务中使用的检索度量(这是我们在本文中讨论的内容)
- 生成特定指标,例如BLEU、ROUGE、METEOR 等,注重流畅性并衡量相关性和语义相似性。
- 随着 RAG 的应用越来越广泛,RAG 特定指标也不断演变
可以独立评估 RAG 的检索组件,以确定检索器满足用户查询的程度。让我们来看看七个流行的指标,它们不仅用于 RAG,还用于搜索引擎、推荐等信息检索任务。
1.准确性
准确度通常定义为正确预测(真阳性和真阴性)在所检查的病例总数中所占的比例。如果你了解监督机器学习领域的分类问题,你可能已经知道这种形式的指标。在检索和 RAG 的背景下,它的解释如下——
准确性
=(检索到的相关文档数 + 未检索到的不相关文档数)/知识库中存在的文档总数
尽管准确度是一个简单、直观的指标,但它并不是检索的主要指标。在大型知识库中,大多数文档通常与任何给定查询无关,这可能会导致误导性的高准确度分数。它不考虑检索结果的排名。
2. 精准
精确度关注的是检索结果的质量。它衡量检索到的与用户查询相关的文档的比例。它回答了以下问题:“在检索到的所有文档中,有多少是真正相关的?”
精确
= 检索到的相关文档数/检索到的文档总数
更高的精度意味着检索器性能良好并且检索到大多数相关文档。
注意:精度也是分类任务中常用的一个指标,它被定义为模型预测为阳性的病例中实际阳性病例的比例,或真实阳性/(真实阳性+假阳性)
Precision@k: Precision@k 是精度的一种变体,用于衡量前“k”个检索结果中相关文档的比例。它特别重要,因为它关注的是顶级结果,而不是所有检索到的文档。对于 RAG 来说,它很重要,因为只有顶级结果最有可能用于增强。例如,如果我们的 RAG 系统考虑前 5 个文档进行增强,那么 Precision@5 就变得很重要。
精准@k
= 前 ‘k’ 个结果中的相关文档数量 / ‘k’
其中“k”是选定的截止值
因此,precision@5 为 0.8 或 4/5 意味着在前 5 个结果中,有 4 个是相关的。
当不同系统中检索到的结果总数可能不同时,Precision@k 也可用于比较系统。但是,限制在于“k”的选择可以是任意的,并且此指标不会超出所选的“k”。
3. 召回率
召回率关注的是检索器提供的覆盖范围。它衡量的是语料库中所有相关文档中检索到的相关文档的比例。它回答了“在所有相关文档中,实际检索到了多少个?”的问题。
召回率 = 检索到的相关文档数/知识库中相关文档总数
请注意,与准确率不同,计算召回率需要事先了解相关文档的总数。这对于知识库中有大量文档的大型系统来说可能很有挑战性。
与准确率一样,召回率也不考虑检索到的文档的排名。它也会产生误导,因为检索知识库中的所有文档将产生完美的召回率值。
与 Precision@k 一样,Recall@k也是一个有时会被考虑的指标。Recall@k 是从所有相关文档中检索到的前“k”个结果中检索到的相关文档的比例
回想@k
= 前“k”个结果中的相关文档数量/相关文档总数
其中“k”是选定的截止值
召回率和准确率的不同场景
4. F1 分数
F1 分数是准确率和召回率的调和平均值。它提供了一个平衡检索器质量和覆盖率的单一指标。
F1 分数
= 2 x (精确度 x 召回率) / (精确度 + 召回率)
该方程式是这样的,F1 分数会惩罚得分较低的变量;只有当召回率和准确率值都很高时,才有可能获得较高的 F1 分数。这意味着分数不能被单个变量正向倾斜
f1 分数平衡了准确率和召回率。准确率和召回率都为中等值时,其 f1 分数会高于一个值非常高而另一个值非常低的情况。(来源:作者提供的图片)
F1 分数提供单一、平衡的衡量标准,可用于轻松比较不同的系统。但是,它不考虑排名,并给予准确率和召回率同等的权重,这可能并不总是理想的。
笔记:
“相关”文档:我们讨论的大多数指标都涉及相关文档的概念。例如,精度计算为检索到的相关文档数除以检索到的文档总数。出现的问题是——如何确定文档是相关的?简单的答案是人工评估方法。主题专家查看文档并确定相关性。人工评估带来主观性,因此人工评估由专家小组而不是个人完成。但从规模和成本角度来看,人工评估具有限制性。因此,任何能够可靠地建立相关性的数据都会变得非常有用。基本事实是已知真实或正确的信息。在 RAG 和一般的生成式 AI 领域中,基本事实是一组准备好的提示上下文响应或问题上下文响应示例,类似于监督机器学习术语中的标记数据。为您的知识库创建的基本事实数据可用于评估您的 RAG 系统。
电视前四个指标不考虑文档的排名。它们从整体检索角度评估系统的有效性。接下来的三个指标也会考虑结果的排名。
5.平均倒数排名(MRR)
平均倒数排名或 MRR 在评估相关文档的排名时特别有用。它衡量结果列表中第一个相关文档的排名的倒数。MRR 是根据一组查询计算的。
月平均收入
= 1/N x [总和 i=1 至 N (1/rank(i))]
其中 N 是查询的总数,rank(i) 是第 i 个查询的第一个相关文档的排名
如果您对系统查找相关文档的速度感兴趣并考虑结果的排名,MRR 尤其有用。但是,由于它不考虑第一个相关结果以外的任何内容,因此当多个相关结果很重要时,它可能没什么用。
MRR 考虑排名,但不考虑所有文档(来源:作者提供的图片)
6.平均精度(MAP)
平均准确率或 MAP 是一种结合不同“k”截止水平(即最佳结果的截止数)的准确率和召回率的指标。它计算一个称为平均准确率的指标,然后在所有查询中取平均值。
单个查询的平均准确率(i)
= 1/R(i) x [k=1 到 n 的总和 (第 k 个文档的精度@kx 相关性)]
其中 R(i) 是与查询 (i) 相关的文档数量
Precision@k 是截止值 'k' 处的精度
rel@k 是一个二进制标志,表示级别为“k”的文档的相关性
平均准确率平均值是所有“N”个查询的平均准确率(如上所示)的平均值
地图
= 1/N x [总和 i=1 至 N(平均精度 (i)]
MAP 提供了跨召回率水平的单一质量衡量标准。当结果排名很重要时,它非常适用,但计算起来很复杂。
MAP 考虑所有检索到的文档,并给出更高的分数以获得更好的排名(来源:作者提供的图片)
7. 标准化折现累积增益(nDCG)
nDCG 通过考虑相关文档在结果列表中的位置并对较早出现的相关文档分配更高的分数来评估排名质量。它对于文档具有不同程度相关性的场景特别有效。为了计算折扣累积增益 (DCG),检索到的列表中的每个文档都被分配一个相关性分数 rel,并且折扣因子会随着文档排名位置的增加而降低文档的权重。
DCG
=[i=1 至 n 的和 ((2 ^ rel(i) — 1)/log(i+1))
这里 rel(i) 是位置 i 处文档的分级相关性。IDCG 是理想的 DCG,是完美排名的 DCG。nDCG 计算为实际折扣累积增益 (DCG) 与理想折扣累积增益 (IDCG) 之间的比率
nDCG=
DCG/IDCG
nDCG 处理文档中的相关程度并惩罚不正确的排名
nDCG 是一个相当复杂的计算指标。它要求文档具有相关性分数,这可能会导致主观性,并且折扣因子的选择会显著影响值,但它考虑了文档中不同程度的相关性,并给予排名较高的项目更多权重。
nDCG 是一个相当复杂的计算指标。它要求文档具有相关性分数,这可能会导致主观性,并且折扣因子的选择会显著影响值,但它会考虑文档中不同程度的相关性,并给予排名较高的项目更多权重。
R检索系统不仅用于 RAG,还用于各种其他应用领域,如网络和企业搜索引擎、电子商务产品搜索和个性化推荐、社交媒体广告检索、档案系统、数据库、虚拟助手等。检索指标有助于评估和改进性能,以有效满足用户需求。
参考:
https://pub.towardsai.net/7-retrieval-metrics-for-better-rag-systems-f04c098abbe7
猜你喜欢
- 2024-10-02 如何构建一个推荐系统的验证框架 推荐系统如何设计
- 2024-10-02 谷歌、南加州发布:从视频中自监督学习,研究机器人行为
- 2024-10-02 购物篮推荐场景太复杂?没有商品相关性标签?对比学习去噪解决
- 2024-10-02 酷睿Ultra 9 285K跑分超锐龙9950,微软确认Recall功能不可卸载
- 2024-10-02 麦吉尔大学马辰博士:Top-K推荐中的自适应概率度量学习
- 2024-10-02 众包问答服务的工人推荐:三重因素感知方法
- 2024-10-02 推荐系统和TensorRec入门 推荐系统好做吗
- 2024-10-02 信息检索中的度量指标全解析 信息检索效率的评价指标是查全率和查准率
- 2024-10-02 深度度量学习的这十三年,难道是错付了吗?
- 2024-10-02 PlugIR:开源还不用微调,即插即用的多轮对话图文检索 | ACL 2024
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)