跳到正文

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. 问法 1 · 场景切入

    假设你做一个企业知识库问答机器人,员工问“今年Q3的销售策略是什么?”,但大模型没训练过这些内部文档,你怎么让模型能基于最新资料给出准确答案?

  2. 问法 2 · 层层追问

    大模型直接回答问题,事实错误或者知识过时了怎么办?……那如果我先去数据库里搜一下相关文档,再让模型基于搜到的内容回答,你觉得这个思路怎么样?……具体怎么做,分哪几步?

  3. 问法 3 · 直球架构

    解释一下检索增强生成RAG的基本概念和工作原理,它是怎么提升大模型的事实准确性和知识覆盖的?从索引、检索到生成,每个环节的核心要点是什么?

同模块相关题目