检索增强生成 RAG 是什么?先查资料再回答,让大模型更靠谱
检索增强生成(Retrieval-Augmented Generation,RAG)是一种利用外部知识来源提高生成式 AI 回答准确性和可靠性的技术。它的做法是:在大语言模型生成回答之前,先从外部的知识库中检索出与问题相关的资料,再把这些资料和问题一起交给模型,让模型参考这些权威的资料来生成回答。RAG 这一说法来自 Patrick Lewis 等 Meta 人工智能研究院和伦敦大学学院的研究者在 2020 年发表的论文。
为什么需要 RAG
大语言模型虽然知识丰富,但有几个固有的局限:知识有截止日期,对训练之后发生的事情一无所知;不了解企业内部的私有资料,比如公司的产品手册、规章制度、客户档案;遇到不确定的问题时,可能会编造看似合理的错误答案,也就是幻觉;而且很难说清楚自己的回答依据的是什么。如果要让模型学会新知识,重新训练或微调的成本很高,而且知识更新后又要重新训练。RAG 提供了一种更轻便的办法:不改变模型本身,而是在使用时把需要的知识“临时”提供给它,就像开卷考试。
它是怎么工作的
准备阶段:把知识库中的文档切分成适当大小的片段,用嵌入模型把每个片段转换成向量,存入向量数据库,建立索引。检索阶段:用户提出问题后,把问题也转换成向量,在向量数据库中找出语义上最相关的若干个片段。实际中常把向量检索和关键词检索结合起来使用,称为混合检索,再用重排序模型对结果进一步精排。生成阶段:把检索到的片段作为参考资料,和用户的问题一起组成提示词交给大语言模型,要求它根据这些资料来回答,并注明引用的出处。
优点
减少幻觉,回答有据可依;能够使用最新的信息和私有的数据,只需更新知识库,不需要重新训练模型;可以给出信息来源,方便用户核实;成本比微调低,也便于控制权限,不同的用户只能检索到自己有权查看的资料。
挑战和发展
RAG 的效果很大程度上取决于检索的质量:如果没有检索到正确的资料,或者检索到了无关的资料,模型仍然可能答错。常见的难点包括文档的切分方式、表格和图片等复杂格式的处理、需要综合多份资料的复杂问题。为此出现了许多改进的方法,比如对问题进行改写和拆分、多轮迭代检索、基于知识图谱的 GraphRAG,以及让 AI 智能体自主决定何时检索、检索什么的智能体式 RAG。如今,RAG 已经是企业知识库问答、智能客服、文档助手等应用中最常用的技术方案。