跳到正文

RAG 架构怎么工作?

结合检索与生成,知识密集型任务的优势与局限

原题:请解释检索增强生成(RAG)的基本架构和工作流程,阐述其如何结合信息检索与语言生成能力,并讨论其在知识密集型任务中的优势以及可能存在的局限性。

评估与监控 · 百度真题

30 秒回答

  1. 清晰描述RAG的两阶段架构(检索+生成)
  2. 说明向量检索的核心机制(embedding、相似度计算)
  3. 解释RAG缓解幻觉的原理
  4. 列举至少2个优势(知识时效性、可溯源性等)

回答与解析

答案要点

  • 清晰描述RAG的两阶段架构(检索+生成)
  • 说明向量检索的核心机制(embedding、相似度计算)
  • 解释RAG缓解幻觉的原理
  • 列举至少2个优势(知识时效性、可溯源性等)
  • 提及至少2个局限(检索质量依赖、上下文长度限制等)

RAG基本架构

RAG = 检索(Retrieval) + 生成(Generation),核心思想是"外挂知识库":

用户Query → 向量化 → 向量检索 → Top-K文档 → 拼接Prompt → LLM生成

工作流程拆解

1. 索引阶段(离线)

  • 文档切分(Chunking)
  • Embedding模型编码 → 存入向量数据库(如Milvus、Faiss)

2. 检索阶段(在线)

  • Query向量化,计算相似度,召回Top-K相关片段

3. 生成阶段

  • 将检索结果作为上下文,与Query一起送入LLM
  • 典型Prompt模板:"基于以下信息回答问题:[检索内容] \n 问题:[Query]"

核心优势(知识密集型任务)

优势 说明
缓解幻觉 生成内容有明确来源,可事实校验
知识时效性 无需重训模型,更新知识库即可
可溯源性 输出可关联原始文档,满足合规要求
成本可控 相比全量微调,实施成本低

主要局限

  • 检索质量瓶颈:Embedding不准、Query-doc语义Gap、切分策略不当导致信息丢失
  • 上下文限制:K值过大超出LLM窗口,K值过小覆盖不全
  • 噪声敏感:检索到无关内容会干扰生成("Lost in the Middle"问题)
  • 复杂推理弱:需要多跳推理的问题,单轮检索难以解决

一句话总结

RAG的本质是用检索的"确定性"弥补LLM参数的"不确定性",是当前落地大模型最务实的路径之一。

口语版讲法(约4分钟)

  • 一句话定位:RAG本质是给LLM外挂可更新的知识库
  • 两阶段架构:离线索引与在线检索+生成
  • 核心优势:缓解幻觉、知识时效、成本可控
  • 落地风险:检索质量是瓶颈、上下文限制、噪声敏感
  • 工程取舍:混合检索+重排+置信度过滤

这道题问的是检索增强生成,其实本质上是在问:怎么用外挂知识库来弥补大模型本身的知识短板。你想想,大模型参数里存的知识是静态的,而且容易幻觉,RAG的思路就是我不指望你把所有东西都记在脑子里,我给你一个随时可以查的资料库,你回答的时候先查再答。

整体架构很清晰,就两段。第一段是离线索引,把文档切分成块,然后拿Embedding模型转成向量,存到向量数据库里,比如Faiss或Milvus。第二段是在线流程,用户提问来了,同样向量化,到库里搜最相似的Top-K片段,然后把这些片段和问题拼成Prompt,喂给LLM生成答案。

核心优势其实很实在。先说缓解幻觉,因为生成的内容有出处,可以溯源验证,这在金融、医疗这些合规要求高的场景特别重要。再一个是知识时效性,知识库一更新,答案就跟着变,不用重新训练模型,成本低得多。还有就是成本可控,比起全量微调,RAG几乎没什么训练开销,换知识库就行。

但落地的时候坑也不少。最关键的瓶颈是检索质量。如果Embedding模型不准,或者Query和文档的语义对不上,召回的内容就是错的,那LLM再强也答不对。另一个是上下文窗口限制,你召回的片段多了,超出LLM能处理的长度,它就开始丢信息;召回的少了,覆盖不全。还有个噪声敏感问题,检索到无关内容会干扰生成,这就是所谓的"迷失在中间"效应。

所以真正落地的时候,我会做几个工程取舍。先说混合检索,不只用向量,还结合BM25这类关键词匹配,让两种方法互补。再一个是加重排,召回Top-K之后用更精细的模型比如Cross-Encoder重新打分,把真正相关的顶上来。还有就是置信度过滤,分太低的直接扔掉,宁可少给信息也别给错的。

还有一个常被问到的问题是RAG和微调的边界。我的看法是,RAG适合知识更新快、需要溯源的场景,比如客服的退款政策、企业SOP;微调适合让模型学会特定风格或推理模式,比如医疗诊断的思维链。实际项目里我经常两者一起用,微调让模型更听话,RAG给它最新知识。

所以总的来说,RAG不是万能药,但它确实是当前落地大模型最务实的一条路。我会把它看成是"给模型配一个可更新的外部大脑",核心是把检索的确定性注入到生成的开放性里。

关键一句:RAG和微调的边界:RAG适合知识更新快、需溯源的场景,微调适合风格或推理模式学习,实际常两者结合。

面试官还可能这样问

  1. 问法 1 · 场景切入

    假设你在做电商客服机器人,用户问‘iPhone 15有啥优惠’,你直接让大模型答,它可能瞎编。如果用RAG,你会怎么设计,让回答既准确又能溯源到商品文档?

  2. 问法 2 · 层层追问

    大模型做知识问答容易胡说八道,你怎么解决?……如果外挂一个知识库呢?……那具体怎么把用户问题转成检索,再把搜到的内容和问题拼起来给模型?整个流程怎么串?

  3. 问法 3 · 直球架构

    聊一下RAG的架构和工作流程,从索引、检索到生成怎么配合?它为什么能缓解幻觉?实际落地中,你会碰到哪些瓶颈,比如检索不准或上下文不够用?

同模块相关题目