27 届学院本实习转正面试:RAG 与 Agent 十五问
- 轮次
- 一面
- 时间
- 2026-10
- 来源
- 牛客网
《面试题目》
- 你现在方便打开摄像头吗?
- 你现在是在外面吗?方便面试吗?
- 你还是在校生吗?还是已经可以开始实习了?
- 请先做一个自我介绍。
- 为什么需要使用 RAG?
- 可以介绍一下 RAG 的完整流程吗?
- 你在项目中也用到了 RAG,之前的文档切分是怎么做的?
- 你之前文档切分的大小是多少?
- 假设检索出来的内容答非所问,你会如何排查?
- 你之前做 RAG 的时候,有用到混合检索吗?
- 为什么混合检索会比单独使用向量检索效果更好?
- 你知道 Function Calling 吗?什么是 Function Calling?
- 在你接触过的 Agent 中,比较常见的问题有哪些?
- LangChain 和 LangGraph 有什么区别?
- 你觉得 LangGraph 有哪些功能是 LangChain 无法替代的?
- 你目前大概在哪个地方?学校在哪里?
- 我们公司在浙江,你对此了解吗?
- 你目前找的是长期实习还是短期实习?
- 如果通过面试,最快多久可以到岗?
- 薪资和工作时间人事之前沟通过吗?看过岗位详情了吗?
- 如果面试通过,明天或后天你有时间参加二面吗?
《参考解析》
RAG 存在的理由是「模型不知道你的私有数据,且微调成本高、更新慢」。它把外部知识检索出来塞进上下文,好处是可更新、可引用、可审计。完整流程是:文档解析 → 切分 → 向量化 → 建索引 → 查询改写 → 召回(向量 + 关键词)→ 重排 → 组装上下文 → 生成 → 引用与评估。
切分大小没有标准答案,要看文档类型和问题粒度。常见做法是按标题层级切、单块 300~800 字、块间留 10%~20% 重叠;太小丢上下文,太大稀释相关性。代码和表格要单独处理,别按字数硬切。
「答非所问」的排查顺序:先看召回有没有命中正确片段(打日志看 top-k),再看片段是否被截断或切碎,然后看重排是否把正确片段排下去,最后看生成是否忽略了上下文。对应手段是查询改写、混合检索、调 chunk 大小、加重排。
混合检索 = 向量(语义)+ 关键词(精确匹配)。向量擅长同义表达,但对专有名词、编号、缩写不敏感;BM25 这类关键词检索正好互补。两路召回后用 RRF 或加权融合,再交给重排模型,通常比单路稳。
LangChain 是「组件库」,LangGraph 是「状态机/图编排」。前者提供模型、工具、检索器、链式组合;后者把流程建模成节点和边,支持循环、条件分支、中断恢复和人工介入,适合多轮 Agent。LangChain 用链也能拼出循环,但状态管理和可恢复性要自己写。
Function Calling 是模型输出结构化调用请求的机制:给模型工具名、描述和参数 schema,模型决定调哪个工具、给什么参数,Runtime 执行后把结果回灌。Agent 常见问题是工具选错、参数幻觉、循环不终止、上下文超长和失败不可恢复,靠 schema 校验、最大轮次、超时与兜底解决。