面灵AI→

27 届学院本实习转正面试:RAG 与 Agent 十五问

轮次
一面
时间
2026-10
来源
牛客网

《面试题目》

  1. 你现在方便打开摄像头吗?
  2. 你现在是在外面吗?方便面试吗?
  3. 你还是在校生吗?还是已经可以开始实习了?
  4. 请先做一个自我介绍。
  5. 为什么需要使用 RAG?
  6. 可以介绍一下 RAG 的完整流程吗?
  7. 你在项目中也用到了 RAG,之前的文档切分是怎么做的?
  8. 你之前文档切分的大小是多少?
  9. 假设检索出来的内容答非所问,你会如何排查?
  10. 你之前做 RAG 的时候,有用到混合检索吗?
  11. 为什么混合检索会比单独使用向量检索效果更好?
  12. 你知道 Function Calling 吗?什么是 Function Calling?
  13. 在你接触过的 Agent 中,比较常见的问题有哪些?
  14. LangChain 和 LangGraph 有什么区别?
  15. 你觉得 LangGraph 有哪些功能是 LangChain 无法替代的?
  16. 你目前大概在哪个地方?学校在哪里?
  17. 我们公司在浙江,你对此了解吗?
  18. 你目前找的是长期实习还是短期实习?
  19. 如果通过面试,最快多久可以到岗?
  20. 薪资和工作时间人事之前沟通过吗?看过岗位详情了吗?
  21. 如果面试通过,明天或后天你有时间参加二面吗?

《参考解析》

RAG 存在的理由是「模型不知道你的私有数据,且微调成本高、更新慢」。它把外部知识检索出来塞进上下文,好处是可更新、可引用、可审计。完整流程是:文档解析 → 切分 → 向量化 → 建索引 → 查询改写 → 召回(向量 + 关键词)→ 重排 → 组装上下文 → 生成 → 引用与评估。

切分大小没有标准答案,要看文档类型和问题粒度。常见做法是按标题层级切、单块 300~800 字、块间留 10%~20% 重叠;太小丢上下文,太大稀释相关性。代码和表格要单独处理,别按字数硬切。

「答非所问」的排查顺序:先看召回有没有命中正确片段(打日志看 top-k),再看片段是否被截断或切碎,然后看重排是否把正确片段排下去,最后看生成是否忽略了上下文。对应手段是查询改写、混合检索、调 chunk 大小、加重排。

混合检索 = 向量(语义)+ 关键词(精确匹配)。向量擅长同义表达,但对专有名词、编号、缩写不敏感;BM25 这类关键词检索正好互补。两路召回后用 RRF 或加权融合,再交给重排模型,通常比单路稳。

LangChain 是「组件库」,LangGraph 是「状态机/图编排」。前者提供模型、工具、检索器、链式组合;后者把流程建模成节点和边,支持循环、条件分支、中断恢复和人工介入,适合多轮 Agent。LangChain 用链也能拼出循环,但状态管理和可恢复性要自己写。

Function Calling 是模型输出结构化调用请求的机制:给模型工具名、描述和参数 schema,模型决定调哪个工具、给什么参数,Runtime 执行后把结果回灌。Agent 常见问题是工具选错、参数幻觉、循环不终止、上下文超长和失败不可恢复,靠 schema 校验、最大轮次、超时与兜底解决。