RAG 怎么提升事实准确性?
检索增强生成的工作原理与知识覆盖能力解析
原题:请解释检索增强生成(RAG)的基本概念及其工作原理,说明它如何提升大模型的事实准确性和知识覆盖能力。
RAG基础 · 字节真题
回答与解析
RAG核心概念
RAG(Retrieval-Augmented Generation) 是一种将外部知识检索与大模型生成相结合的技术范式。核心动机:大模型参数知识存在截止时间和幻觉风险,RAG通过实时检索"开卷考试"。
工作原理:三阶段流程
| 阶段 | 动作 | 关键组件 |
|---|---|---|
| 索引(Indexing) | 文档切分→Embedding→入库 | 向量化模型(如BGE、text-embedding-3) |
| 检索(Retrieval) | 用户Query向量化→相似度搜索→Top-K召回 | 向量数据库(Milvus、Faiss、ES) |
| 生成(Generation) | 拼接"Query+检索结果"→Prompt工程→LLM生成 | 大模型+Prompt模板 |
如何提升两大能力
1. 事实准确性
- 生成时提供可溯源的参考文本,约束模型"基于证据回答"
- 避免参数知识中的事实性错误(如"2024年美国总统是谁")
2. 知识覆盖
- 动态接入私有/实时数据(企业文档、最新新闻)
- 无需重新训练即可更新知识,成本远低于微调
一句话总结
RAG = 搜索引擎 + 大模型,让AI从"闭卷背诵"变成"开卷作答"。
学习建议
建议系统学习该知识点
口语版讲法(约4分钟)
- 一句话定位:RAG本质是给大模型开卷考试
- 边界划分:RAG vs 微调,以及混合检索的必要性
- 业务场景:客服退换货政策查询
- 落地风险:文档质量与检索失败的坑
- 工程师取舍:我更看重检索质量而非模型大小
我觉得这道题其实是在问一个很核心的问题:当大模型的知识不够用或者不准的时候,我们怎么给它补上?RAG就是目前最主流的一个答案。说白了,它就是把检索和生成拼在一起,让模型从闭卷考试变成开卷考试。
具体说一下工作原理,其实就是三个步骤:先把外部文档切碎、向量化、存到向量库里,这叫索引;然后用户提问时,把问题也向量化,去库里搜最相关的几段,这叫检索;最后把问题和搜到的内容拼成提示词,让大模型基于这些信息来回答,这叫生成。流程不复杂,但真正落地的时候,这里有很多细节。
先说边界划分。很多人会问,RAG和微调到底怎么选?我的看法是,它们不是二选一,而是互补。微调适合让模型学会某种风格或格式,比如把输出变成固定模板,但它很难注入新的事实知识,而且成本高、周期长。RAG正好相反,它特别适合知识频繁更新的场景,比如企业内部的SOP、实时新闻、客服政策。但RAG有个前提:你的文档库要质量高、覆盖全。如果文档本身是错的或者切分不合理,那检索出来的东西反而会带偏模型。所以真正落地的时候,我通常会把RAG和微调结合起来,比如用微调让模型学会怎么引用来源,用RAG提供实时信息。
举个例子,电商客服场景。用户问“我买的衣服退货期限是多少?”如果模型只靠参数知识,它可能回答“7天”,但不同商品、不同活动期间退货政策完全不同。用RAG的话,我们会先把所有退换货政策、满减规则、特殊活动说明都做成文档库。用户提问时,系统检索出对应的政策段落,比如“双十一期间购买的服装,支持30天无理由退换”,然后让大模型基于这段内容生成答案。这样准确率就高很多,而且政策更新时只需要改文档,不用重新训练模型。
这里有个坑:检索质量直接决定RAG的上限。如果检索回来的内容不相关,模型再强也白搭。所以我会特别关注检索这一步的工程细节,比如用 混合检索,把关键词匹配(BM25)和向量相似度(Dense Retrieval)结合起来,因为很多专业术语或编号(像订单号、错误码)向量搜不好,但关键词能精准命中。另外,切分策略也很关键,固定大小切分容易把完整语义切碎,我一般会用语义切分,配合滑动窗口加一小段上下文重叠。
还有一个容易被忽略的点:RAG的评估。很多人上线后只看最终回答好不好,但中间检索召回率低的话,模型再聪明也救不回来。所以我上线前一定会做 RAGAS 评估,分开看检索的上下文精度和生成的回答忠实度。
最后说我的判断。我不会把RAG看作一个单独的组件,而是看作一个系统工程。我更倾向于把精力花在优化检索质量上,而不是一味追求更大的模型。因为对很多业务来说,一个中小模型加上高质量检索,效果往往比大模型硬背知识要好,而且成本低、迭代快。
关键一句:RAG的评估不能只看最终回答,要拆开看检索和生成各自的质量,比如用RAGAS框架。
面试官还可能这样问
- 问法 1 · 场景切入
假设你做一个企业知识库问答机器人,员工问“今年Q3的销售策略是什么?”,但大模型没训练过这些内部文档,你怎么让模型能基于最新资料给出准确答案?
- 问法 2 · 层层追问
大模型直接回答问题,事实错误或者知识过时了怎么办?……那如果我先去数据库里搜一下相关文档,再让模型基于搜到的内容回答,你觉得这个思路怎么样?……具体怎么做,分哪几步?
- 问法 3 · 直球架构
解释一下检索增强生成RAG的基本概念和工作原理,它是怎么提升大模型的事实准确性和知识覆盖的?从索引、检索到生成,每个环节的核心要点是什么?