《设计 RAG 系统时需要考虑的七个失败点 》论文 AI 解读

周末使用 AI  速读了一篇  RAG 相关的论文,文中提到的【设计 RAG 系统时需要考虑的七个失败点】非常有价值,简单整理一下分享出来,大家如果感兴趣可以继续阅读原文。


论文名称:Seven Failure Points When Engineering a Retrieval Augmented Generation System

论文中文名:设计 RAG 系统时需要考虑的七个失败点

论文地址:https://arxiv.org/abs/2401.05856

一译中英对照版:https://yiyibooks.cn/arxiv/2401.05856v1/index.html

如果你也想使用 AI  快速阅读论文,可参考:《AI 助力问题驱动式学习》

论文转思维导图速览:

如果你想了解该图是如何生成的,可以阅读:《AI 应用之文章转脑图的 N 种姿势》

一、概括

在这篇论文中,Scott Barnett 等人探讨了增强检索(Retrieval-Augmented Generation, RAG)系统在工程实践中可能遇到的挑战和失败点。RAG 系统通过结合信息检索和大型语言模型(LLM)的生成能力,旨在提供准确、上下文相关的回答。然而,RAG 系统在信息检索的固有局限性和对 LLM 的依赖上存在问题。本文通过三个不同领域的案例研究,分享了在设计 RAG 系统时需要考虑的七个失败点,并提出了软件工程社区可能的研究方向。

二、三个案例

论文通过三个案例研究展示了RAG系统在不同领域的应用和遇到的挑战:

  • Cognitive Reviewer:支持研究人员分析科学文档的 RAG 系统。
  • AI Tutor:一个 RAG 系统,学生可以就单元内容提问,答案来源于学习材料。
  • BioASQ:使用 BioASQ 数据集构建的 RAG 系统,专注于生物医学领域的问答。

三、设计 RAG 系统时需要考虑的七个失败点

1. FP1 缺少内容(Missing Content)当用户提出的问题无法从现有的文档中找到答案时,RAG系统可能无法提供有用的回应。理想情况下,系统会回复类似于“对不起,我不知道”的回答。然而,如果问题与内容相关但没有直接答案,系统可能会错误地生成一个看似合理但实际错误的回答。

2. FP2 错过高排名文档(Missed the Top Ranked Documents)即使文档中包含了问题的答案,但如果该文档的排名没有足够高,它可能不会被返回给用户。理论上,所有文档都应参与排名并用于后续步骤,但在实践中,通常只返回基于性能选定的前K个文档。

3. FP3 上下文缺失(Not in Context)检索到的包含答案的文档可能没有被纳入生成答案的上下文中。这通常发生在从数据库检索到许多文档时,需要通过整合过程来提取答案。

4. FP4 提取失败(Not Extracted)尽管答案存在于上下文中,但大型语言模型(LLM)可能未能正确提取出正确答案。这种情况通常发生在上下文中存在太多噪声或矛盾信息时。

5. FP5 格式错误(Wrong Format)当问题需要以特定格式(如表格或列表)提取信息时,如果LLM忽略了这一指令,就会产生格式错误。

6. FP6 具体性错误(Incorrect Specificity)返回的答案可能不够具体或过于具体,无法满足用户的需求。这发生在RAG系统设计者对给定问题有预期结果时,例如教师为学生提供的答案不仅应该是答案本身,还应该是具体的教育内容。

7. FP7 答案不完整(Incomplete)不完整的答案虽然不是错误,但它们遗漏了一些信息,即使这些信息在上下文中可用并且可以被提取。例如,当用户问到“文档A、B和C中涵盖了哪些关键点?”时,更好的做法是分别提问这些问题。

四、教训

  1. 需要更大的上下文来获得更准确的结果。
  2. 语义缓存可以降低成本和延迟。
  3. 为 RAG 系统添加元数据可以改善检索。
  4. 开源嵌入模型在小文本上的表现与闭源模型相当。
  5. RAG 系统需要持续地校准和监控。

五、未来研究方向

5.1、分块和嵌入策略的优化

