1. RAG 是什么

RAG(Retrieval-Augmented Generation),中文叫检索增强生成,是当前大模型的重要技术路线之一。

核心思想:

“让大模型具备外部知识库,提升事实性和领域适应性。”

大语言模型(LLM)在预训练时固定了知识,更新困难,容易幻觉。
RAG 在生成答案前会先检索外部知识库,再把相关文档拼接到 Prompt 中交给大模型,从而得到更准确、可控的输出。

RAG 工作流程

  1. Embedding 向量化
    用向量模型(如 BERT、E5、SimCSE)将知识库文档转为向量。

  2. 向量检索
    根据用户 Query,检索 Top-K 相关文档(Faiss、Milvus、Elasticsearch)。

  3. 上下文拼接
    将检索到的内容拼接进 Prompt,形成 Context + Question。

  4. LLM 生成
    大模型基于补充知识生成答案。

公式上可以写成:

Answer = \text{LLM}(Query + \text{Retrieve}(Query))


2. RAG 的优势

对比维度直接用LLMRAG
知识范围固定,更新困难可动态扩展外部知识库
事实性容易幻觉基于真实文档,准确度高
领域适配需微调模型无需微调,仅更新知识库
成本高相对低
可解释性弱可以返回引用文档

3. RAG 面试高频考点

(1) 原理类问题

考察你对概念、机制的理解

1. 什么是 RAG?为什么大模型需要检索增强?

A:

RAG(Retrieval-Augmented Generation,检索增强生成)是一种结合向量检索和大模型生成的技术,让模型在回答问题时动态接入外部知识库,从而提高事实性、可解释性和领域适应性。

核心思想公式:

P(y \mid q) = \sum_{d \in \mathcal{D}} P(y \mid q, d) \cdot P(d \mid q)

  • $q$:用户查询

  • $d$:检索到的文档

  • $D$:候选文档集合

  • $P(d \mid q)$:相关性概率

  • $P(y \mid q, d)$:基于文档生成答案的概率

为什么需要检索增强:

  • 大模型参数静态 → 知识无法实时更新

  • 原始预训练数据有限 → 专业/小众领域知识不足

  • 减少“幻觉”(生成不符合事实的内容)

  • 降低训练成本 → 无需全量微调,只需维护知识库

一句话总结:
“RAG通过检索+生成,让大模型像‘带了外接硬盘’,既懂上下文,又能接入最新知识。”

2. RAG 的典型架构是什么?核心组件有哪些?

A:
典型 RAG 架构分为四层:

(1) 文档向量化层

  • 模型:BERT、E5、SimCSE、text-embedding-ada-002

  • 作用:将文档切分为 chunk,转为向量:

\mathbf{v}_i = f_{\theta}(d_i) \in \mathbb{R}^k

(2) 向量检索层

  • 引擎:Faiss / Milvus / ElasticSearch / Pinecone

  • 计算相似度:

\cos(\mathbf{q}, \mathbf{v}_i) = \frac{\mathbf{q} \cdot \mathbf{v}_i}{\|\mathbf{q}\| \|\mathbf{v}_i\|}

  • 找出 Top-K 最相关文档。

(3) 上下文拼接层

  • 把检索到的文档 \mathcal{C} = \{d_1, \dots, d_K\}拼接到 Prompt:

\text{Prompt} = \big[\mathcal{C}\big] \oplus q

(4) 大模型生成层

  • 模型:LLaMA、ChatGLM、Qwen、GPT 等

  • 基于扩展后的 Prompt 生成答案:

P(y \mid q, \mathcal{C}) = \prod_{t=1}^T P(y_t \mid y_{<t}, q, \mathcal{C})

核心组件总结:

  • Embedding 模型(向量化)

  • 向量数据库(检索)

  • 大语言模型(生成)

  • 上下文拼接器(提示工程)

“RAG 架构是 Embedding + Retrieval + Prompt + LLM,可直接对接外部知识库。”

3. RAG 如何解决大模型幻觉问题?

A:
大模型“幻觉”是因为:

  • 模型只依赖训练时的静态知识

  • 在不确定或缺失知识的场景下会“编造”答案

RAG 的解决方案:

  1. 检索增强事实性

    • 动态引入外部文档,限制答案空间

  2. 上下文可控

    • 把真实文档拼接到 Prompt,模型按事实生成

  3. 可解释性

    • 可以返回引用文档,提高结果可验证性

“RAG 在生成前引入真实检索文档,把答案建立在可验证事实上,从而显著降低幻觉概率。”

4. 检索的向量模型是怎么训练的?用什么指标评估?

A:

(1) 训练方法

  • 有监督(MS MARCO、NQ 数据集):

    • 正例:$(q, d^+)$

    • 负例:$(q, d^-)$

    • 损失函数(对比学习):

      [ L = -\log \frac{\exp(\cos(q, d^+) / \tau)}{\exp(\cos(q, d^+) / \tau) + \sum_{d^-} \exp(\cos(q, d^-) / \tau)} ]

      $\tau$ 为温度参数。

  • 无监督:SimCSE、E5,通过同一文本 dropout 前后增强,做自对比。


(2) 评估指标

  • Recall@K(召回率):

\mathrm{Recall@K} = \frac{\left| R \cap \mathrm{Top}\text{-}K \right|}{\left| R \right|}

其中$R$ 表示相关文档集合,\mathrm{Top}\text{-}K 表示前 K 检索结果。

  • MRR(平均倒数排名):

[ \text{MRR} = \frac{1}{N} \sum_{i=1}^N \frac{1}{r_i} ]

  • nDCG(归一化折损累计增益):

[ \text{nDCG} = \frac{\text{DCG}}{\text{IDCG}}, \quad \text{DCG} = \sum_{i=1}^K \frac{2^{rel_i} - 1}{\log_2(i + 1)} ]

总结回答:
“向量模型一般用对比学习训练,常用 Recall、MRR、nDCG 来评估检索相关性。”

5. RAG 的 Top-K 检索数量怎么选?K 大小对生成效果有何影响?

A:

(1) K 太小

  • 缺点:覆盖不足,可能检不到关键信息 → 幻觉率升高

  • 优点:Prompt 短,推理快

(2) K 太大

  • 缺点:噪声信息增多,影响生成质量,Prompt 太长导致上下文冲突

  • 优点:召回率高

(3) 平衡方法

  • 一般经验:K=3~5

  • 通过实验找最优 K:

\arg\max_K \ \mathrm{AnswerAccuracy}(K)

  • 也可做 Rerank 策略:

    1. 初检大 K(比如 20)

    2. 用 cross-encoder 排序

    3. 最终拼接前 K’(比如 5)

“K 需要在信息覆盖率和噪声控制之间折中,一般先大取 K,再 rerank 筛选 K’。”

待补充实践类面试题

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