Skip to content

高概率题库 · RAG 系统方向(22题)

出现频率 60% 以上。每题均为六段式结构:题目 / 押题依据 / 标准答案 / 前沿加分 / 常见踩坑 / 回答策略。

返回高概率题库总览


一、RAG 系统方向(22题)

核心原理

Q1:请解释 RAG 的工作原理。与直接 Fine-tuning 相比,RAG 主要解决了什么问题?

  • 难度:⭐⭐ | 公司:字节、阿里、腾讯(高频)
查看完整解析

① 押题依据

RAG 是企业级 AI 产品的核心架构,几乎所有知识库、客服、搜索类产品都在用。面试官考察你是否真正理解技术实现,还是只会背概念。

② 标准答案

RAG(检索增强生成)的核心思路是:在大模型生成回答前,先从外部知识库检索相关文档,将检索内容拼接进 Prompt,让模型基于这些上下文生成答案。

与 Fine-tuning 的核心差异:

维度RAGFine-tuning
知识更新实时更新知识库即可需要重新训练模型
成本低(只需维护向量库)高(GPU 训练成本)
适用场景知识频繁变化、需要引用来源风格/格式固定、领域专用
可解释性可追溯来源文档黑盒,无法解释

RAG 主要解决的问题:

  1. 知识时效性:模型训练后的新知识无法获取,RAG 通过外部检索解决
  2. 幻觉问题:基于检索到的真实文档生成,减少编造
  3. 可追溯性:可以显示答案来源,增强可信度

③ 前沿加分

2025 年后 RAG 演进方向:

  • Agentic RAG:模型自主决定是否检索、检索几轮,比 Naive RAG 更灵活
  • GraphRAG:用知识图谱替代纯向量检索,处理多跳推理(如"A 的上司的上司是谁")
  • 混合方案:RAG + Fine-tuning 结合,用 Fine-tuning 固化领域知识,用 RAG 补充时效信息

④ 常见踩坑

  • ❌ 只说"检索 + 生成",忽略 Embedding、Chunk 策略、向量数据库等关键环节
  • ❌ 把 RAG 和 Fine-tuning 说成"二选一",实际很多场景是组合使用
  • ❌ 说不清楚 RAG 的局限性(如检索不到相关文档时会失败)

⑤ 回答策略

开场句:「RAG 本质是给大模型加外挂知识库,我从原理和选型两个角度说。」

时间分配:原理(1分钟)→ 对比 Fine-tuning(1分钟)→ 前沿补充(30秒)

⑥ 追问预判

「什么场景用 RAG,什么场景用 Fine-tuning?」→ 知识更新频率是核心判断标准


Q2:一个完整的 RAG 流水线包含哪些关键步骤?从数据准备到最终生成。

  • 难度:⭐⭐
查看完整解析

① 押题依据

考察你是否真正做过 RAG 项目,还是只停留在概念层面。完整流程包含很多工程细节。

② 标准答案

完整 RAG 流水线分为离线准备在线服务两个阶段:

离线准备阶段(构建知识库):

  1. 数据收集与清洗:收集文档(PDF/Word/网页),去除无效内容(页眉页脚、广告)
  2. 文档切块(Chunking):将长文档切分为 Chunk(通常 200-500 token),设置重叠(overlap 10-20%)避免语义断裂
  3. 向量化(Embedding):用 Embedding 模型(如 text-embedding-3)将每个 Chunk 转为向量
  4. 索引构建:将向量存入向量数据库(Milvus/Qdrant/Pinecone),建立索引加速检索

在线服务阶段(用户提问):

  1. 查询向量化:将用户问题转为向量
  2. 相似度检索:在向量库中计算相似度,召回 Top-K 相关 Chunk(通常 K=3-5)
  3. 上下文拼接:将召回的 Chunk 拼入 Prompt 模板
  4. LLM 生成:调用大模型生成最终答案
  5. 后处理:格式化输出,添加来源引用

③ 前沿加分

实际生产中还会加入:

  • Reranker:在召回后用更精准的模型重新排序
  • 混合检索:向量检索 + BM25 关键词检索结合
  • 查询改写:用 LLM 先改写用户问题,提升召回率

④ 常见踩坑

  • ❌ 忽略数据清洗,导致检索到大量无效内容
  • ❌ Chunk 切太大(超过 1000 token),导致上下文噪声多
  • ❌ 不做 overlap,导致关键信息被切断

⑤ 回答策略

开场句:「RAG 流程分离线构建和在线服务两部分,我按顺序说。」

时间分配:离线(1分钟)→ 在线(1分钟)→ 工程优化(30秒)

⑥ 追问预判

「Chunk 大小怎么定?」→ 根据文档类型和模型 Context Window 权衡


Q3:文本切块(Chunking)策略如何选择?切块大小和重叠长度背后有什么权衡?

  • 难度:⭐⭐
查看完整解析

① 押题依据

Chunking 是 RAG 系统最容易被忽视但影响最大的环节,直接决定检索质量。

② 标准答案

Chunk 大小的权衡:

Chunk 大小优势劣势适用场景
小(100-200 token)检索精准,噪声少可能丢失上下文FAQ、短问答
中(300-500 token)平衡精准和完整性通用大部分场景
大(800-1000 token)保留完整语义噪声多,检索不精准长文档摘要

Overlap(重叠)的作用:

设置 10-20% 的重叠,避免关键信息被切断。例如:

  • Chunk 1:「...公司成立于 2020 年」
  • Chunk 2(无 overlap):「主要业务是...」→ 丢失主语
  • Chunk 2(有 overlap):「公司成立于 2020 年,主要业务是...」→ 语义完整

选择策略:

  1. 文档类型:结构化文档(合同、报告)按章节切,非结构化(对话记录)按语义切
  2. 问题类型:精确查找用小 Chunk,理解类问题用大 Chunk
  3. 模型 Context Window:召回 5 个 Chunk 后总长度不能超过模型限制

③ 前沿加分

高级 Chunking 策略:

  • 语义切块:用 LLM 识别段落边界,而非固定 token 数
  • 层级切块:同时存储大 Chunk(摘要)和小 Chunk(细节),先召回大的再定位小的
  • 动态 Chunk:根据查询类型动态调整召回的 Chunk 大小

④ 常见踩坑

  • ❌ 用固定字符数切块,忽略句子边界,导致语义断裂
  • ❌ Overlap 设置为 0,关键信息被切断
  • ❌ 所有文档用同一套 Chunk 策略,忽略文档类型差异

⑤ 回答策略

开场句:「Chunking 是 RAG 的基础,核心是平衡精准和完整性。」

时间分配:大小权衡(1分钟)→ Overlap 作用(30秒)→ 选择策略(1分钟)

⑥ 追问预判

「你们项目用多大的 Chunk?」→ 说出具体数字和选择理由


Q4:如何选择合适的 Embedding 模型?评估 Embedding 好坏的指标有哪些?

  • 难度:⭐⭐
查看完整解析

① 押题依据

