RAG 是 Retrieval-Augmented Generation 的缩写,中文常译作“检索增强生成”。它是一种让大语言模型先查资料、再根据资料回答的方法。
如果只让模型凭训练记忆回答,它可能不知道最新信息,也可能不知道公司的内部资料,还可能在缺少依据时编造细节。RAG 的思路很直接:先从外部资料库里找到相关内容,再把这些内容交给模型组织答案。
先用一句话抓住它
RAG 是把“检索资料”和“生成回答”结合起来,让模型基于外部知识回答问题的方法。
生活里的类比是开卷答题。不是让一个人凭记忆硬答,而是先给他查资料,再要求他根据资料解释清楚。
RAG 解决的问题
大语言模型训练完成后,不会自动知道之后发生的事情,也不一定知道某个公司的私有文档、产品手册、制度流程和客户记录。即便它知道一些通用知识,也不保证每次回答都有可靠依据。
RAG 把问题拆成两步。第一步是检索:根据用户问题,从知识库、文档、网页或数据库中找出相关片段。第二步是生成:把这些片段和用户问题一起交给模型,让模型基于资料组织回答。
flowchart LR
Question["用户问题"] --> Retrieve["检索相关资料"]
Docs["知识库 / 文档 / 数据库"] --> Retrieve
Retrieve --> Context["相关片段"]
Context --> LLM["大语言模型"]
Question --> LLM
LLM --> Answer["基于资料的回答"]这套流程里,知识库是可供检索的资料集合,分块是把长文档切成适合检索的小片段,Embedding 可以把文本转成向量,用来比较语义相似度。向量数据库负责存储和快速查找这些向量,而引用来源则帮助用户回到原文核查答案。
和微调的区别
RAG 经常和微调混淆。简单说,RAG 是“回答前查资料”,微调是“改变模型的行为”。如果问题是知识会更新、资料很多、需要引用来源,RAG 通常更合适。如果问题是希望模型长期保持某种格式、语气或任务习惯,微调可能更合适。
两者并不冲突。一个模型可以通过微调学会稳定的回答格式,同时通过 RAG 检索最新或私有资料。
RAG 常用在哪里
企业知识库问答是最典型的场景。员工问制度、产品、流程问题,系统先查内部文档,再生成回答。客服系统也常用 RAG,根据产品手册和 FAQ 回答用户问题。研究助理、法务检索、文档问答、个人知识库,也都适合这种模式。
RAG 的价值在于让模型不必把所有知识都“记在脑子里”。知识可以留在外部资料库中,更新、删除、授权和追溯都更方便。
容易误解的地方
RAG 可以降低幻觉,但不能彻底消灭幻觉。检索错资料、资料本身过时、分块不合理、权限设置错误,都会影响答案。即使引用了来源,模型也可能解释偏了,所以关键结论仍然需要核查。
另一个误区是以为向量数据库就是 RAG 的全部。真正好用的 RAG 系统需要资料清洗、切分、检索、过滤、重排、提示词设计、答案生成、引用和评估共同配合。
怎么判断它该不该用
做 RAG 时,重点不只是模型,而是资料质量和检索质量。资料要准确、更新、去重,切分要合适,检索结果要相关,回答最好能附上来源。
如果用于企业或个人知识库,还必须处理权限、隐私、版本更新和错误反馈。否则系统可能把用户无权访问的资料带进回答里。