检索增强生成(RAG)是通过集成来自外部知识来源的附加信息来改进大型语言模型(大语言模型)的过程。这允许大语言模型产生更精确和上下文感知的反应,同时也减轻幻觉。
自2023年以来,RAG已成为基于LLM的系统中最流行的架构。许多产品的功能都严重依赖于RAG。因此,优化RAG的性能,使检索过程更快,结果更准确成为一个至关重要的问题。
本系列文章将重点介绍先进的RAG技术,以提高RAG生成的质量。
朴素RAG回顾
朴素RAG的典型工作流程如图1所示。

图1:朴素RAG的典型工作流程。图片来自作者。
如图1所示,RAG主要包括以下几个步骤:
- 索引(indexing):索引过程是离线执行的关键初始步骤。首先清理和提取原始数据,将各种文件格式(如PDF、HTML和Word)转换为标准化的纯文本。为了适应语言模型的上下文约束,这些文本被分成更小、更易于管理的块,这个过程称为分块。然后使用Embedding模型将这些块转换为向量表示。最后,创建一个索引,将这些文本块及其向量Embeddings存储为键值对,从而实现高效和可扩展的搜索功能。
- 检索(Retrieval):用户查询用于从外部知识来源检索相关上下文。为了实现这一点,用户查询由编码模型处理,该模型生成语义相关的Embeddings。然后,在向量数据库上进行相似性搜索,检索最接近的k个数据对象。
- 生成(Generation):将用户查询和检索到的附加上下文填充到prompt模板中。最后,将检索步骤得到的增强prompt输入到LLM中。