Embedding 质量直接决定检索准确率,是 RAG 系统的核心。PM 需要知道如何评估和选型。

② 标准答案

选择 Embedding 模型的考量维度:

维度说明示例
语言支持中文/英文/多语言text-embedding-3(多语言)、bge-large-zh(中文)
向量维度维度越高越精准,但存储和计算成本越高512/768/1024/1536 维
领域适配通用 vs 领域专用法律、医疗领域需要专用模型
成本API 调用费用 vs 自部署成本OpenAI API vs 开源模型

评估 Embedding 好坏的指标:

  1. 检索准确率(Recall@K):Top-K 结果中相关文档占比
  2. MRR(Mean Reciprocal Rank):第一个相关结果的平均排名
  3. NDCG(归一化折损累积增益):考虑排序质量的综合指标
  4. 语义相似度测试:用标注数据集测试相似文本的向量距离

实际选型建议:

  • 通用场景:OpenAI text-embedding-3-large(1536 维,多语言)
  • 中文优化:bge-large-zh-v1.5(1024 维,开源)
  • 成本敏感:bge-small-zh(512 维,性能略降但成本低)

③ 前沿加分

2025 年 Embedding 技术趋势:

  • 多模态 Embedding:文本 + 图片统一向量空间(CLIP 系列)
  • 指令式 Embedding:根据任务类型(检索/分类/聚类)调整向量表示
  • 动态维度:根据查询复杂度动态调整向量维度

④ 常见踩坑

  • ❌ 用英文 Embedding 模型处理中文,效果大幅下降
  • ❌ 只看模型参数大小,忽略实际检索效果测试
  • ❌ 不做 Benchmark 对比就直接上线

⑤ 回答策略

开场句:「Embedding 选型要看语言、领域、成本三个维度,我从评估指标说起。」

时间分配:评估指标(1分钟)→ 选型建议(1分钟)→ 前沿补充(30秒)

⑥ 追问预判

「你们用的什么 Embedding 模型?」→ 说出模型名称和选择理由


检索优化

Q5:除了基础向量检索,还有哪些可以提升 RAG 检索质量的技术?

  • 难度:⭐⭐⭐ | 公司:字节、阿里(高频)
  • PM 重点:混合检索(稠密+稀疏)、Reranker、HyDE
查看完整解析

① 押题依据

基础向量检索在实际场景中召回率往往不足,面试官考察你是否了解工程优化手段。

② 标准答案

核心优化技术:

  1. 混合检索(Hybrid Search)

    • 向量检索(语义相似)+ BM25(关键词匹配)结合
    • 适用场景:用户问题包含专有名词、产品型号等精确匹配需求
    • 融合策略:RRF(Reciprocal Rank Fusion)或加权平均
  2. Reranker(重排序)

    • 召回 Top-20 后,用更精准的模型(如 Cross-Encoder)重新排序,输出 Top-5
    • 优势:Cross-Encoder 比 Embedding 更准确,但计算慢,只用于精排
    • 常用模型:bge-reranker-large
  3. HyDE(假设性文档嵌入)

    • 先让 LLM 根据问题生成假设答案,再用假设答案做检索
    • 原理:假设答案比问题更接近知识库文档的语言风格
    • 适用场景:用户问题表达模糊时
  4. 查询改写(Query Rewriting)

    • 用 LLM 将用户问题改写为多个子问题,分别检索后合并
    • 适用场景:复杂问题需要多角度信息

③ 前沿加分

  • Self-RAG:模型自主判断是否需要检索,避免无效检索
  • CRAG(Corrective RAG):检索后评估结果质量,质量低时触发网络搜索补充
  • 多路召回:同时用多个 Embedding 模型检索,取并集

④ 常见踩坑

  • ❌ 盲目堆砌技术,不做 AB 测试验证效果
  • ❌ Reranker 用在所有查询上,导致延迟过高
  • ❌ 混合检索的权重固定,不根据查询类型动态调整

⑤ 回答策略

开场句:「基础向量检索召回率有限,我说几个常用的优化手段。」

时间分配:混合检索(1分钟)→ Reranker(1分钟)→ 其他技术(1分钟)

⑥ 追问预判

「Reranker 会增加多少延迟?」→ 通常增加 100-300ms,需要权衡


Q6:什么是"Lost in the Middle"问题?如何缓解?

  • 难度:⭐⭐⭐
  • PM 重点:长文本中间内容被忽视,影响最终生成质量
查看完整解析

① 押题依据

这是 RAG 系统的经典问题,考察你对 LLM 注意力机制的理解。

② 标准答案

问题定义:

当 Prompt 中包含多个检索到的 Chunk 时,LLM 对开头和结尾的内容注意力更高,中间部分容易被忽略。这导致即使检索到了相关文档,但因为排在中间位置而没被利用。

原因:

  • LLM 的注意力机制对位置敏感
  • 长上下文中,模型倾向于关注首尾信息

缓解方法:

  1. 调整 Chunk 顺序

    • 将最相关的 Chunk 放在开头或结尾
    • 根据相似度分数排序,Top-1 放开头,Top-2 放结尾
  2. 减少召回数量

    • 不要盲目召回 Top-10,精选 Top-3 即可
    • 用 Reranker 提升 Top-K 的质量
  3. 分段生成

    • 将多个 Chunk 分批输入,每批生成部分答案,最后合并
    • 适用于需要综合多个文档的场景
  4. Prompt 设计

    • 明确指示:「请仔细阅读以下所有文档,包括中间部分」
    • 在每个 Chunk 前加编号和重要性标注

③ 前沿加分

  • 注意力增强:用特殊 token 标记重要 Chunk,引导模型注意力
  • 多轮检索:先用 Top-1 生成初步答案,再根据答案检索补充信息

④ 常见踩坑

  • ❌ 召回 10+ 个 Chunk 直接拼接,导致中间信息丢失
  • ❌ 只按相似度排序,不考虑位置影响
  • ❌ 不监控实际使用了哪些 Chunk

⑤ 回答策略

开场句:「Lost in the Middle 是 LLM 注意力机制的特性,核心是优化 Chunk 排序。」

时间分配:问题解释(1分钟)→ 缓解方法(1.5分钟)

⑥ 追问预判

「你们怎么验证这个问题?」→ 用 attention 可视化或对比实验


Q7:什么场景下选择知识图谱(GraphRAG)而不是传统向量检索?

  • 难度:⭐⭐⭐
  • PM 重点:多跳推理、实体关系密集的场景适合 GraphRAG
查看完整解析

① 押题依据

GraphRAG 是 2024-2025 年的热点技术,考察你对不同 RAG 范式的理解。

② 标准答案

传统向量 RAG vs GraphRAG:

维度向量 RAGGraphRAG
检索方式语义相似度实体关系路径
适用问题单跳查询("什么是 X")多跳推理("A 的上司的上司")
知识表示文本 Chunk实体 + 关系图谱
构建成本高(需要实体抽取和关系标注)