分块(Chunking) 是RAG系统中的关键步骤,它涉及将文档分割成更小的部分或“块”,这些块随后被转换成嵌入向量以用于检索。分块的质量直接影响到检索过程和嵌入的质量,进而影响文档与用户查询之间的匹配度。论文中提到了两种分块方法:

  • 基于启发式的分块:使用标点符号、段落结束等作为分块依据。
  • 基于语义的分块:利用文本中的语义信息来确定分块的起始和结束。

优化分块策略需要考虑以下方面:

  • 块的大小:块太小可能无法回答某些问题,块太大可能包含噪声。
  • 文档类型:不同类型的文档可能需要不同的分块和处理策略。
  • 嵌入模型的选择:不同的嵌入模型可能对语义检索的准确性有不同的影响。

进一步的研究应该探索这些方法之间的权衡,并评估它们对关键下游过程(如嵌入质量和相似性匹配)的影响。

嵌入(Embeddings) 是文档块的压缩语义表示,通常是一个数值向量。嵌入的生成对于文档检索至关重要,因为它们决定了文档与查询之间的相似度计算。优化嵌入策略涉及:

  • 嵌入模型的选择:选择能够准确捕捉文档语义的模型。
  • 更新频率:确定何时重新生成嵌入以反映新索引的文档或文档更新。

2、RAG与微调(Finetuning)的比较研究

RAG系统和微调是两种不同的方法,用于定制大型语言模型以适应特定领域的需求。微调涉及在特定领域的数据集上继续训练模型,而RAG系统则利用检索机制来提供上下文信息,然后由LLM生成答案。

  • 微调:需要内部数据集来训练和适应模型,数据一旦集成到模型中,就需要考虑隐私和安全性问题。此外,随着基础模型的更新或新数据的加入,需要重新进行微调。
  • RAG:提供了一种实用解决方案,允许按需分块数据,并只使用相关的块来生成答案。这有助于持续更新知识,并允许控制用户可以访问的块。

比较研究应该系统地评估这两种方法在以下方面的差异:

  • 准确性:哪种方法在特定任务上提供更准确的结果。
  • 延迟:生成答案所需的时间。
  • 运营成本:实施和维护每种方法的成本。
  • 鲁棒性:系统对新数据和变化的适应能力。

3、RAG系统的测试和监控方法

RAG 系统的测试和监控是软件工程中的新兴领域,需要特定的方法和工具来确保系统的质量和性能。

  • 测试:由于 RAG 系统通常处理特定于应用的问题和答案,因此测试用例的生成可能需要创新方法,例如使用LLM生成问题。
  • 质量指标:开发质量指标来帮助工程师做出质量权衡,考虑到使用LLM的成本、引入的延迟以及每次新版本发布时性能的变化。
  • 自我适应系统:将自我适应系统的概念纳入 RAG 系统的监控和适应中,以支持系统的持续优化。

研究应该探索以下方面:

  • 测试数据生成:如何生成现实和领域相关的测试问题和答案。
  • 质量评估:开发和应用质量评估方法来衡量 RAG 系统的性能。
  • 自我适应:研究如何使 RAG 系统能够自我监控并根据实时反馈进行调整。

通过这些研究,可以为 RAG 系统的开发和维护提供更清晰的指导,并帮助实践者构建更加健壮和有效的系统。

六、结论

论文的结论部分强调了 RAG 系统作为结合大型语言模型的新型信息检索技术的重要性,并指出软件工程师在实施这些系统时面临的挑战。作者通过三个案例研究,包括对 15,000 份文档和 1000 个问题的实证调查,为实践者提供了实施RAG系统时可能遇到的挑战的指南。同时,论文提出了未来研究方向,包括分块和嵌入策略、RAG 与微调的比较,以及 RAG 系统的测试和监控。最后,作者指出这是首次从软件工程视角对 RAG 系统进行的系统性研究,并强调了大型语言模型将持续发展,为工程师和研究人员带来新的研究兴趣点。

来源:明明如月学长

滚动至顶部