摘要
文章阐述了RAG技术如何通过整合外部知识源来提升大型语言模型(LLM)的性能,使其能够产生更精确、上下文感知的回应,并减少幻觉现象。
自2023年以来,RAG已成为基于LLM的系统中最流行的架构,许多产品依赖此技术。然而,RAG在信息检索、上下文整合等方面存在问题,如信息提取不完整、分块策略不合适、索引结构不足优化、检索过程中的准确性和召回率不高、生成过程中的信息冗余和输出不一致等。
文章通过对比图表,展示了RAG的工作流程和存在的问题,并强调了优化RAG性能的重要性。最后,文章提到接下来的文章将提供解决这些问题的措施,以提高RAG的有效性。
作者观点
- RAG技术能够提升LLM的性能,生成更准确和上下文相关的回答。
- RAG面临的问题包括信息提取的不完整性、分块策略的一刀切、索引结构的低效、检索过程的低相关性和准确性、生成过程中的过度依赖增强信息等。
- 优化RAG的关键在于改进每个步骤,包括编制索引、检索和生成,以提高整体性能。
- 文章认为,通过采取措施改进RAG的缺陷,不仅能提升系统的生成效果,还能为未来的研究和应用提供新的方向。
检索增强生成(RAG)是通过整合外部知识源的附加信息来改进大型语言模型(LLM)的过程。这样,大型语言模型就能做出更精确、更能感知上下文的反应,同时还能减少幻觉。
自 2023 年以来,RAG 已成为基于 LLM 的系统中最流行的架构。许多产品的功能都严重依赖 RAG。因此,优化 RAG 的性能,使检索过程更快、结果更准确已成为一个至关重要的问题。
朴素RAG概览
图 1 展示了天真 RAG 的典型工作流程。
如图 1 所示,RAG 主要包括以下步骤:
- 索引:索引化过程是一项关键的离线初始步骤。
- 从原始数据的清理和提取开始,将各种文件格式(如PDF、HTML和Word)转换为标准化的纯文本。
- 为了适应语言模型的上下文约束,这些文本被分割成更小更易管理的块,即所谓的分块过程。这些块然后使用Embedding模型转换为向量表示。
- 最后,创建索引将这些文本块及其向量嵌入作为键值对存储,从而实现高效可扩展的搜索能力。
- 检索:从外部知识源检索相关上下文。
- 为实现这一目标,用户查询由Embedding模型处理,生成语义相关的嵌入。
- 然后,在向量数据库上进行相似性搜索,以检索出TopK个最接近的数据对象。
- 生成:用户查询和检索到的上下文数据填充到提示模板中。最后,从检索步骤得到的增强提示输入到LLM中图。
朴素RAG中的使用问题
如图 2 所示,Naive RAG 在上述三个步骤中都存在问题(红色虚线框),有很大的优化空间。
索引过程问题(Index)
- 信息提取不完整,无法有效处理PDF等非结构化文件中图片和表格中的有用信息。
- 分块过程采用“一刀切”策略,而非根据不同文件类型特征选择最佳策略。导致每个块包含不完整的语义信息。此外,未考虑文本中现有的标题等重要细节。
- 索引结构未经充分优化,导致检索功能效率低下。
- 嵌入模型的语义表示能力较弱。
检索过程问题(Retrieval)
- 检索到的上下文相关性不足,准确性低,容易收到其他文件片段的影响。
- 低召回率阻碍了检索到所有相关段落的能力,从而影响了LLMs生成全面答案的能力。
- 查询可能不准确或嵌入模型的语义表示能力较弱,导致无法检索到有价值的信息。
- 检索算法受限,因为未结合不同类型的检索方法或算法,如关键词、语义和向量检索的结合。
- 多个检索到的上下文包含类似信息时,会出现信息冗余,导致生成答案中内容重复。
生成过程问题(Generation)
- 无法有效地将检索到的上下文与当前生成任务整合,导致输出不一致。
- 在生成过程中过度依赖增强信息存在较高风险。这可能导致输出简单重复检索到的内容,而未提供有价值的信息。
- LLM可能会生成不正确、不相关、有害或带有偏见的响应。
请注意,这些问题的原因可能是多方面的。
例如,如果向用户最终提供的响应包含不相关内容,可能不仅仅是LLM问题。根本原因可能是从PDF中不精确提取文档或嵌入模型无法准确捕捉语义等等。
结论
本文介绍了朴素RAG存在的问题。
本系列的下一部分将提供缓解这些问题并增强RAG效果的措施或解决方案。
此文为翻译,原文地址:Advanced RAG 01: Problems of Naive RAG