RAG系列02:朴素RAG存在的问题
作者: 差分隐私 来源: 差分隐私
检索增强生成(RAG)[1]是通过整合外部知识源的信息来提升大型语言模型(LLM)的过程。这使得 LLM 能够生成更精确、更具上下文意识的回应,同时避免魔性幻觉。
自 2023 年以来,RAG 已成为基于 LLM 系统中最受欢迎的架构。许多产品在功能实现上严重依赖 RAG。因此,优化 RAG 性能,使检索过程更快、结果更准确,已成为一个至关重要的问题。 本系列文章将重点介绍高级 RAG 技术,以提升 RAG 生成的质量。
初级 RAG 回顾
如图 1 所示,RAG 主要包括以下步骤:
1.索引 :这是一个关键的离线初始步骤,包括数据清洗、提取,以及将 PDF、HTML 和 Word 等不同格式的文件转换为标准化纯文本。为了适应语言模型的上下文限制,文本被分割成更小的片段,这一过程称为切块。接着,使用嵌入模型将这些片段转换为向量表示。最后,创建索引来存储这些文本片段及其向量嵌入,实现高效检索。
2.检索 :使用用户查询从外部知识源检索相关上下文。用户查询通过编码模型处理,生成相关嵌入,然后在向量数据库中进行相似性搜索,检索最接近的数据对象。
3.生成 :用户查询和检索到的附加上下文填充到提示模板中。最后,将检索步骤中的增强提示输入到 LLM。
由此三个步骤形成的流程也叫做朴素RAG(Naive RAG),对此流程的优化也称为高级RAG(Advanced RAG)。
初级 RAG 的问题
如图 2 所示,初级 RAG 在上述三个步骤中存在问题(红色虚线框),优化空间巨大。索引阶段,存在以下问题:
-
信息提取不完整,无法有效处理 PDF 等非结构化文件中的图像和表格中的有用信息。
-
切块过程采用“一刀切”策略,而非基于不同文件类型的特点选择最佳策略,导致每个片段包含的语义信息不完整。此外,它还忽略了文本中已有的标题等重要细节。
-
索引结构优化不足,导致检索功能效率低下。
-
嵌入模型的语义表示能力较弱。
检索阶段,存在以下问题:
-
检索到的上下文相关性不足,准确性低。
-
低召回率导致无法检索到所有相关段落,阻碍了 LLM 生成全面答案的能力。
-
查询可能不准确,或嵌入模型的语义表示能力较弱,导致无法检索到有价值的信息。
-
检索算法受限,未能结合关键词、语义和向量检索等多种检索方法或算法。
-
当多个检索到的上下文包含相似信息时,会出现信息冗余,导致生成的答案重复。
生成阶段,存在以下问题:
-
无法有效地将检索到的上下文与当前生成任务结合,导致输出不一致。
-
在生成过程中过度依赖增强信息,存在高风险。可能导致输出仅重复检索内容,未提供有价值的信息。
-
LLM 可能生成错误、不相关、有害或偏见的回应。
当然,这些问题可能是由多方面原因造成的。例如,如果最终提供给用户的回应包含不相关内容,可能不仅仅是 LLM 的问题。根本原因可能是从 PDF 中提取文档的不精确,或是嵌入模型捕捉语义的能力不足等。
结论
本文概要性地介绍了初级 RAG 存在的问题。本系列的下一部分将提供减轻这些问题并提升 RAG 有效性的措施或解决方案。 最后,如果本文有任何错误或遗漏,请不吝赐教。
参考资料
[1] 检索增强生成(RAG): https://medium.com/ai-in-plain-english/a-brief-introduction-to-retrieval-augmented-generation-rag-b7eb70982891
更多AI工具,参考Github-AiBard123,国内AiBard123