GraphRAG 适用场景:

  1. 多跳推理问题

    • 例:「张三的直属领导的部门预算是多少?」
    • 需要:张三 → 领导 → 部门 → 预算,三跳关系
  2. 实体关系密集

    • 企业组织架构、供应链网络、知识图谱
    • 实体间关系比文本描述更重要
  3. 需要结构化推理

    • 法律条款引用关系、学术论文引用网络
    • 需要沿着关系链推理

不适合 GraphRAG 的场景:

  • 非结构化文本(新闻、博客)
  • 实体关系不明确的内容
  • 快速迭代的知识库(图谱维护成本高)

③ 前沿加分

微软 GraphRAG 方案:

  • 先用 LLM 从文档中抽取实体和关系,构建图谱
  • 查询时沿图谱路径检索,再用 LLM 生成答案
  • 适合大规模文档集的全局理解

④ 常见踩坑

  • ❌ 盲目追求 GraphRAG,忽略构建和维护成本
  • ❌ 把所有文档都转成图谱,实际大部分场景向量检索足够
  • ❌ 图谱质量差(实体抽取错误),反而不如向量检索

⑤ 回答策略

开场句:「GraphRAG 适合多跳推理场景,我对比一下两种方案的适用性。」

时间分配:对比(1分钟)→ 适用场景(1分钟)→ 选型建议(30秒)

⑥ 追问预判

「你们项目用了 GraphRAG 吗?」→ 说出是否用、为什么用/不用


评估与工程实践

Q8:如何全面评估一个 RAG 系统?从检索和生成两个阶段分别提指标。

  • 难度:⭐⭐⭐
查看完整解析

① 押题依据

评估体系是 AI PM 的核心能力,区别于工程师的关键考点。

② 标准答案

分阶段评估指标:

检索阶段(Retrieval):

指标定义目标值
Recall@KTop-K 中包含相关文档的比例>90%
MRR第一个相关文档的平均排名倒数>0.8
Precision@KTop-K 中相关文档占比>60%

生成阶段(Generation):

指标定义评估方法
Faithfulness答案是否基于检索内容LLM-as-Judge 或人工标注
Answer Relevance答案是否回答了问题语义相似度
Context Relevance检索内容是否相关人工抽查

用户体验层:

指标定义目标值
满意度👍/👎 比例>80%
追问率用户继续追问的比例<30%
纠错率用户指出错误的比例<5%

系统健壮性:

  • 幻觉率:无相关文档时编造答案的比例
  • 拒答率:正确拒绝回答的比例
  • 延迟:P95 响应时间 <3s

③ 前沿加分

自动化评估框架:

  • RAGAS:开源 RAG 评估框架,支持 Faithfulness/Relevance 自动评估
  • LLM-as-Judge:用 GPT-4 评估答案质量,相关性达到人类标注 85% 一致性

④ 常见踩坑

  • ❌ 只看生成质量,忽略检索阶段问题
  • ❌ 只用自动化指标,不做人工抽查
  • ❌ 评估数据集太小(<100 条),不具代表性

⑤ 回答策略

开场句:「RAG 评估要分检索和生成两阶段,再加用户体验层。」

时间分配:检索指标(1分钟)→ 生成指标(1分钟)→ 用户体验(30秒)

⑥ 追问预判

「怎么评估 Faithfulness?」→ 用 LLM 判断答案是否引用了检索内容


Q9:RAG 系统在实际部署中可能面临哪些挑战?

  • 难度:⭐⭐⭐ | 公司:字节、阿里(高频)
查看完整解析

① 押题依据

考察你是否有实际落地经验,还是只停留在 Demo 阶段。

② 标准答案

核心挑战分类:

1. 数据质量问题

  • 知识库内容过时、重复、矛盾
  • 文档格式不统一(PDF/Word/扫描件)
  • 缺少数据治理流程

2. 检索质量问题

  • 召回率低:相关文档没被检索到
  • 精准率低:检索到大量无关内容
  • 语义理解偏差:用户问法和文档表述不一致

3. 生成质量问题

  • 幻觉:检索不到时编造答案
  • 答非所问:理解用户意图失败
  • 引用错误:答案和来源不匹配

4. 工程性能问题

  • 延迟高:向量检索 + LLM 生成总耗时 >5s
  • 成本高:大量 API 调用费用
  • 并发支持:高峰期响应慢

5. 用户体验问题

  • 用户不知道 AI 能力边界,期望过高
  • 错误时没有降级方案
  • 缺少反馈闭环

应对策略:

挑战解决方案
数据质量建立文档审核流程,定期更新,去重
检索质量混合检索 + Reranker + 查询改写
生成质量置信度判断 + 拒答机制 + 来源引用
性能向量库索引优化 + 缓存 + 异步生成
体验明确能力边界 + 人工兜底 + 反馈收集

③ 前沿加分

  • 在线学习:用用户反馈持续优化检索和生成
  • A/B 测试:不同 Chunk 策略、Prompt 模板并行测试
  • 可观测性:记录每次检索和生成的中间结果,便于调试

④ 常见踩坑

  • ❌ 只关注技术指标,忽略用户实际满意度
  • ❌ 上线后没有监控和迭代机制
  • ❌ 把 RAG 当成"一次性项目",不做持续优化

⑤ 回答策略

开场句:「RAG 落地挑战主要在数据、检索、生成、工程、体验五个层面。」

时间分配:挑战分类(1.5分钟)→ 应对策略(1.5分钟)

⑥ 追问预判

「你们遇到的最大挑战是什么?」→ 结合实际项目说


Q10:了解 RAGFlow 等开源 RAG 框架吗?如何选择合适的框架?

  • 难度:⭐⭐
查看完整解析

① 押题依据

考察你对 RAG 生态的了解,以及技术选型能力。

② 标准答案

主流开源 RAG 框架对比:

框架特点适用场景
LangChain生态最完善,组件丰富快速原型开发
LlamaIndex专注数据连接和索引企业知识库
RAGFlow国产,可视化强低代码搭建
Dify国产,开箱即用非技术团队
Haystack模块化,灵活定制化需求

选择框架的考量:

  1. 团队技术栈

    • Python 生态:LangChain/LlamaIndex
    • 低代码需求:Dify/RAGFlow
  2. 项目阶段

    • 原型验证:Dify(快速搭建)
    • 生产部署:LlamaIndex(性能优化)
    • 深度定制:自研(完全可控)
  3. 功能需求

    • 多数据源接入:LlamaIndex
    • Agent 能力:LangChain
    • 可视化管理:RAGFlow

自研 vs 开源框架:

维度开源框架自研
开发速度
灵活性
维护成本依赖社区自己维护
适用通用场景特殊需求

③ 前沿加分

  • Vercel AI SDK:前端友好的 RAG 框架,支持流式输出
  • Semantic Kernel:微软出品,支持多模型编排
  • AutoGen:微软多 Agent 框架,支持 RAG + Agent 结合

④ 常见踩坑

  • ❌ 盲目选择"最流行"的框架,不考虑团队能力
  • ❌ 框架版本更新快,生产环境锁定版本不及时
  • ❌ 过度依赖框架,不理解底层原理

