这里使用gpt4来阅读论文,帮助我们理解最近爆火的RAG
RAG ,最早来源于Facebook 2020年的一篇论文 Retrieval-Augmented Generation forKnowledge-Intensive NLP Tasks。
首先基于ResearchGPT(需要chatgpt plus)来了解RAG的核心原理: 通过检索来增强生成效果:
接着分析本篇论文,使用prompt优化工具promptperfect,得出完善的prompt
上传论文,prompt gpt来总结
简单概括,RAG解决的问题即如何让语言模型使用外部知识(向量化的文本,图像,甚至视频)进行生成,来降低大模型知识更新的成本(没有RAG,每次知识更新都需要重新微调,训练)、提高知识密集型任务(例如编程文档问答)的准确性,真实性。
完整的RAG需要 LLM (gpt4等) + 外部知识存储(外部知识通过embedding模型vector化后 , 存储到向量数据库(chroma等))+ 当前问题对应外部知识的召回(检索)
总结工作流程如下:
接收查询:对于一个给定的查询(如一个问题或者要验证的事实),RAG模型首先接收这个输入。
查询编码:通过查询编码器将输入查询转换成一个查询向量。
文档检索:使用最大内积搜索(MIPS)或其他算法,检索器在一个预建立的文档索引中查找与查询向量最相关的文档。
生成预测:选取的文档作为上下文,连同查询一起输入到生成器中(即通过prompt喂给llm)。生成器负责基于这些信息产生一个输出,如回答一个问题或生成文本。
边缘化:对于检索到的不同文档,模型将这些文档视为潜在变量,然后对生成器给定不同文档时的预测结果进行边缘化,对检索到的不同文档进行整合,从而产生最终预测。在RAG模型中,边缘化有助于提高答案的准确性和丰富性,因为它允许模型不仅仅依赖单一的文档,而是综合多个文档的信息来生成答案。这种方法特别适用于那些需要广泛知识和多个信息源来生成准确回答的复杂问题。
端到端训练:整个模型从查询编码到生成预测的过程是可微的,并通过反向传播算法进行训练。