内容参考于:图灵AI大模型全栈
我们写的RAG怎么就是一个好RAG可以正常跑的RAG?这就要一个手段来检查我们的RAG,评估我们的RAG
RAG的评估
评估就是判断RAG的能力是什么样的,比如召回率怎么样,RAG有检索和生成能力,用来对话系统和问答等任务。评估的目标看的是相关文档的检索和生成的答案的准确性和回答的连贯性。RAG核心两套逻辑一种是通过问题关联文档,一种是问题和答案,也就是检索和生成,检索方面要高效的识别和检索相关的文档,生成方面要根据检索到的文档信息生成连贯、准确的答案。要对检索和生成做严格的评估来确保RAG模型的性能和可靠性
主要使用的评估指标
检索阶段:精准度、召回率
响应阶段:忠诚度、答案相关性
精准度:
前 k 个检索结果中相关文档的占比,衡量查准能力。
也就是检索到的相关文档数量除以检索到的总数量的结果就是精准度
比如检索到10个(k的值是10),相关的是6个,4个不相关,准确度就是百分之60,或者说是0.6
提高精准度的方式,比如父子索引、混合索引等索引优化手段,还有使用压缩器,召回很多个,比如召回20ge,然后重新对它们打分重新排序,也就是RAG融合,这个压缩器也可以解决召回率低的问题
召回率:
前 k 个检索结果中包含的相关文档数 除以 全部(知识库、向量数据库中)相关文档总数的结果就是召回率。核心衡量检索的查全能力,是 RAG 检索侧最重要的指标,常用 k=3、5、10
评估精准度和召回率是否可以用
有一个F1分数的东西,它可以用来评估精准度和召回率,它的作用是用来平衡精准度(Precision)和召回率(Recall)的,为什么用它就可以评估了?因为只有准确度和召回率的值都很高F1的值才会高,如果有一个分数低F1的值就不会高
它的公式是2乘以((精准度乘以召回率)除以(精准度加召回率))的结果
一个好的RAG系统F1的值应该在0.85到0.93或大于0.93
F1 范围 性能评价 适用阶段 典型场景 <0.5 需重大优化 模型原型/POC 阶段 初步实验、基线测试 0.5-0.7 基本可用 内部测试/非关键场景 内部工具、非核心功能 0.7-0.85 良好性能 准生产环境 电商推荐、客服问答 0.85-0.93 优秀性能 生产环境关键系统 金融风控、医疗辅助诊断 >0.93 接近理论上限 高精度要求场景 工业质检、法律条款匹配
忠诚度:
生成答案中的所有事实陈述,是否都能在检索上下文中找到依据。评估它好不好就看答案是否与检索到的文档有关,是否存在乱编,幻觉问题。
忠诚度的提高要通过提示词来约束,或者换模型
答案相关性
生成答案是否直接回应用户问题,是否存在答非所问、偏离主题或引入无关内容。
评估方式,有人工评估和自动评估
人工评估
下图红框的点赞和点踩就是典型的人工评估,点赞就是给大模型奖励,点踩就是惩罚,现在用的不是很多了,反正我没点过
自动评估
利用大型语言模型和相关算法对RAG生成的内容进行评分,从而评估我们RAG系统的性能,这样可以减少人力成本还能提高效率
自动评估工具
Ragas、Trulens,主要写Ragas