⑤ 回答策略

开场句:「RAG 框架选型要看团队、阶段、需求三个维度。」

时间分配:框架对比(1分钟)→ 选型建议(1分钟)→ 自研 vs 开源(30秒)

⑥ 追问预判

「你们用的什么框架?」→ 说出框架名称和选择理由


Q11:搜索系统和 RAG 有什么区别?

  • 难度:⭐⭐
查看完整解析

① 押题依据

很多人把 RAG 理解成"搜索 + 生成",但两者有本质区别。

② 标准答案

核心区别:

维度搜索系统RAG 系统
输出文档列表(链接/摘要)自然语言答案
用户行为用户自己阅读文档AI 综合多个文档生成答案
检索目标找到相关文档即可找到能回答问题的片段
排序依据相关性 + 权威性 + 时效性能否支撑答案生成
可解释性显示匹配关键词显示引用来源

具体差异:

  1. 搜索系统

    • 用户输入:「RAG 是什么」
    • 输出:10 篇相关文章链接
    • 用户需要:自己点开阅读、筛选、总结
  2. RAG 系统

    • 用户输入:「RAG 是什么」
    • 输出:「RAG(检索增强生成)是一种...」+ 来源引用
    • 用户需要:直接获得答案

技术层面差异:

技术环节搜索RAG
索引粒度文档级Chunk 级
排序算法BM25/PageRank向量相似度 + Reranker
后处理摘要提取LLM 生成

什么时候用搜索,什么时候用 RAG:

  • 用搜索:用户需要多个信息源、需要自己判断、探索性查询
  • 用 RAG:用户需要明确答案、信任 AI 判断、效率优先

③ 前沿加分

混合方案:

  • 先用 RAG 生成答案
  • 同时展示相关文档链接(类似 Perplexity)
  • 用户可以验证答案来源

④ 常见踩坑

  • ❌ 把 RAG 当成"搜索的升级版",忽略生成质量
  • ❌ 用搜索的评估指标(点击率)评估 RAG
  • ❌ 不考虑用户对"AI 生成答案"的信任度

⑤ 回答策略

开场句:「搜索返回文档列表,RAG 返回生成答案,核心区别在输出形式。」

时间分配:核心区别(1分钟)→ 技术差异(1分钟)→ 选型建议(30秒)

⑥ 追问预判

「能否结合两者优势?」→ 可以,RAG 生成答案 + 展示来源文档


大厂真题(高频)

Q12:构建向量检索库时如何处理时间衰减对召回的影响?

  • 难度:⭐⭐⭐ | 公司:字节(真题)
查看完整解析

① 押题依据

字节真题,考察对时效性场景的工程理解。新闻、舆情、客服等场景中,旧文档的相关性会随时间下降,纯向量检索无法感知时间维度。

② 标准答案

时间衰减问题的核心是:向量相似度不包含时间信息,导致旧文档可能因语义相似而排在前面。

三种解决方案:

  1. 混合排序(最常用)

    python
    final_score = α × vector_similarity + β × time_decay_score
    # time_decay_score = exp(-λ × days_since_publish)
    • 优点:简单可控,α/β 可根据业务调整
    • 缺点:需要人工调参
  2. 时间分桶 + 分层检索

    • 先按时间分桶(近7天/近30天/历史)
    • 优先在新桶中检索,不足时再查旧桶
    • 适合明确需要最新信息的场景(如"今天的新闻")
  3. Embedding 时融入时间特征

    • 在文档 Embedding 时拼接时间戳向量
    • 让模型学习时间和语义的联合表示
    • 缺点:需要重新训练 Embedding 模型

实际项目选择:

  • 新闻/舆情:混合排序,β 权重设高(0.4-0.6)
  • 客服知识库:时间分桶,优先返回最新版本文档
  • 通用问答:纯向量检索即可,时间不敏感

③ 前沿加分点

  • 动态权重调整:根据 Query 类型自动调整 α/β(如"最新"关键词出现时提高 β)
  • 用户反馈闭环:收集点击数据,发现旧文档被跳过时自动降权
  • LLM 辅助判断:检索后让 LLM 判断"这个问题是否需要最新信息",动态决定是否重排序

④ 常见踩坑

  • ❌ 直接用发布时间排序,忽略语义相关性(变成时间线而非检索)
  • ❌ 时间衰减系数 λ 设置过大,导致稍旧的高质量文档被完全过滤
  • ❌ 没有考虑"常青内容"(如基础概念文档),这类内容不应衰减

⑤ 回答策略

开场句:「时间衰减的核心是向量检索不感知时间,我说三种工程方案。」

结构:混合排序(公式)→ 时间分桶 → Embedding 融合 → 实际项目怎么选

⑥ 追问预判

  • 「α 和 β 怎么定?」→ A/B 测试,或根据业务规则(如新闻类 β=0.5,百科类 β=0.1)
  • 「如何判断哪些文档需要时间衰减?」→ 文档元数据标记(is_time_sensitive 字段)

Q13:知识库动态增量更新时,如何避免新旧文档分布不一致导致的检索偏差?

  • 难度:⭐⭐⭐ | 公司:美团(真题)
查看完整解析

① 押题依据

美团真题,考察对向量检索系统工程问题的理解。增量更新时,新文档的 Embedding 分布可能与旧文档不一致(模型版本、数据分布变化),导致检索偏差。

② 标准答案

问题根源:

  • 旧文档用 Embedding 模型 v1,新文档用 v2 → 向量空间不对齐
  • 新文档数据分布变化(如新增业务线)→ 语义空间漂移
  • 结果:新旧文档相似度不可比,检索结果偏向某一侧

三种解决方案:

  1. 全量重建(最彻底)

    • 每次模型更新时,重新 Embed 所有历史文档
    • 优点:保证一致性
    • 缺点:成本高,百万级文档重建耗时长
  2. 版本隔离 + 双路召回

    旧索引(v1 Embedding)→ 召回 Top-K1
    新索引(v2 Embedding)→ 召回 Top-K2
    合并后重排序(用统一的 Rerank 模型)
    • 优点:避免重建,新旧文档独立检索
    • 缺点:需要维护多个索引
  3. 增量对齐(工程折中)

    • 定期抽样旧文档,用新模型重新 Embed
    • 计算新旧向量的偏移矩阵,对旧向量做线性变换对齐
    • 适合模型微调场景(v1 → v1.1,变化不大)

实际项目选择:

  • 文档量 < 10万:全量重建,成本可控
  • 文档量 > 100万:双路召回 + Rerank
  • 模型微调场景:增量对齐

③ 前沿加分点

  • 在线对齐:实时检测新旧文档召回比例,动态调整双路召回的 Top-K 比例
  • A/B 测试验证:上线前对比新旧索引的召回效果,量化偏差影响
  • Embedding 版本管理:在向量数据库中记录每个文档的 Embedding 版本号,支持灰度切换

