检索增强生成算法(Retrieval-Augmented Generation,RAG)是由Patrick Lewis等人于2020年提出的(https://arxiv.org/pdf/2005.11401),主要用于辅助大规模语言模型(Large Language Models, LLMs)在生成结果之前,查阅/检索外部知识库,得到相关辅助资料,用于"开卷"作答(如果是问答应用模式下),使生成的内容具有除了大模型本身具备的知识以外,有外部知识的支撑和辅助。具体算法的架构图,如下:
图 RAG的算法框架图
其中,如果对于没有应用RAG进行文本生成,只需要图中的生成器部分,x为用户的提示词或者问题等,输入到生成器中,生成器一般使用常用的LLMs进行文本的生成操作。
而RAG加入了检索器模块,论文中使用的外部知识库是wikipedia文章库,针对用户输入x,到外部知识库中进行检索,得到最相关的k篇文章段落。将检索到的相关文章段落与用户输入进行拼接,一起输入到生成器进行生成操作。
一般的文本生成模型就是典型的seq2seq模型,输入和输出都是文本序列。通过文本对训练大型语言模型(LLMs),用户输入文本后使用预训练好的LLMs生成输出文本序列。使用过程完全依赖于LLMs在训练过程中习得的语言技能和知识。
RAG的加入,帮助LLMs使用外部知识,在一定程度上缓解大模型的幻觉问题、非实时性等问题。
(未完待续)