是什么
检索增强生成(retrieval-augmented generation,简称 RAG)是一种让大语言模型在回答之前先从外部来源取回信息、再把这些信息整合进答案的方法[1]。它不要求模型只依靠训练时压进参数里的知识,而是在提问的那一刻把相关资料递到模型面前,让它对着资料作答。
怎么工作
这套方法把一个参数化的语言模型,与一个在推理时通过检索访问的非参数化外部记忆结合起来[1]。所谓「参数化」,指知识存在模型的权重里;「非参数化」则指知识存在模型之外、可以被查取的库中。
实践中,资料先被转换成嵌入向量(embedding)并存进向量数据库[1]。嵌入向量是一串数字,用来表示一段文本;意思相近的文本,其向量在空间里也靠得近,于是数据库可以按相似度而不是按关键词精确匹配来查找。当用户提出问题时,文档检索器挑出最相关的若干文档,把它们和问题一起放进提示词(prompt)[1]。模型要做的事,就是同时读问题和这几段材料,然后给出答案。
举个简单的例子:假设一家公司的支持团队把产品手册放进了这样的库。客户问某台设备怎么恢复出厂设置,检索器拿这个问题去和库里的段落比对,取出讨论重置的那几段,它们便随着问题一起进入模型的上下文。模型依据拿到手的材料作答,而不是凭记忆作答。
从哪来
Patrick Lewis、Ethan Perez、Aleksandra Piktus、Fabio Petroni 等人在 2020 年的论文《Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks》中提出了这一方法,论文发表在 NeurIPS 2020[1]。这篇 2020 年 5 月首次提交的论文,把预训练的参数化记忆与非参数化记忆结合起来用于语言生成[2]。在 RAG 模型中,参数化记忆是一个预训练的序列到序列(seq2seq)模型,非参数化记忆则是用预训练神经检索器访问的维基百科稠密向量索引[2]。
作者的设计动机是:预训练模型访问并精确操作知识的能力有限,而为决策提供出处、更新世界知识仍是未解决的问题[2]。只训练一次的模型既不容易说明答案从何而来,也无法在不再训练的情况下吸收新事实;把知识放进一个在作答时才读取的索引,这两件事就都有了解法。
今天用在哪里
它可以补充领域知识或训练数据之外的信息,并减少幻觉[1]。与微调(fine-tuning)不同,新信息可以直接加进外部知识库,不必重新训练模型,从而节省算力和成本[1]——改动库里的一个文档,就足以改变系统所知道的内容。答案还可以标注来源,方便核查[1],凡是读者需要核实而不是直接采信的地方,这一点都很重要。
局限
RAG 并不能消除幻觉,因为模型仍可能误读检索到的上下文[1]。检索质量取决于嵌入模型、文本切分(chunking)和混合检索(hybrid search),系统还可能因正确但有误导性的来源、或新旧信息混杂而遭遇 RAG 投毒(RAG poisoning)[1]。模型也难以判断自己的知识是否不足[1]——一个总会检索到点东西的系统,总归有话可说,哪怕取回的段落其实并没有回答问题。
注释与来源
- Retrieval-augmented generationhttps://en.wikipedia.org/wiki/Retrieval-augmented_generation
- Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks (RAG)https://arxiv.org/abs/2005.11401
引用本页: 检索增强生成. TellWorld, https://www.tellworld.net/zh/learn/rag. 更新于 2026-11-07