④ 常见踩坑

  • ❌ 直接用新模型增量更新,不做任何对齐处理(最常见错误)
  • ❌ 双路召回时,新旧索引的 Top-K 比例固定(应根据文档量动态调整)
  • ❌ 没有监控新旧文档的召回分布,问题发现滞后

⑤ 回答策略

开场句:「增量更新的核心问题是向量空间不对齐,我说三种工程方案。」

结构:问题根源(模型版本/数据分布)→ 三种方案(全量/双路/对齐)→ 实际项目怎么选

⑥ 追问预判

  • 「双路召回的 Top-K 比例怎么定?」→ 根据新旧文档数量比例,如新文档占 20%,则 K2 = 0.2 × K
  • 「如何监控检索偏差?」→ 统计新旧文档的召回率、平均排名,设置告警阈值

Q14:RAG 如果有噪声怎么办?

  • 难度:⭐⭐ | 公司:字节、阿里
查看完整解析

① 押题依据

高频题,考察对 RAG 系统鲁棒性的理解。噪声来源多样(检索错误、文档质量差、OCR 错误等),直接影响生成质量。

② 标准答案

噪声来源分类:

  1. 检索噪声:召回的文档与 Query 不相关
  2. 内容噪声:文档本身质量差(错别字、格式混乱、OCR 错误)
  3. 冲突噪声:多个文档内容矛盾

分层解决方案:

阶段1:检索后过滤(Rerank)

python
# 用 Rerank 模型重新打分,过滤低相关文档
rerank_scores = rerank_model(query, retrieved_docs)
filtered_docs = [doc for doc, score in zip(docs, scores) if score > threshold]
  • 常用模型:bge-reranker、cohere-rerank
  • 阈值设置:根据业务容忍度,通常 0.5-0.7

阶段2:生成时降噪

  • Prompt 工程:明确告知模型"如果文档不相关,直接说不知道"
  • Self-Consistency:多次生成,选择一致性最高的答案
  • 引用验证:要求模型标注答案来源,人工/自动检查引用是否合理

阶段3:内容质量预处理

  • 文档入库前:去除格式符号、修正 OCR 错误、过滤低质量文档
  • 质量评分:用 LLM 对文档打分(可读性、完整性),低分文档降权或不入库

阶段4:冲突处理

  • 检测冲突:用 LLM 判断多个文档是否矛盾
  • 解决策略:
    • 优先信任权威来源(如官方文档 > 论坛帖子)
    • 时间优先(新文档 > 旧文档)
    • 明确告知用户"存在不同说法"

③ 前沿加分点

  • Self-RAG:模型自主判断检索结果质量,决定是否使用
  • CRAG(Corrective RAG):检索后评估质量,质量低时触发网络搜索补充
  • 噪声注入训练:在 Fine-tuning 时故意加入噪声文档,提升模型鲁棒性

④ 常见踩坑

  • ❌ 只依赖 Rerank,不做生成阶段的降噪(Rerank 也会误判)
  • ❌ 阈值设置过高,导致召回率过低(宁可有噪声,也不能漏掉相关文档)
  • ❌ 没有监控噪声率,问题发现滞后

⑤ 回答策略

开场句:「RAG 噪声分检索噪声和内容噪声,我分四个阶段说解决方案。」

结构:噪声来源 → 检索后过滤 → 生成时降噪 → 内容预处理 → 冲突处理

⑥ 追问预判

  • 「Rerank 阈值怎么定?」→ A/B 测试,平衡准确率和召回率
  • 「如何评估噪声率?」→ 人工标注 Bad Case,统计噪声文档占比

Q15:讲一下 BM25 算法原理。

  • 难度:⭐⭐ | 公司:字节、阿里(高频)
查看完整解析

① 押题依据

字节、阿里高频题,考察对传统检索算法的理解。BM25 是混合检索中的关键词匹配部分,与向量检索互补。

② 标准答案

BM25 核心思想:

BM25(Best Matching 25)是基于 TF-IDF 改进的关键词匹配算法,用于计算查询和文档的相关性分数。

公式(简化版):

Score(Q, D) = Σ IDF(qi) × (f(qi, D) × (k1 + 1)) / (f(qi, D) + k1 × (1 - b + b × |D| / avgdl))

三个核心要素:

  1. TF(词频):词在文档中出现次数

    • 但有上限:出现 10 次和 100 次的权重差异不大(饱和效应)
    • 参数 k1 控制饱和速度(通常 1.2-2.0)
  2. IDF(逆文档频率):词的稀有程度

    • 常见词(如"的")权重低,稀有词(如"RAG")权重高
    • 公式:log((N - df + 0.5) / (df + 0.5))
  3. 文档长度归一化

    • 长文档天然包含更多词,需要归一化
    • 参数 b 控制归一化程度(通常 0.75)

与 TF-IDF 的区别:

维度TF-IDFBM25
TF 增长线性增长饱和增长(有上限)
文档长度不考虑归一化处理
效果基础更准确

实际应用:

  • 混合检索:BM25(关键词)+ 向量检索(语义)
  • 适用场景:专有名词、产品型号、精确匹配需求

③ 前沿加分点

  • BM25+:改进版,处理长文档效果更好
  • 学习排序(LTR):用机器学习模型学习 BM25 参数,而非固定值
  • 神经 BM25:用神经网络学习词权重,替代传统 IDF

④ 常见踩坑

  • ❌ 把 BM25 当成"过时技术",实际在混合检索中仍然重要
  • ❌ 参数 k1/b 用默认值,不根据数据集调优
  • ❌ 不做分词预处理,导致中文检索效果差

⑤ 回答策略

开场句:「BM25 是改进版 TF-IDF,核心是词频饱和和文档长度归一化。」

结构:核心思想 → 三要素(TF/IDF/长度)→ 与 TF-IDF 对比 → 实际应用

⑥ 追问预判

  • 「BM25 和向量检索哪个更好?」→ 互补,BM25 擅长精确匹配,向量检索擅长语义理解
  • 「k1 和 b 怎么调?」→ k1 控制词频饱和(1.2-2.0),b 控制长度归一化(0.75 常用)

Q16:意图识别是否做过?如何实现?

  • 难度:⭐⭐ | 公司:字节、阿里
查看完整解析

① 押题依据

高频题,考察对用户意图理解的工程实现。意图识别是 RAG/Agent 系统的前置环节,决定后续流程。

② 标准答案

意图识别的作用:

在 RAG/Agent 系统中,用户输入可能有多种意图:

  • 知识查询("RAG 是什么")
  • 任务执行("帮我订机票")
  • 闲聊("你好")
  • 多轮对话("那它和 Fine-tuning 有什么区别")

意图识别决定:是否检索、调用哪个工具、如何生成回答。

三种实现方式:

1. 规则匹配(最简单)

python
if "是什么" in query or "介绍" in query:
    intent = "knowledge_query"
elif "帮我" in query or "订" in query:
    intent = "task_execution"
  • 优点:快速、可控
  • 缺点:覆盖不全,维护成本高

