AI Agent 面试全攻略:RAG技术完整指南,分块、向量库、重排序与24+高频面试题
【免费下载链接】ai-agent-interview-guideAI Agent 面试全攻略:从零到Offer,包含200+面试题、企业级项目(Python/Java/Go)、简历模板、STAR面试稿、哆啦A梦漫画图解项目地址: https://gitcode.com/gh_mirrors/ai/ai-agent-interview-guide
准备AI Agent 面试时,RAG(检索增强生成)是技术面出场率最高的考点。本文面向新手,用大白话讲透 RAG 技术全链路:文档分块策略、向量数据库选型、混合检索与重排序,并整理 24+ 道高频 RAG 面试题速查,帮你从"背八股"升级到"能讲清设计"。
📌 为什么 RAG 是 AI Agent 面试必考核心?
大模型有两个天然短板:知识有截止日期(新知识不知道)、会编造(幻觉)。RAG 的思路很简单——先查资料、再回答:把企业文档切成小块建好索引,用户提问时先检索出最相关的几段,塞进 Prompt 让大模型"照着资料答"。
| 方案 | 知识更新 | 成本 | 适合场景 |
|---|---|---|---|
| RAG | 更新索引即可,快 | 低 | 事实问答、客服知识库 |
| 微调 | 需重新训练,慢 | 高 | 改输出风格、格式、口吻 |
| 长上下文 | 仍需塞入上下文 | 高、延迟高 | 单篇超长文档全局推理 |
💡 面试高频对比题:"什么时候优先微调而不是 RAG?"答:目标是行为与格式(输出 JSON、领域口吻),且训练数据稳定可标注时;事实类问题永远优先 RAG。
🔍 RAG 完整流程:从离线建库到在线问答
整个 RAG 系统分两条线:
- 离线流水线:原始文件(PDF/Word/Markdown)→ 解析清洗 →分块(Chunking)→ Embedding 向量化 → 写入向量库(可再加 BM25 倒排索引)
- 在线问答:用户提问 →(可选)查询改写 → 检索 Top-K →(可选)重排序→ 拼进 Prompt → 大模型生成带引用的答案
项目里的漫画图解把这两步画得非常直白——哆啦A梦在图书馆里"检索→增强→生成":
一句话口述版(面试直接背): "离线负责把非结构化知识变成可检索索引;在线负责理解意图、检索、融合、约束生成,并控制延迟成本。"
✂️ 文档分块:决定检索质量的第一道关
分块(Chunking)就是把长文档切成"一块块能被检索、又不缺上下文"的文本。主流策略:
| 策略 | 一句话理解 | 注意点 |
|---|---|---|
| 固定长度 | 每 512 token 一刀切 | 简单,但容易把句子切半 |
| 递归字符分割 | 优先在段落→句子→空格边界断开 | 生产默认基线,推荐 |
| 语义分块 | 相似度骤降处切,贴着话题边界 | 效果好但计算贵 |
| 按结构分块 | 按 Markdown 标题/HTML 小节切 | 块内主题一致,适合文档类 |
| 父子块 | 小块用于检索、大块用于喂给 LLM | 兼顾精度与上下文完整性 |
两个黄金参数(面试官最爱追问):
chunk_size:覆盖一个"完整命题"(一条规定、一个步骤),太小缺主语、太大混噪声chunk_overlap:一般为 size 的10%–20%,防止关键句被切在两块边界
项目中的分块实现支持固定/递归/段落三种策略,默认 512 token + 64 重叠:chunker.py,解析与整条 ETL 流水线见 parser.py 和 pipeline.py。
❓高频题:分块太大或太小分别会怎样?太小 → 语义不完整,片段缺主语或条件;太大 → 混入无关内容、embedding 语义变模糊、费用上升。答完补一句"我们用评估集扫网格调参"会更加分。
📦 向量数据库选型:FAISS、Milvus、Qdrant 怎么挑?
向量数据库解决的核心问题是:上百万条高维向量,怎么毫秒级找出"最像的 Top-K"?答案是ANN(近似最近邻)算法——用一点点精度换数量级速度。
| 产品 | 特点 | 适用场景 |
|---|---|---|
| FAISS | Meta 出品的算法库,非完整数据库 | 原型、离线实验 |
| Milvus | 云原生、分布式、可扩展百亿级 | 大规模生产(本项目采用) |
| Chroma | 轻量、易上手 | 小项目、Demo |
| Qdrant | Rust 实现、元数据过滤强 | 自托管 + 复杂过滤 |
三个必会的 ANN 算法名词:
- HNSW:图索引,延迟低、召回高,但吃内存(调大
efSearch= 召回升、延迟升) - IVF:先聚类分桶再搜部分桶,适合数据量大、内存紧
- PQ:向量压缩省内存,精度略降,常与 IVF 组合
一句话区别题(出现率极高):
❓FAISS 和 Milvus 本质区别?FAISS 是ANN 算法库,存储、服务、容灾要自己搭;Milvus 是向量数据库系统,带分布式存储和运维能力。
项目里 Milvus 封装在 milvus_client.py,Java 版对应 MilvusService.java。
🎯 混合检索与重排序:效果提升的两个大杀器
单路向量检索的短板:专有名词、产品型号、工单编号等"精确词"经常漏检。业界标配组合拳:
- 混合检索:向量(抓语义)+ BM25(抓字面)两路召回,用RRF(倒数排名融合)合并——只比排名不比分数,天然规避两路分数尺度不一致的问题,经典参数
k=60 - Cross-Encoder 重排序:向量检索是"独立编码"求快,Cross-Encoder 把 query 和文档拼一起深度交互打分,精度更高但慢,所以放在召回 Top-K(几十到几百条)之后,精排出 Top 3–10
- MMR 去冗余:防止 Top-K 里塞满几乎重复的段落,
lambda越大越偏相关、越小越偏多样
项目实现路径(Python 版):
- 多路检索 + RRF 融合:retriever.py
- Cross-Encoder 重排:reranker.py
- 带引用标注的答案生成:generator.py
Go 版同模块见 internal/rag/(retriever.go / reranker.go / generator.go)。
❓高频题:Cross-Encoder 为什么不能直接替代向量索引?因为它必须对每个文档与 query 跑一次模型,复杂度扛不住百万级全库实时扫描,只能做小规模精排。
🚀 RAG 进阶四件套:答出"深度感"的加分项
面试官问"还了解哪些 RAG 变体"时,记住这四个名字:
| 变体 | 一句话解释 |
|---|---|
| GraphRAG | 抽实体关系建知识图谱,擅长多跳关系和全局总结类问题,成本高 |
| Agentic RAG | 由 Agent 动态决定"何时检索、检索什么、要不要再查",多步循环 |
| Self-RAG | 模型生成中插入反思 token,自我检查"证据够不够、要不要再查" |
| Corrective RAG | 检索质量不达标时自动改写查询/换数据源纠偏 |
❓加分追问:长上下文模型出来后 RAG 会消失吗?不会。私域数据规模与成本、检索聚焦证据、合规审计、增量更新,这些需求长上下文替代不了。
❓ 24+ 高频 RAG 面试题速查(含标准答案要点)
完整题库(含追问应对)在 03-RAG技术.md,这里列出最高频的 24 道速查:
| # | 面试题 | 答案要点 |
|---|---|---|
| 1 | 简述 RAG 两步流水线 | 离线:解析→分块→嵌入→建索引;在线:检索→重排→拼 Prompt→生成 |
| 2 | RAG 和微调如何配合 | 微调管格式与表达,RAG 管可更新事实,事实类优先 RAG |
| 3 | 为什么需要 chunk_overlap | 防关键句被切断在边界,代价是存储略增 |
| 4 | 递归分块的分隔符顺序为何重要 | 优先在更大语义单元(段落)断开,减少碎片化 |
| 5 | 语义分块一定更好吗 | 不一定,成本高、阈值敏感,用数据 A/B 测试 |
| 6 | 父子文档怎么存 | 子块带parent_id,命中子块→映射父块文本再生成 |
| 7 | Embedding 要归一化吗 | 用余弦/内积时建议归一化,相似度更稳定 |
| 8 | IndexFlatIP 与 HNSW 区别 | Flat 精确但慢;HNSW 近似快,适合大规模 |
| 9 | 混合检索权重怎么定 | 验证集网格搜索,或用 RRF 免调权 |
| 10 | RRF 为什么鲁棒 | 只用排名融合,规避分数尺度问题 |
| 11 | HyDE 风险如何缓解 | 重排 + 引用约束 + 拒答 + 多路对比 |
| 12 | BM25 中文要分词吗 | 要,常需分词或 n-gram,否则粒度不当 |
| 13 | Cross-Encoder 为何不能全库扫 | 复杂度太高,只能对 Top-K 小范围精排 |
| 14 | MMR 的 lambda 含义 | 调"相关性 vs 多样性",越大越偏相关 |
| 15 | GraphRAG 解决什么痛点 | 多跳关系与全局聚合类问题 |
| 16 | Agentic RAG 与一次检索差异 | 多步工具决策 + 再检索,更灵活但成本高 |
| 17 | Self-RAG 核心思想 | 生成中自评"要不要检索、证据是否充分" |
| 18 | Corrective RAG 触发条件 | 检索置信度低或证据矛盾时改查/换源 |
| 19 | RAGAS 评估的局限 | 依赖裁判模型,有偏好与盲区,需人工抽检 |
| 20 | 低成本在线评估怎么做 | 采样 + 用户点赞/纠错 + 点击引用等弱监督 |
| 21 | 索引频繁更新如何保一致 | 版本号 + 双写切换 + 灰度重建,读写分离 |
| 22 | 如何防 Prompt 注入污染 RAG | 文档清洗、权限隔离、引用限制、异常指令检测 |
| 23 | HNSW 和 IVF 怎么取舍 | 中等规模要低延迟选 HNSW;超大且内存紧张选 IVF(+PQ) |
| 24 | 只看答案对错够吗 | 不够,要分评检索质量与忠实度,定位瓶颈在哪 |
项目面试时,还可以结合 面试问答集 里的 100+ 道项目题,以及 STAR 面试稿 练习话术:
📚 学习路径与动手项目
建议按"看原理 → 跑项目 → 练话术"三步走:
- 吃透八股:RAG 技术模块(每个主题都有概念、原理、面试问答、追问应对)
- 跑通企业级项目(三选一):
- Python 版:FastAPI + Milvus + Redis,推荐首选
- Java 版:Spring Boot 3 + Spring AI
- Go 版:Gin + 自研框架
- 简历与话术:简历模板 + STAR 面试稿 + 学习路线图
💡最后的高分技巧:简历里准备一条可量化指标(如"Top-5 召回率提升 X%""P99 延迟下降 X%")和一次失败案例分析(到底是检索错了还是生成胡编),比背 24 道题更有说服力。
【免费下载链接】ai-agent-interview-guideAI Agent 面试全攻略:从零到Offer,包含200+面试题、企业级项目(Python/Java/Go)、简历模板、STAR面试稿、哆啦A梦漫画图解项目地址: https://gitcode.com/gh_mirrors/ai/ai-agent-interview-guide
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考