Skip to content

RAG的7种常见问题及解决方案

Published: at 05:06 PM | 10 min read

一、7种常见问题

FP1 缺少内容/幻觉答错:

第一个失败案例是提出一个无法从现有文件中回答的问题。在正常情况下,RAG系统会回复类似“抱歉,我不知道”的内容。然而,对于与内容相关但没有答案的问题,系统可能会被欺骗以给出回应。

解决方案:暂时没有很好的解决方案。我们现在的做法:1、明确prompt限制;2、通过增元数据等方式加强RAG方案,比如商品就固定分类和型号,避免把干扰信息喂给大模型;3、增加校验模型,判断是否回答正确,但是目前只有一个概念,还未很好的落实。不过目前我们已经在训练一个判断模型是否回答的模型。

元数据过滤的解释:当我们把索引分成许多chunks的时候,检索效率会成为问题。这时候,如果可以通过元数据先进行过滤,就会大大提升效率和相关度。比如,我们问“帮我整理一下XX部门今年5月份的所有合同中,包含XX设备采购的合同有哪些?”。这时候,如果有元数据,我们就可以去搜索“XX部门+2023年5月”的相关数据,检索量一下子就可能变成了全局的万分之一。

FP2 不在topN中,导致漏掉答案

答案在文件中存在,但排名不够高,无法返回给用户。理论上,所有文件都会被排名并在后续步骤中使用。然而,在实践中,只返回排名靠前的K个文件,其中K是基于性能选择的值。

解决方案:
1)reranker模型的持续优化。
2)增加元数据过滤等方式,提前圈定正确知识的范围,避免无效信息的干扰。

FP3 不在上下文中-整合策略的限制

从数据库中检索到了包含答案的文件,但没有出现在生成答案的上下文中。这发生在从数据库中返回多个文件时,需要进行合并处理以检索答案的情况。

解决方案:整合策略的优化。

FP4 未提取出

此时,答案存在于上下文中,但是大型语言模型未能正确提取出正确的答案。通常,这发生在上下文中存在太多噪声或相互矛盾的信息时。

除了论文说的矛盾信息,还有一些情况是文档中有太多专有名词,导致大模型很难理解,导致无法回答。我们在做商品推荐问答时,因为商品型号等特定知识,导致大模型无法判断,无法回答。

解决方案:
1)针对噪声和矛盾的问题,还是要从知识质量本身入手,配合系统和人工检查,做知识库的优化。我们现在已经在知识库中引入“优质知识”的概念,强化知识质量本身的重要性,但是这也势必增加知识维护的工作量。
2)针对专有名词理解不对的问题,一般就是增加专有名词的解释,作为背景知识点一起喂给大模型。

FP5 错误格式

问题涉及以表格或列表等特定格式提取信息,而大型语言模型忽略了这一指令。

虽然论文将这视为一种失败模式,但这种类型的功能并不是大型语言模型(LLM)的开箱即用功能。这种需要特定格式的输出,需要进行大量的系统提示和指令微调,以生成特定格式的信息。例如,使用Abacus AI,可以创建一个代理程序来以特定格式输出代码,并生成带有表格、段落、粗体文本等的Word文档。这种一般可以通过MarkDown输出来渲染!

FP6 不正确的特异性

答案在响应中返回,但是不够具体或过于具体,无法满足用户的需求。这发生在RAG系统设计师对给定问题有一个期望的情况下,例如教师对学生。在这种情况下,应该提供具体的教育内容和答案,而不仅仅是答案本身。不正确的特异性也会发生在用户不确定如何提问并且问题过于笼统的情况下。

FP7 不完整

不完整的答案并不是错误的,但是缺少了一些信息,尽管这些信息在上下文中并且可以提取。例如,“文件A、B和C中有哪些关键点?”更好的方法是将这些问题分开提问。

解决方案:如果有特定对象和场景,可以增加小模型OR工程化的方式,调整优化逻辑。

二、论文中的经验教训

论文中给出的经验教训如下:

  1. 增加缓存,降低成本和避免延迟。
  2. 增加元数据过滤
  3. 针对特定场景设置RAG流程
  4. 针对RAG持续优化和校准
  5. 优化各个环节的小模型
FP经验描述学习案例
FP4在更多的背景信息下获得更好的结果(背景指的是内容发生的特定环境或情景)更大的背景使得回答更加准确(8K 对比 4K)。与之前的 GPT-3.5 [13] 的研究相反。AI Tutor
FP1语义缓存可降低成本和延迟。RAG系统因为速率限制和LLM的成本较高,让用户使用有一定困难。使用常见问题预填充语义缓存。AI Tutor
FP5-7越狱绕过RAG系统,并攻击安全培训。研究表明,对LLMs进行微调可以逆转安全训练的效果[11],请对所有经过微调的LLMs进行RAG系统的测试。AI Tutor
FP2, FP4添加元数据可以提高检索能力将文件名和块编号添加到检索到的上下文中,有助于读者提取所需的信息。对于聊天对话非常有用。AI Tutor
FP2, FP4-7开源的嵌入模型在处理小文本时表现更好。开源的句子嵌入模型在小型文本上的表现与闭源的替代方案相当。BioASQ, AI Tutor
FP2-7RAG系统需要持续校准。RAG系统在运行时接收到未知的输入,需要进行持续监控。AI Tutor, BioASQ
FP1, FP2实施一个针对配置的RAG流程。RAG系统需要校准块大小、嵌入策略、分块策略、检索策略、整合策略、上下文大小和提示。Cognitive Reviewer, AI Tutor, BioASQ
FP2, FP4针对具体场景和问题,通过组装定制解决方案,创建RAG流程是最优的。从端到端的训练可以增强RAG系统中的领域适应[18]。BioASQ, AI Tutor
FP2-7只有在运行时才能测试性能特征。离线评估技术,如G-Evals [14],看起来很有前景,但前提是能够访问标记好的问题和答案对。Cognitive Reviewer, AI Tutor

引用论文题目:《Seven Failure Points When Engineering a Retrieval Augmented Generation System》 论文地址:https://arxiv.org/pdf/2401.05856.pdf

参考内容:https://luxiangdong.com/2023/09/25/ragone/#/%E4%B8%89%E3%80%81%E7%94%9F%E6%88%90%EF%BC%88Gen%EF%BC%89