2. 分类模型(传统方案)

  • 训练文本分类模型(BERT/RoBERTa)
  • 输入:用户 Query
  • 输出:意图类别(knowledge/task/chitchat)
  • 需要标注数据(通常 1000+ 条)

3. LLM 判断(当前主流)

python
prompt = f"""
判断用户意图,返回 JSON:
用户输入:{query}
意图类别:knowledge_query / task_execution / chitchat / clarification
"""
intent = llm.generate(prompt)
  • 优点:零样本/少样本即可,灵活
  • 缺点:延迟高(增加一次 LLM 调用)

实际项目选择:

  • 意图类别少(<5 种):规则匹配
  • 意图复杂、有标注数据:分类模型
  • 快速迭代、意图多变:LLM 判断

③ 前沿加分点

  • 多意图识别:一句话包含多个意图("介绍 RAG 并帮我生成示例代码")
  • 意图澄清:识别到模糊意图时,主动追问用户
  • 上下文意图:结合对话历史判断意图("那它呢"需要回溯上文)

④ 常见踩坑

  • ❌ 所有 Query 都走检索,不做意图过滤(闲聊也检索,浪费资源)
  • ❌ 意图分类过细,导致边界模糊、准确率低
  • ❌ 不做意图置信度判断,低置信度时应该追问而非直接执行

⑤ 回答策略

开场句:「意图识别决定 RAG 是否检索,我说三种实现方式。」

结构:意图识别作用 → 三种方式(规则/模型/LLM)→ 实际项目怎么选

⑥ 追问预判

  • 「意图识别错了怎么办?」→ 设置置信度阈值,低置信度时追问用户
  • 「如何处理多意图?」→ 拆解为多个子任务,分别执行

Q17:检索做了哪些优化?追问:子问题分解怎么做?

  • 难度:⭐⭐⭐ | 公司:字节(真题)
查看完整解析

① 押题依据

字节真题,考察对检索优化的系统性理解。子问题分解是复杂查询的关键技术。

② 标准答案

检索优化的五个层次:

1. 查询改写(Query Rewriting)

  • 用 LLM 将用户问题改写为更适合检索的形式
  • 例:「RAG 咋样」→ 「RAG 的优缺点是什么」
  • 技术:Few-shot Prompt 或 Fine-tuning

2. 查询扩展(Query Expansion)

  • 添加同义词、相关词
  • 例:「大模型」→ 「大模型 OR LLM OR 大语言模型」
  • 技术:词典匹配或 LLM 生成

3. 混合检索(Hybrid Search)

  • 向量检索(语义)+ BM25(关键词)
  • 融合策略:RRF(Reciprocal Rank Fusion)
  • 适用:专有名词、产品型号查询

4. 多路召回

  • 同时用多个 Embedding 模型检索,取并集
  • 例:通用模型 + 领域模型
  • 提升召回率,但增加计算成本

5. Reranker 精排

  • 召回 Top-20,用 Cross-Encoder 重排序,输出 Top-5
  • 模型:bge-reranker-large
  • 权衡:准确率 ↑,延迟 ↑

子问题分解(重点):

适用场景:

  • 复杂问题:「对比 RAG 和 Fine-tuning 的成本、效果、适用场景」
  • 多跳推理:「张三的领导的部门预算是多少」

实现方式:

方式1:LLM 分解

python
prompt = f"""
将复杂问题拆解为子问题:
原问题:{query}
子问题列表(JSON 格式):
"""
sub_queries = llm.generate(prompt)
# 输出:["RAG 的成本", "Fine-tuning 的成本", "RAG 的效果", ...]

方式2:模板分解

  • 预定义分解模板(如"对比类"→ 拆成"A 的特点"+"B 的特点")
  • 适合固定场景

分解后的处理:

  1. 并行检索:每个子问题独立检索
  2. 结果合并:将所有检索结果拼接
  3. 统一生成:LLM 基于合并结果生成最终答案

③ 前沿加分点

  • 自适应分解:LLM 判断是否需要分解,简单问题直接检索
  • 分解 + 验证:生成子问题后,让 LLM 验证是否完整覆盖原问题
  • 迭代分解:根据第一轮检索结果,动态生成新的子问题

④ 常见踩坑

  • ❌ 所有问题都分解,简单问题反而效果变差
  • ❌ 子问题过多(>5 个),导致检索成本高、噪声多
  • ❌ 子问题之间有依赖关系,但并行检索(应该串行)

⑤ 回答策略

开场句:「检索优化分五个层次,子问题分解是处理复杂查询的关键。」

结构:五个优化层次(改写/扩展/混合/多路/Rerank)→ 子问题分解(场景/实现/处理)

⑥ 追问预判

  • 「子问题分解会增加多少延迟?」→ 增加 1 次 LLM 调用(~1s)+ N 次并行检索
  • 「如何判断是否需要分解?」→ 用 LLM 判断问题复杂度,或根据问题长度/关键词

Q18:"召回-过滤-生成"三段式 Pipeline 能细讲一下吗?

  • 难度:⭐⭐⭐ | 公司:字节(真题)
查看完整解析

① 押题依据

字节真题,考察对 RAG 工程架构的理解。三段式是生产环境的标准做法,平衡召回率、精准率和延迟。

② 标准答案

三段式 Pipeline 架构:

用户 Query

【召回阶段】Recall:快速粗排,召回候选集(Top-100)

【过滤阶段】Rerank:精准重排,过滤噪声(Top-10)

【生成阶段】Generate:LLM 基于精选文档生成答案

各阶段详解:

阶段1:召回(Recall)

  • 目标:高召回率,不漏掉相关文档
  • 技术
    • 向量检索(ANN 算法,如 HNSW)
    • BM25 关键词检索
    • 混合检索(两者融合)
  • 召回数量:Top-50 ~ Top-100
  • 延迟:<100ms
  • 权衡:速度优先,允许一定噪声

阶段2:过滤/重排序(Rerank)

  • 目标:提升精准率,过滤噪声
  • 技术
    • Cross-Encoder 模型(如 bge-reranker-large)
    • 输入:Query + 每个文档,输出相关性分数
    • 比向量检索更准确,但计算慢
  • 输出数量:Top-5 ~ Top-10
  • 延迟:100-300ms
  • 权衡:准确率优先,计算成本高

阶段3:生成(Generate)

  • 目标:基于精选文档生成答案
  • 技术
    • 将 Top-5 文档拼接进 Prompt
    • LLM 生成答案 + 来源引用
  • 延迟:1-3s(取决于模型和输出长度)

为什么要三段式?

方案问题
只用向量检索精准率低,噪声多
只用 Rerank计算成本高,无法处理大规模文档
三段式平衡召回率、精准率、延迟

实际工程优化:

  • 召回阶段:用 GPU 加速向量检索
  • 过滤阶段:批量 Rerank,减少 API 调用
  • 生成阶段:流式输出,降低用户感知延迟

③ 前沿加分点

  • 四段式:召回 → 粗排 → 精排 → 生成(大规模场景,如电商搜索)
  • 动态 Top-K:根据 Query 复杂度动态调整召回数量
  • 缓存优化:高频 Query 缓存召回结果,跳过召回阶段

