RAG技术,即检索增强生成,标志着自然语言处理领域的重大进展。通过整合先前知识,它提升了大型语言模型的性能,广泛应用于多模态领域和垂直行业。本文深入探讨了RAG技术的演进历程、技术发展、LLMs问题及其解决方案,为读者提供了对这一前沿技术的全面理解。
RAG 与 LLMs
RAG 演进历程
RAG 技术的演进历程可以分为几个关键阶段,总结如下:
- 预训练阶段: RAG 概念首次于2020年提出,初期研究侧重于如何通过预训练模型注入额外知识,以增强语言模型的能力。这个阶段旨在使模型能够更好地利用先前的知识。
- ChatGPT时代: 随着ChatGPT的出现,对于运用大型模型进行深层次上下文学习的兴趣激增。这推动了 RAG 技术在研究领域的快速发展,引入了更复杂的上下文学习。
- LLMs潜力的开发: 随着大型语言模型(LLMs)潜力的进一步开发,研究开始关注如何提升模型的可控性,以满足不断演变的需求。RAG 技术逐渐转向增强推理能力,并尝试在微调过程中引入各种改进方法。
- GPT-4时代: GPT-4的发布标志着 RAG 技术的深刻变革。研究重心转向一种新的融合 RAG 和微调策略的方法,同时持续关注对预训练方法的优化。这一阶段旨在进一步提高模型的性能和适应性。
总体而言,RAG 技术从提出到今天经历了多个关键阶段,不断演化和改进,以适应不断发展的自然语言处理需求。
RAG 技术发展
在RAG技术的发展过程中,可以从技术范式的角度将其总结为以下几个阶段:
- 朴素(Naive RAG):
- 索引: 将文档库分割成较短的Chunk,并通过编码器构建向量索引。
- 检索: 根据问题和chunks的相似度检索相关文档片段。
- 生成: 以检索到的上下文为条件,生成问题的回答。
- 进阶的 RAG(Advanced RAG):
- 在Naive RAG中存在检索质量、响应生成质量和增强过程中的挑战。
- 数据索引: 通过更精细的数据清洗、设计文档结构和添加元数据等方法提升文本的一致性、准确性和检索效率。
- 检索前处理: 使用问题的重写、路由和扩充等方式对齐问题和文档块之间的语义差异。
- 检索后处理: 通过重排序文档库避免 “Lost in the Middle” 现象,或通过上下文筛选与压缩缩短窗口长度。
- 模块化 RAG(Modular RAG):
- 随着技术的发展,出现了模块化RAG的概念。
- 结构上更自由和灵活: 引入更多具体功能模块,如查询搜索引擎、融合多个回答。
- 技术融合: 将检索与微调、强化学习等技术融合,设计和编排多种RAG模式。
- 范式的继承与发展: 模块化RAG不是突然出现的,而是Naive RAG和Advanced RAG的继承与发展关系,前者是后者的一种特例形式。
综合而言,RAG技术在朴素、进阶和模块化三个阶段的发展过程中,不断突破传统的检索-生成框架,提升了检索质量、响应生成质量和整体性能。
LLMS 问题
LLMs(大语言模型)型虽然具有令人印象深刻的能力,但也存在一些问题:
- 误导性的“幻觉”: 模型可能会产生误导性的结果,即其生成的信息可能不准确或不完全符合实际情况。
- 信息过时: 模型依赖的信息可能会过时,因为它们在训练时使用的数据可能不包括最新的信息。
- 处理特定知识时效率不高: 在处理某些特定