RAG / 检索增强生成

1.5万

RAG 是 RetrievalAugmented Generation 的缩写,中文常译作“检索增强生成”。它是一种让大语言模型先查资料、再根据资料回答的方法

RAG检索增强知识库向量搜索
RAG 检索增强生成
RAG 检索增强生成

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 时,重点不只是模型,而是资料质量和检索质量。资料要准确、更新、去重,切分要合适,检索结果要相关,回答最好能附上来源。

如果用于企业或个人知识库,还必须处理权限、隐私、版本更新和错误反馈。否则系统可能把用户无权访问的资料带进回答里。

资料来源