跳到正文

RAG 原理与核心架构

RAG 基本原理、核心模块和事实准确性机制

原题:请系统阐述检索增强生成(RAG)的基本原理、核心系统架构与关键组成模块,并结合实际应用场景,分析其在提升大语言模型事实准确性、应对知识更新延迟及减少幻觉方面的优势与技术机制。

重排与优化 · 字节真题

回答与解析

核心原理:检索-生成两阶段范式

RAG将大模型从"闭卷考试"转为"开卷考试"——先检索、后生成。用户查询时,系统先从外部知识库检索相关文档,再将检索结果与用户问题拼接送入LLM生成答案。


系统架构与四大模块

模块 核心功能 关键技术
索引构建 离线处理文档,构建可检索的向量库 文档切分、Embedding模型、向量数据库(Milvus/Faiss)
检索器 从海量文档中快速召回Top-K候选 稠密检索(DPR)、稀疏检索(BM25)、混合检索
重排序 精排候选,提升相关性 Cross-Encoder、ColBERT
生成融合 将检索结果与Prompt结合,约束生成 上下文拼接、引用标注、多文档融合策略

三大优势的技术机制

1. 事实准确性提升

  • 机制:检索结果为生成提供"事实锚点",LLM从参数记忆转向上下文引用
  • 效果:可追溯来源,降低事实性错误

2. 动态知识更新

  • 机制:知识库与模型解耦,新文档入库即可生效,无需重新训练
  • 场景:金融政策、产品手册等高频更新场景

3. 幻觉缓解

  • 机制:检索上下文约束生成空间,减少模型"自由发挥"
  • 局限:检索失败时仍可能幻觉(需结合拒答策略)

典型应用场景

  • 企业知识库:对接内部文档,解决大模型无领域知识问题
  • 智能客服:实时检索最新产品信息,避免过时回答
  • 专业问答:法律/医疗领域,要求答案可溯源

关键权衡:检索质量决定上限,需持续优化切分策略、Embedding质量和召回精度。

学习建议

建议先掌握大模型基础原理,再学习信息检索与向量数据库技术,结合开源项目如LangChain动手实践RAG流程,加深理解。

口语版讲法(约4分钟)

  • 开卷考试比喻点明本质
  • 系统架构三个关键模块
  • 三大优势及落地边界
  • 业务场景与风险
  • 工程师取舍与给出可延伸点

这道题其实是在问,怎么让大模型在回答问题时不再凭空编造,而是能像人一样去查资料再回答。核心思路一句话:从闭卷考试变成开卷考试,先检索后生成。

具体来说,系统架构可以拆成三个关键模块。先说索引构建,就是把外部知识库切分成小块,用 Embedding 模型转成向量存进 Vector Database。这里有个常见坑:切分策略很讲究,固定窗口切分简单但容易把语义割裂,所以落地时我通常会结合段落边界做语义切分。再看检索器,从向量库里召回 top-k 候选。现在主流做法是 Hybrid Search,也就是 BM25 加向量检索,因为光靠向量对精确匹配不友好,比如订单号、错误码,关键词召回更准。还要看 Rerank 模块,用 Cross-Encoder 对召回结果精排,这一步对最终质量提升很明显,但计算开销大,所以一般只对 top-50 做重排。

再说 RAG 的三大优势。事实准确性提升,本质是给生成加了事实锚点,答案可溯源。动态更新方面,知识库和模型解耦,新文档入库就能生效,比如电商大促时满减政策变了,只需要更新知识库,不用重新训练模型。幻觉缓解方面,检索到的上下文约束了生成空间,但这里有个前提:检索质量本身得过关,如果检索失败,模型还是会幻觉。所以上线时我会特别关注检索的置信度,分数太低就触发拒答。

举一个具体的业务场景:智能客服处理退款。用户问“我的订单为什么还没退款”,系统先检索知识库里的退款流程、当前订单状态,再结合这些信息生成回答。如果知识库里没有这个订单的异常处理记录,模型可能给出通用但错误的答案。所以落地时我会设计一个兜底逻辑:当检索到的文档与问题相关性低于阈值时,直接返回“请转人工”,而不是让模型硬答。

最后说下我的取舍。我更倾向把 RAG 看作一个增强组件,而不是万能的。它的上限由检索质量决定,所以我会把精力优先放在索引构建和检索优化上,比如用 Parent Document 策略平衡块大小和上下文完整性。另外,我最近在关注 Self-RAG 这种让模型自己判断是否需要检索、检索后是否足够可信的思路,它把决策权交给模型,但代价是推理更复杂,计算量更大。我觉得这是 RAG 从固定流程走向自适应的重要方向,但落地时得权衡好延迟和准确性。

关键一句:Self-RAG让模型自行判断检索时机和可信度,是RAG从固定流程走向自适应的方向,但推理复杂度和延迟是落地关键权衡。

面试官还可能这样问

  1. 问法 1 · 场景切入

    我看你做过智能客服。假设用户问'我的订单什么时候到',你通过RAG去查物流知识库,但有时系统还是给出错误物流信息。你觉得在检索和生成环节,哪个地方最容易出问题导致事实不准?

  2. 问法 2 · 层层追问

    大模型生成答案有时候会胡编,你怎么解决?……你说用RAG,那RAG为什么能减少幻觉?……具体来说,检索到的信息怎么约束模型不要自由发挥?

  3. 问法 3 · 直球架构

    请系统阐述RAG的基本原理、核心架构和关键模块,以及它如何提升事实准确性、应对知识更新和减少幻觉。结合一个你熟悉的业务场景说明技术机制。

同模块相关题目