RAG性能提升策略和评估方法(产品视角)
RAG性能提升策略和评估方法(产品视角)
RAG性能提升策略和评估方法(产品视角) RAG性能提升策略和评估方法(产品视角) Modified November 26, 2025 • 忠实性 1、用LLM 提取answer中的要点,要点S 2、用LLM检测这些要点是否可以从context推理而来设为B 3、=B/S • 答案正确性 1、计算答案相似度 2、用LLM 提取answer中的要点,要点S 3、用LLM检测这些要点是否可以从truths推理而来设为B 4=B/S 2.3其他的评估维度和指标 危害性:提交内容是否会对个人群体或者整个社会造成有可能的伤害? 恶意性:提交内容是否存在伤害欺骗或利用用户的行为 连贯性:提交内容是否以逻辑有序的方式表达它观点信息或者论据? 正确性:提交的内容是否事实正确,且没有任何纰漏 间接性:提交内容是否清楚高效的传达了矛盾信息或者观点,没有不必要的冗余情节 三、RAG改进策略和方法 大体上大模型+RAG流程上有2部分,第一步是检索出有用的信息,第二步是发给大模型,并结合用户的一些提问和prompt,让大模型生成高质量的内容。对于第二步,效果的好坏一是基于大模型本身的效果,和提示词工程的优劣。这2部分内容较为庞杂后续再另开帖子描述。 先针对第一步检索有用的信息如何改进,提出相关建议。检索做得好,离不开索引,那如何优化索引成为第一步。 3.1优化索引 框架中的默认索引 查找最相似的向量块。 优化方式 (一)按照子部分索引 将文本块再拆分为较小的文本(例如单句),然后对这些小块进行多次索引 适用场景: 有多个主题,有冲突信息的复杂长文本信息。确保与查询相关的上下文。 (二)按照文本框可以回答的问题索引 让LLM 生成与拆分的文本块相关的假设性问题,并将这些问题用于索引,而不是直接对整个块进行索引。 适用场景: 用户没有提出非常明确的问题,该方法可以减少模糊性。 问题举荐,根据这个文档,提出3个假设性用户会询问的问题。 (三)按照文本块的摘要进行索引 适用场景: 文本框中有多余信息或者与用户查询无关细节的时候。这种方法比较有用。 3.2 重排 rerank 搜到了最相似的信息,那我选哪个呢?这个都是策略。有的默认的取TOP 10,TOP 25,等。 大部分场景下选择最相似的就没有问题。 但是,您在想一想,现在的向量化基本都是平权的,也就是每个向量的置信度是一致,我举个例子,官媒报道的消息的权重应该大于小道消息。但是现在的权限是相等的,不真实的信息也可以污染这个RAG的搜索结果,而这个位置就可以有优化空间,特别是对于私有化的数据来说,你的数据的置信度业务方是非常清楚的。所以在这方面可以进行改进,引入来源机制进行调整。对向量化的数据进行综合评分,例如相似度 置信度等,然后再进行rebank。 以上就是笔者在做这个RAG知识问答上的一些思考,也感谢前辈们的智慧结晶,给与相关的思路和建议。共勉 You don't have permission to access this synced block. Please log in and try again. Log In • 忠实性 1、用LLM 提取answer中的要点,要点S 2、用LLM检测这些要点是否可以从context推理而来设为B 3、=B/S • 答案正确性 1、计算答案相似度 2、用LLM 提取answer中的要点,要点S 3、用LLM检测这些要点是否可以从truths推理而来设为B 4=B/S 2.3其他的评估维度和指标 危害性:提交内容是否会对个人群体或者整个社会造成有可能的伤害? 恶意性:提交内容是否存在伤害欺骗或利用用户的行为 连贯性:提交内容是否以逻辑有序的方式表达它观点信息或者论据? 正确性:提交的内容是否事实正确,且没有任何纰漏 间接性:提交内容是否清楚高效的传达了矛盾信息或者观点,没有不必要的冗余情节 三、RAG改进策略和方法 大体上大模型+RAG流程上有2部分,第一步是检索出有用的信息,第二步是发给大模型,并结合用户的一些提问和prompt,让大模型生成高质量的内容。对于第二步,效果的好坏一是基于大模型本身的效果,和提示词工程的优劣。这2部分内容较为庞杂后续再另开帖子描述。 先针对第一步检索有用的信息如何改进,提出相关建议。检索做得好,离不开索引,那如何优化索引成为第一步。 3.1优化索引 框架中的默认索引 查找最相似的向量块。 优化方式 (一)按照子部分索引 将文本块再拆分为较小的文本(例如单句),然后对这些小块进行多次索引 适用场景: 有多个主题,有冲突信息的复杂长文本信息。确保与查询相关的上下文。 (二)按照文本框可以回答的问题索引 让LLM 生成与拆分的文本块相关的假设性问题,并将这些问题用于索引,而不是直接对整个块进行索引。 适用场景: 用户没有提出非常明确的问题,该方法可以减少模糊性。 问题举荐,根据这个文档,提出3个假设性用户会询问的问题。 (三)按照文本块的摘要进行索引 适用场景: 文本框中有多余信息或者与用户查询无关细节的时候。这种方法比较有用。 3.2 重排 rerank 搜到了最相似的信息,那我选哪个呢?这个都是策略。有的默认的取TOP 10,TOP 25,等。 大部分场景下选择最相似的就没有问题。 但是,您在想一想,现在的向量化基本都是平权的,也就是每个向量的置信度是一致,我举个例子,官媒报道的消息的权重应该大于小道消息。但是现在的权限是相等的,不真实的信息也可以污染这个RAG的搜索结果,而这个位置就可以有优化空间,特别是对于私有化的数据来说,你的数据的置信度业务方是非常清楚的。所以在这方面可以进行改进,引入来源机制进行调整。对向量化的数据进行综合评分,例如相似度 置信度等,然后再进行rebank。 以上就是笔者在做这个RAG知识问答上的一些思考,也感谢前辈们的智慧结晶,给与相关的思路和建议。共勉 You don't have permission to access this synced block. Please log in and try again. Log In 作者:牛大局 原文:RAG性能提升策略和评估方法(产品视角) RAG性能提升策略和评估方法(产品视角) 一、前言 相信经过一年的知识沉淀,RAG 是什么大家都不陌生了。 RAG 是检索增强生成(Retrieval Augmented Generation)的缩写,它是一种结合了检索模型和生成模型的技术。其核心目的是通过某种途径把知识告诉给 AI 大模型,让大模型“知道”我们的私有知识,变得越来越“懂”我们。 RAG 的核心流程是根据用户提问,从私有知识中检索到“包含答案的内容”,然后把“包含答案的内容”和用户提问一起放到 prompt(提示词)中,提交给大模型,此时大模型的回答就会充分考虑到“包含答案的内容”。 RAG的最常见应用场景 • 知识问答系统:RAG 可以用于构建问答系统,用户提出问题,RAG 模型从大规模的文档集合中检索相关的文档,然后生成回答。 二、如何评估RAG 那么我们就面临如何一个具象化的问题,大模型+RAG的效果如何?是否可以对标人工或者说准确率和实施效果如何? 截止到2024年6月,AI圈内大佬傅盛(猎豹CEO)描述,任何不微调没有策略的通用大模型回答问题的准确率不会超过80%,其自家大模型结合企业文档和用户私有化的数据和流程,准确率可以达到95%。 其他圈内AI大佬(字节、阿里、腾讯)均未表态说自家的大模型+私有化数据可以到达的准确率数值。由此我们先假设以傅盛的说法为行业内准确率的上限。 以通用人工客服为例子,在拼多多网店中,回答准确率要求达到90%以上,即达到了最对的人工客服的最低标准。但是考核贵考核,实际在应用中,笔者体验下来大部分天猫点评或者直营点评准确率都超过95%以上,看样子,基本满足低配人工客服的能力,距离好和优秀还有一段距离。 在拼多多网店中,回答准确率要求达到90%以上 那么大模型+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 3、=B/S(需要标注)