论文题目:《Seven Failure Points When Engineering a Retrieval Augmented Generation System》
论文地址:https://arxiv.org/pdf/2401.05856.pdf
这篇论文主要探讨了构建检索增强生成系统(Retrieval Augmented Generation, RAG)时可能遇到的七个失败点。论文通过三个案例研究来展示这些失败点,并分享了作者团队的经验和教训。
RAG 简介
Meta AI 的研究人员引入了一种叫做检索增强生成(Retrieval Augmented Generation,RAG)的方法来完成这类知识密集型的任务。RAG 把一个信息检索组件和文本生成模型结合在一起。RAG 可以微调,其内部知识的修改方式很高效,不需要对整个模型进行重新训练。 RAG 会接受输入并检索出一组相关/支撑的文档,并给出文档的来源(例如维基百科)。这些文档作为上下文和输入的原始提示词组合,送给文本生成器得到最终的输出。这样 RAG 更加适应事实会随时间变化的情况。这非常有用,因为 LLM 的参数化知识是静态的。RAG 让语言模型不用重新训练就能够获取最新的信息,基于检索生成产生可靠的输出。
RAG 系统的主要目的是:
- a) 减少LLM的幻觉回答问题
- b) 将来源/参考关联到大模型生成的回答
- c) 消除使用元数据注释文档的需要。
RAG坑点
然而,RAG 系统受到信息检索系统固有的限制以及对LLM能力的依赖,RAG 系统中存在一些可能的“坑点”。
-
内容缺失——这是生产案例中最大的问题之一。 用户假设特定问题的答案存在于知识库中。 事实并非如此,系统也没有回应“我不知道”。 相反,它提供了一个看似合理的错误答案,但实际是“毫无意义”。
-
漏掉排名靠前的文档 - 检索器是小型搜索系统,要获得正确的结果并不简单。 简单的嵌入查找很少能达到目的。 有时,检索器返回的前 K 个文档中不存在正确答案,从而导致失败。
-
不符合上下文 - 有时,RAG系统可能会检索到太多文档,并且还是强制根据上下文分割并输入文档。 这意味着对问题的回答不在上下文中。 有时,这会导致模型产生幻觉,除非系统提示明确指示模型不要返回不在上下文中的结果。
-
未提取到有用信息 - 当LLM无法从上下文中提取答案时。 当你塞满上下文并且LLM会感到困惑时,这往往会成为一个问题。 不同大模型对背景信息的理解能力层次不齐。
-
格式错误——虽然论文将这视为一种失败模式,但这种类型的功能并不是大型语言模型(LLM)的开箱即用功能。这种需要特定格式的输出,需要进行大量的系统提示和指令微调,以生成特定格式的信息。例如,使用Abacus AI,可以创建一个代理程序来以特定格式输出代码,并生成带有表格、段落、粗体文本等的Word文档。这种一般可以通过MarkDown输出来渲染!
-
不合适的回答 -响应中返回答案,但不够具体或过于具体,无法满足用户的需求。 当 RAG 系统设计者对给定问题(例如教师对学生)有期望的结果时,就会发生这种情况。 在这种情况下,应该提供具体的教育内容和答案,而不仅仅是答案。 当用户不确定如何提出问题并且过于笼统时,也会出现不正确的特异性。
总的来说,这意味着 RAG 系统在投入生产之前必须经过彻底的稳健性测试,并且很容易因为发布未经测试的代理或聊天机器人而搬起石头砸自己的脚。