④ 常见踩坑

  • ❌ 召回数量过少(Top-10),导致召回率低
  • ❌ Rerank 用在所有 Query 上,导致延迟过高(应该只对复杂 Query 用)
  • ❌ 生成阶段不做 Chunk 排序,直接拼接(Lost in the Middle 问题)

⑤ 回答策略

开场句:「三段式是 RAG 生产架构,核心是平衡召回率、精准率和延迟。」

结构:架构图 → 三阶段详解(召回/过滤/生成)→ 为什么三段式 → 工程优化

⑥ 追问预判

  • 「召回和 Rerank 的 Top-K 怎么定?」→ 召回 50-100(保证召回率),Rerank 5-10(控制延迟)
  • 「能否跳过 Rerank?」→ 可以,简单 Query 或延迟敏感场景

Q19:介绍 Function Calling 和 MCP。

  • 难度:⭐⭐ | 公司:字节、阿里
查看完整解析

① 押题依据

高频题,考察对 LLM 工具调用机制的理解。Function Calling 是 Agent 的核心能力,MCP 是 2024 年的新标准。

② 标准答案

Function Calling(函数调用):

核心思想: 让 LLM 能够调用外部工具/API,而不只是生成文本。

工作流程:

  1. 定义工具:描述函数名、参数、功能

    json
    {
      "name": "get_weather",
      "description": "获取指定城市的天气",
      "parameters": {
        "city": {"type": "string", "description": "城市名"}
      }
    }
  2. LLM 判断:根据用户输入,决定是否调用工具

    • 用户:「北京天气怎么样」
    • LLM 输出:{"function": "get_weather", "arguments": {"city": "北京"}}
  3. 执行工具:系统调用真实 API,获取结果

    • 返回:{"temperature": 15, "condition": "晴"}
  4. LLM 生成:基于工具返回结果,生成自然语言回答

    • 输出:「北京今天 15 度,晴天」

支持 Function Calling 的模型:

  • OpenAI GPT-4/GPT-3.5(原生支持)
  • Claude 3.5(Tool Use)
  • 国产模型:通义千问、文心一言(部分支持)

MCP(Model Context Protocol):

背景: 2024 年 Anthropic 推出的开放标准,统一 LLM 与外部工具的交互协议。

核心特点:

  1. 标准化协议

    • 定义统一的工具描述格式
    • 支持多种工具类型(API/数据库/文件系统)
    • 类似"LLM 的 USB 接口"
  2. 与 Function Calling 的区别:

维度Function CallingMCP
范围单次函数调用持久化上下文连接
状态无状态有状态(可保持连接)
适用简单工具调用复杂系统集成
  1. 实际应用:
    • 连接企业内部系统(CRM/ERP)
    • 访问私有数据库
    • 文件系统操作

③ 前沿加分点

  • 多工具编排:LLM 自主决定调用顺序(先查天气,再推荐穿搭)
  • 工具链(Tool Chain):一个工具的输出作为另一个工具的输入
  • MCP Server:社区正在构建 MCP 工具生态(类似 Chrome 插件市场)

④ 常见踩坑

  • ❌ 工具描述不清晰,导致 LLM 误判是否调用
  • ❌ 不做参数校验,LLM 生成的参数可能不合法
  • ❌ 工具调用失败时没有降级方案(应该告知用户或重试)

⑤ 回答策略

开场句:「Function Calling 让 LLM 能调用工具,MCP 是统一的工具协议标准。」

结构:Function Calling 原理(流程)→ MCP 介绍(背景/特点/对比)→ 实际应用

⑥ 追问预判

  • 「如何保证 LLM 正确调用工具?」→ 清晰的工具描述 + Few-shot 示例 + 参数校验
  • 「MCP 和 LangChain Tools 有什么区别?」→ MCP 是协议标准,LangChain 是实现框架

Q20:高并发 Agent 系统中,如何优化召回和生成阶段的延迟?

  • 难度:⭐⭐⭐ | 公司:字节(真题)
查看完整解析

① 押题依据

字节真题,考察对 RAG/Agent 系统性能优化的理解。高并发场景下,延迟和成本是核心挑战。

② 标准答案

召回阶段优化(目标:<100ms):

1. 向量检索优化

  • 索引算法:HNSW(精准)vs IVF(快速),根据场景选择
  • 量化压缩:向量从 float32 → int8,存储和计算成本降低 4 倍
  • GPU 加速:用 GPU 做向量相似度计算(适合大规模场景)

2. 缓存策略

  • 热点 Query 缓存:高频问题缓存召回结果(如"什么是 RAG")
  • TTL 设置:根据知识库更新频率设置缓存过期时间
  • 缓存命中率监控:目标 >30%

3. 并行召回

  • 向量检索 + BM25 并行执行,而非串行
  • 用异步 I/O 减少等待时间

生成阶段优化(目标:<3s):

1. 模型选择

  • 分层模型:简单 Query 用小模型(GPT-3.5),复杂 Query 用大模型(GPT-4)
  • 本地部署:高并发场景自部署开源模型(Llama/Qwen),降低 API 成本

2. 流式输出

  • 用 SSE(Server-Sent Events)流式返回,降低用户感知延迟
  • 首 token 延迟 <500ms 即可开始输出

3. Prompt 优化

  • 压缩上下文:只传递关键 Chunk,不传递完整文档
  • 减少输出长度:限制生成 token 数(如 max_tokens=500)

4. 批处理(Batching)

  • 多个请求合并为一个 Batch 调用 LLM
  • 适合 API 调用场景,降低成本

系统架构优化:

1. 异步处理

用户请求 → 立即返回 request_id
后台异步处理 → 完成后推送结果

2. 限流 + 降级

  • 高峰期限流,超过阈值返回"系统繁忙"
  • 降级方案:关闭 Rerank、减少召回数量

3. 负载均衡

  • 多实例部署,用 Nginx/K8s 做负载均衡
  • 向量数据库分片(Sharding)

③ 前沿加分点

  • 预计算:离线预生成高频问题的答案,在线直接返回
  • 模型蒸馏:用大模型生成数据,训练小模型,降低推理成本
  • 边缘计算:将小模型部署到边缘节点,降低网络延迟

④ 常见踩坑

  • ❌ 只优化单个环节,忽略整体链路(召回快但生成慢,总延迟仍高)
  • ❌ 过度缓存,导致知识库更新后用户看到旧答案
  • ❌ 不做监控,不知道瓶颈在哪个环节

⑤ 回答策略

开场句:「高并发优化分召回和生成两阶段,我从技术和架构两个层面说。」

结构:召回优化(索引/缓存/并行)→ 生成优化(模型/流式/Prompt)→ 架构优化(异步/降级/负载均衡)

⑥ 追问预判

  • 「如何监控延迟?」→ 分段监控(召回/Rerank/生成),用 P95/P99 指标
  • 「成本和延迟如何权衡?」→ 根据业务场景,ToC 优先延迟,ToB 可接受稍高延迟

