RAG(检索增强生成)面试指南

1 阅读6分钟

RAG(检索增强生成)是AI大模型面试的高频考点。以下整理了从基础概念到工程优化的核心问题,助你系统性备战。

🎯 一、核心概念与流程

  1. 什么是 RAG?解决了什么问题?

RAG(Retrieval-Augmented Generation)将“外部知识检索”与“大模型生成”相结合。流程为:用户提问 → 从外部知识库检索相关信息 → 将检索结果与问题一同输入大模型 → 生成最终回答。

解决的问题:

  • 减少幻觉:答案基于检索到的真实信息。
  • 实时更新知识:无需重新训练模型,只需更新知识库。
  • 增强领域能力:通过注入专业文档,提升垂直领域表现。
  • 降低训练成本:避免为更新知识而频繁微调或重训模型。
  1. RAG 的基本工作流程?

  2. 数据处理与入库:加载文档 → 清洗 → 切分为文本块 (Chunk) → 向量化 (Embedding) → 存入向量数据库。

  3. 检索:用户提问 → 向量化 → 在向量库中检索 → (可选) 混合检索与重排序 (Rerank)。

  4. 生成:将检索到的相关片段与问题组合成Prompt → 大模型生成回答。

  5. RAG vs. 微调 (SFT) 的区别?

  • 知识来源:RAG 依赖外部知识库检索;SFT 将知识“固化”在模型参数中。
  • 更新成本:RAG 更新知识库即可,成本低;SFT 需要重新收集和训练数据,成本高。
  • 事实准确性:RAG 更高,有据可查;SFT 可能产生幻觉。
  • 推理开销:RAG 需要实时检索,链路更长;SFT 仅为模型前向计算。
  • 适用场景:RAG 适合知识频繁更新、长尾问题;SFT 适合统一模型风格、格式或行为。

🏗️ 二、检索与索引模块

  1. 文本切分 (Chunking) 为何重要?有哪些策略?

切分策略直接影响检索的召回率和答案生成的准确性。

  • 切分过大:引入过多噪音,干扰模型判断。
  • 切分过小:语义不完整,导致答案碎片化。

常见策略:

  • 固定长度切分:如按300-500 tokens切分。
  • 结构化切分:按文档标题、章节等自然结构切分。
  • 滑动窗口:块与块之间设置重叠 (Overlap),防止信息割裂。
  • 语义切分:基于句子或段落边界进行切分。
  1. Embedding 模型和维度如何影响 RAG?
  • 模型选择:入库和查询必须使用同一个模型。领域相关场景(如法律、代码)应选用专用 Embedding 模型。
  • 向量维度:维度越高,语义表示能力越强,但检索和存储开销也越大。需在效果与性能间权衡。
  1. 常见的向量检索算法?
  • Flat:暴力搜索,精度最高但速度最慢。
  • IVF (Inverted File):通过聚类建立索引,牺牲部分精度换取速度。
  • HNSW (Hierarchical Navigable Small World):基于图结构,在精度和速度间取得良好平衡,是工业界主流选择。
  • FAISS / OpenSearch:FAISS 适合单机或GPU加速;OpenSearch 等则提供分布式和企业级功能。
  1. 什么是混合检索 (Hybrid Search)?

混合检索结合了 向量检索 (捕捉语义) 和 关键词检索 (如BM25, 精确匹配),以提升召回率和稳定性。特别适用于代码、产品名、规范等场景。

  1. 什么是重排序 (Rerank)?为什么需要?

重排序是使用一个更精细的模型(通常是 Cross-Encoder)对初步检索出的结果进行重新打分和排序。

  • 原因:初步检索(如向量检索)是“粗排”,仅计算向量相似度;重排序模型能进行深度语义匹配,显著提升 Top-1 或 Top-3 的准确率。
  • 常用模型:bge-reranker, cross-encoder/ms-marco 等。

✍️ 三、生成与 Prompt 设计

  1. 如何减少 RAG 的“幻觉”?
  • Prompt 约束:明确要求模型“仅基于提供的上下文回答”,并设计引用格式。
  • 置信度控制:当检索结果相关性低时,让模型拒绝回答。
  • 引入结构化知识:结合知识图谱 (KG) 等,增强事实约束。
  • 后处理与反思:利用 ReAct 等模式让模型对生成结果进行自我检查和修正。
  1. 如何设计 RAG 的 Prompt?

核心原则是清晰界定“上下文”、“问题”和“回答要求”。

  • 角色设定:定义模型身份(如“你是一个专业的客服助手”)。
  • 上下文注入:明确提供检索到的文档片段。
  • 指令约束:要求模型仅依据上下文回答,并给出引用来源。
  • 输出格式:规定回答的格式(如JSON, Markdown列表)。
  • 思维链 (CoT):对于复杂问题,引导模型分步推理。
  1. Query 改写 (Query Rewriting) 是什么?为何重要?

Query 改写旨在将用户的原始问题(可能含糊、简略)优化为更适合检索的形式。

  • 重要性:解决指代不明(如“它”)、表达模糊等问题,显著提升检索命中率。
  • 常见技术:
    • LLM 语义改写:补全上下文,生成更清晰的查询。
    • 多路查询 (Multi-Query):为同一问题生成多个不同表述的查询,分别检索后合并结果。
    • 关键词扩展:提取核心关键词,增强关键词检索效果。

📊 四、效果评估与指标

  1. RAG 的效果如何评估?

通常分模块进行评估:

  • 检索层指标:评估检索结果的质量。 * "Recall@k":相关文档被召回的比例。 * "Precision@k":召回文档中相关文档的比例。 * "MRR" (Mean Reciprocal Rank):第一个相关文档排名的倒数平均值。 * "NDCG" (Normalized Discounted Cumulative Gain):考虑排序位置的加权得分。
  • 生成层指标:评估最终回答的质量。
    • 忠实度 (Faithfulness):答案是否基于检索到的上下文。
    • 相关性 (Relevance):答案是否准确回答了用户问题。
    • 人工评估:对回答的流畅性、无害性等进行综合评判。

🚀 五、工程优化与架构演进

  1. 如何降低 RAG 的延迟?
  • 检索优化:减少 "top_k" 数量,使用 HNSW 等高效索引,对热点查询进行缓存。
  • 模型加速:使用更轻量的 Embedding 和生成模型,或对模型进行量化。
  • 架构优化:多路检索并行化,压缩文本块内容,仅将最相关的片段送入大模型。
  1. RAG 有哪些常见的高级架构?
  • RAG-Fusion:并行执行多路检索(不同方式或参数),融合各路结果后生成答案,提升覆盖率和稳定性,但成本和延迟更高。
  • GraphRAG / KG-RAG:引入知识图谱,先抽取实体关系,再进行图采样或子图遍历,将结构化知识融入上下文,增强推理能力。
  • Agentic RAG:赋予大模型使用工具(如搜索、数据库查询)的能力,使其能自主决定检索策略,实现动态、多步的复杂问答。
  1. RAG 在实际工程中的常见挑战与对策?
  • 内容缺失/召回率低:优化切分和检索策略,引入混合检索和重排序。
  • 数据质量差:加强数据清洗、去重和格式统一。
  • 复杂文档处理:对表格、PDF等采用 LayoutLM、OCR 等工具进行结构化解析。
  • 知识库更新:设计自动化流水线,实现文档的增量更新和索引重建。
  • 安全与合规:防范 Prompt 注入攻击,对敏感信息进行脱敏处理。