输入“/”快速插入内容

RAG性能提升策略和评估方法(产品视角)

2024年6月19日修改
作者:牛大局
原文:RAG性能提升策略和评估方法(产品视角)
一、前言
相信经过一年的知识沉淀,RAG 是什么大家都不陌生了。
RAG 是检索增强生成(Retrieval-Augmented Generation)的缩写,它是一种结合了检索模型和生成模型的技术。其核心目的是通过某种途径把知识告诉给 AI 大模型,让大模型“知道”我们的私有知识,变得越来越“懂”我们。
RAG 的核心流程是根据用户提问,从私有知识中检索到“包含答案的内容”,然后把“包含答案的内容”和用户提问一起放到 prompt(提示词)中,提交给大模型,此时大模型的回答就会充分考虑到“包含答案的内容”。
RAG的最常见应用场景
知识问答系统:RAG 可以用于构建问答系统,用户提出问题,RAG 模型从大规模的文档集合中检索相关的文档,然后生成回答。
二、如何评估RAG
那么我们就面临如何一个具象化的问题,大模型+RAG的效果如何?是否可以对标人工或者说准确率和实施效果如何?
截止到2024年6月,AI圈内大佬傅盛(猎豹CEO)描述,任何不微调没有策略的通用大模型回答问题的准确率不会超过80%,其自家大模型结合企业文档和用户私有化的数据和流程,准确率可以达到95%
其他圈内AI大佬(字节、阿里、腾讯)均未表态说自家的大模型+私有化数据可以到达的准确率数值。由此我们先假设以傅盛的说法为行业内准确率的上限。
以通用人工客服为例子,在拼多多网店中,回答准确率要求达到90%以上,即达到了最对的人工客服的最低标准。但是考核贵考核,实际在应用中,笔者体验下来大部分天猫点评或者直营点评准确率都超过95%以上,看样子,基本满足低配人工客服的能力,距离好和优秀还有一段距离。
那么大模型+RAG效果怎么评估好和坏呢?
2.1专家评估
一谈论到大模型,总有人说专家评估,对,这基本上没有错误,专家评估或者专家打分的制度一直可用,根据预先定义的标准对生成的答案进行质量评估,如准确性、连贯性、相关性等。但是一次上线评估一次,一次迭代评估一次,说实话挺废人的。我们有没有其他方式,对文本类的信息进行评估呢?显然有,就是下面的自动化评估
2.2自动化评估
2.2.1最常见的一些自动化评估指标
准确性指标:
准确率(Accuracy):正确预测的样本数占总样本数的比例。
召回率(Recall):真正例被正确预测出来的比例。
F1 值:综合考虑准确率和召回率的平衡指标
性能指标:
推理速度:测量模型处理一个或一批输入数据所需的时间,反映其效率。
资源利用率:如计算资源(CPU、GPU 等)的使用情况。
泛化能力评估:
交叉验证:将数据集划分成多个子集,进行多次训练和验证,以观察模型在不同数据子集上的表现。
比较基准:
与已有的同类优秀模型进行比较,查看在相同任务和数据集上的表现差异。
稳定性评估:
多次运行模型,观察结果的一致性和波动情况。
2.2.2 进阶的自动化评估指标
答案相似度:
1、用embedding模型提取truths与answer的文本语义向量
2、计算向量之间的相似度一般用余弦相似度(需要人工标注)
答案相关度:
1、利用LLM 通过答案反推出问题。
2、用embedding模型提取answer与生成问题的文本语义向量
3、计算实际问题和生成问题向量之间的相似度(不需要标注)
语境精确率
其实就是有帮助的文档数量与所有被检索出的文档数量的比例。他体现的额是RAG系统对文档检索的精准度。会惩罚搜索一大堆没有用的文档给下游的行为
1、用LLM判断contests对Question有用的数量。假设有帮助的为P
2、假设所有被检索出的文档数量为K,计算他们的比值=p/k (不需要标注)
语境相关性
1、用LLM 将所有contexts分解为句子。句子数量为A
2、判断对Question 有帮助的句子数量为B
=B/A (不需要标注)
语境召回率
1、用LLM 中提取所有truths 中的要点,记录为S
2、用LLM 判断contexts对应要点的数量B