Q21:让 Agent 调用搜索引擎,如何避免无关结果影响回答?

  • 难度:⭐⭐ | 公司:字节(真题)
查看完整解析

① 押题依据

字节真题,考察对 Agent 工具调用鲁棒性的理解。搜索引擎返回结果质量不可控,需要过滤和验证。

② 标准答案

问题根源: 搜索引擎(Google/Bing)返回的结果可能包含:

  • 广告、SEO 垃圾内容
  • 与 Query 弱相关的结果
  • 过时信息

如果 Agent 直接使用这些结果,会生成低质量答案。

四层过滤方案:

层1:搜索前优化(Query 改写)

  • 用 LLM 将用户问题改写为更精准的搜索词
  • 例:「RAG 咋样」→ 「RAG 检索增强生成 优缺点」
  • 添加时间限制:「site:arxiv.org after:2024」

层2:搜索后过滤(结果筛选)

2.1 基于规则过滤

python
# 过滤广告、低质量网站
blacklist = ["广告", "SEO", "垃圾站"]
filtered = [r for r in results if not any(b in r.url for b in blacklist)]

2.2 相关性评分

  • 用 Rerank 模型对搜索结果重新打分
  • 过滤相关性分数 <0.5 的结果
  • 只保留 Top-3 ~ Top-5

2.3 内容质量检查

  • 检查结果长度(过短可能是导航页)
  • 检查是否包含关键词
  • 检查来源权威性(如 .edu/.gov 优先)

层3:生成时验证(Prompt 工程)

在 Prompt 中明确指示:

以下是搜索结果,可能包含无关内容:
{search_results}

要求:
1. 只使用与问题直接相关的信息
2. 如果所有结果都不相关,回答"未找到相关信息"
3. 标注信息来源

层4:生成后检查(答案验证)

4.1 引用验证

  • 检查答案中的事实是否真的出现在搜索结果中
  • 用 LLM 做 Faithfulness 检查

4.2 置信度判断

  • 让 LLM 输出置信度分数(0-1)
  • 低置信度时提示用户"答案可能不准确"

实际工程实践:

场景策略
事实查询优先使用权威来源(Wikipedia/官网)
时效性查询添加时间过滤(after:2024)
专业领域限定搜索范围(site:arxiv.org)

③ 前沿加分点

  • 多源验证:同时搜索多个引擎,交叉验证结果
  • Self-RAG:Agent 自主判断搜索结果质量,决定是否使用
  • 用户反馈闭环:收集用户对答案的评价,优化过滤策略

④ 常见踩坑

  • ❌ 直接使用搜索引擎的 Top-1 结果,不做任何过滤
  • ❌ 过滤规则过严,导致有用信息也被过滤
  • ❌ 不标注信息来源,用户无法验证答案

⑤ 回答策略

开场句:「搜索结果质量不可控,我说四层过滤方案。」

结构:问题根源 → 四层过滤(搜索前/搜索后/生成时/生成后)→ 实际工程实践

⑥ 追问预判

  • 「如何判断来源权威性?」→ 域名白名单(.edu/.gov/知名媒体)+ PageRank
  • 「过滤后没有结果怎么办?」→ 放宽过滤条件,或明确告知用户"未找到相关信息"

Q22:传统 RAG 是"先检索后生成",你了解自适应检索等更复杂的 RAG 范式吗?

  • 难度:⭐⭐⭐⭐
查看完整解析

① 押题依据

前沿题,考察对 RAG 演进方向的理解。2024-2025 年 RAG 从 Naive RAG 演进到 Agentic RAG,面试官考察你是否跟进前沿。

② 标准答案

RAG 范式演进:

第一代:Naive RAG(朴素 RAG)

用户提问 → 检索 → 生成答案
  • 特点:固定流程,一次检索
  • 问题:
    • 不需要检索的问题也检索(浪费资源)
    • 检索不到时无法补救
    • 无法处理多跳推理

第二代:Self-RAG(自适应 RAG)

核心思想:让 LLM 自主决定是否检索、何时检索。

工作流程:

  1. 判断是否需要检索

    • LLM 评估:这个问题需要外部知识吗?
    • 不需要:直接生成答案(如"1+1=?")
    • 需要:触发检索
  2. 评估检索结果质量

    • LLM 判断:检索到的文档相关吗?
    • 相关:使用
    • 不相关:触发网络搜索或拒答
  3. 验证生成答案

    • LLM 自我检查:答案是否基于检索内容?
    • 是:输出答案
    • 否:重新生成

优势:减少无效检索,提升准确率

第三代:CRAG(Corrective RAG)

核心思想:检索后纠错,质量低时补充检索。

工作流程:

检索 → 质量评估 → 
  - 高质量:直接生成
  - 中等质量:改写 Query 重新检索
  - 低质量:触发网络搜索

第四代:Agentic RAG(Agent 化 RAG)

核心思想:RAG 作为 Agent 的一个工具,Agent 自主编排检索策略。

能力:

  • 多轮检索:根据第一轮结果,决定是否继续检索
  • 检索策略选择:向量检索 vs 关键词检索 vs 网络搜索
  • 多源融合:同时检索知识库、数据库、API

示例:

用户:「对比 RAG 和 Fine-tuning」
Agent 规划:
  1. 检索 RAG 相关文档
  2. 检索 Fine-tuning 相关文档
  3. 综合生成对比答案

第五代:GraphRAG(图谱 RAG)

核心思想:用知识图谱替代向量检索,处理多跳推理。

适用场景:

  • 多跳推理:「张三的领导的部门预算」
  • 实体关系密集:组织架构、供应链

各范式对比:

范式检索次数自主性复杂度适用场景
Naive RAG1 次固定简单问答
Self-RAG0-N 次通用场景
CRAG1-N 次质量敏感
Agentic RAGN 次复杂任务
GraphRAG图谱遍历多跳推理

③ 前沿加分点

  • 混合范式:根据问题类型动态选择范式(简单问题用 Naive,复杂问题用 Agentic)
  • 强化学习优化:用 RL 训练 Agent 的检索策略
  • 多模态 RAG:检索文本 + 图片 + 表格,统一生成答案

④ 常见踩坑

  • ❌ 盲目追求复杂范式,忽略实际需求(大部分场景 Naive RAG 足够)
  • ❌ Self-RAG 判断不准确,导致该检索时不检索
  • ❌ Agentic RAG 成本高(多次 LLM 调用),不做成本控制

⑤ 回答策略

开场句:「RAG 从 Naive 演进到 Agentic,核心是让模型自主决定检索策略。」

结构:五代范式(Naive/Self/CRAG/Agentic/Graph)→ 对比表 → 实际选型建议

⑥ 追问预判

  • 「你们项目用的哪种范式?」→ 说出范式和选择理由
  • 「Self-RAG 如何判断是否需要检索?」→ 用 LLM 做二分类,或训练专门的判断模型


专为 AI 产品经理打造