米哈游大模型面经:13 道 Agent/RAG 设计题,没做过 Agent 直接露馅
这场面试的特点,一句话概括:没有一道题是背出来的,全在问你对 Agent 架构到底理解到哪一层。
面试官从头到尾只做一件事——顺着 Agent 和 RAG 往架构深处钻。你讲 RAG,他就问怎么衡量回答质量;你讲记忆,他就问长期记忆怎么写回、怎么冲突消解;最后还丢一道手撕让你现场写向量检索。
它真正在考的,不是知识点密度,是技术判断的连贯性:你能不能从"为什么这么设计"一直讲到"代价是什么、兜底怎么写"。项目里没真做过 Agent 的人,到第三题就会开始绕,越往后越露馅。

13 道题按这个逻辑分成 6 块:
• 正确性与幻觉治理起点:Q1 大模型的错误与幻觉规避手段
• Agent 的边界与自我反思:Q2 Agent vs 工作流、Q3 RAG 原理与质量、Q4 为什么用 LLM 做反思
• 长期记忆与游戏落地:Q5 长期记忆策略、Q6 Agent 在游戏 AI 中的作用
• 工程框架与多智能体:Q7 LangGraph 落地、Q8 多智能体死锁
• 检索增强三连:Q9 HyDE/Query Rewrite、Q10 长短记忆配合检索、Q11 上下文压缩
• 体系收尾与手撕:Q12 幻觉缓解四手段对比、Q13 向量检索手撕
Q1 与 Q12 都讲幻觉,一个在开头铺工程手段、一个在收尾做体系对比,我按原题号排,没有合并。
01 正确性与幻觉治理起点
Q1:大模型产生错误或幻觉时,工程/算法层面有哪些规避手段?(RAG+事实校验+不确定性表达)
结论先行: 幻觉不是单点问题,要分"生成前锚定、生成中约束、生成后校验、不确定时坦白"四层去治。
① 生成前锚定 —— RAG。 把回答绑到检索到的证据,让模型"有出处才说话",从源头减少参数化记忆瞎编。
② 生成中约束 —— 约束解码与工具兜底。 强制引用、禁止未出现实体(grammar-constrained decoding)、数值走工具计算,把"能胡说"的输出空间直接堵死。
③ 生成后校验 —— 事实校验。 用 critic 模型或 NLI 把每个 claim 和证据比对一致性,要求附 citation;不一致就打回重生成或显式标注存疑。
④ 不确定时坦白 —— 不确定性表达。 输出做置信度/概率校准,模型该说"我不确定"时就说,并引导用户确认,而不是硬编一个答案。
⑤ 闭环。 在线监控 hallucination rate,bad case 回流到检索与训练,让系统持续收敛。
面试官想听的:幻觉治理是分层防线不是单招,RAG 打底、校验兜底、坦白收口才是完整闭环。
02 Agent 的边界与自我反思
Q2:Agent 和传统工作流(Workflow)的区别是什么?
结论先行: Workflow 是写死的 DAG,Agent 是 LLM 当运行时控制器——核心差别在"控制流谁来决定"。
① 控制流。 Workflow 的节点和边预先定义,顺序确定、可枚举;Agent 由 LLM 在运行时动态决定下一步调哪个工具、走哪条分支。
② 容错。 Workflow 失败按固定策略重试;Agent 能反思、改策略、换路径,对开放任务更鲁棒。
③ 可解释与成本。 Workflow 可解释、好测试、便宜、易复现;Agent 灵活但贵、难复现、容易跑偏,需要护栏。
④ 适用边界。 稳定、可枚举的流程用 Workflow;开放、非结构化、open-ended 的任务用 Agent。放到游戏里,剧情/关卡生成、NPC 自主行为规则覆盖不全,Agent 更合适。
面试官想听的:别二选一,真实系统多是"Workflow 兜主干、Agent 处理长尾例外"的混合体。
Q3:RAG 技术核心原理?如何衡量 RAG 回答质量?(faithfulness / answer relevancy)
结论先行: RAG 的本质是"检索增强生成"——把参数化记忆换成可溯源的外部证据;质量要分"检索"和"生成"两层分别度量。
① 核心原理。 离线建索引(文档切片 + embedding 入库)→ 在线检索(query 向量化后取 top-k)→ 增强生成(把证据拼进 prompt 再生成)。好处是回答可溯源、易更新、少瞎编。
② Faithfulness(忠实度)。 衡量回答是否被检索到的证据支持。做法是用 NLI 或 critic 模型逐条判定 claim 与 context 的矛盾率,矛盾越少越忠实。
③ Answer Relevancy(相关性)。 衡量回答是否切中问题。可用"问题-回答"语义相似度,或 LLM 按 rubric 打分。
④ 检索层指标。 Context Relevancy / Precision / Recall:召回的 chunk 是否相关、是否覆盖问题所需。端到端可用 Ragas 这类框架跑全套。
⑤ 工程下限。 chunking 策略、rerank、hybrid search(向量 + 关键词)直接决定质量下限,比模型选型更影响体感。
面试官想听的:faithfulness 看"有没有瞎编",answer relevancy 看"有没有答到点",二者一张一弛才说明 RAG 真的 work。
Q4:为什么用大模型做反思(Reflection)模块,而不是直接用规则实现?
结论先行: 规则擅长"硬校验",反思要的是对"好不好"的语义级评判,规则根本覆盖不了开放任务。
① 标准在变。 开放任务的"好"没有固定判定式,正确性标准随上下文动态变化,写不出穷举的规则。
② LLM 能做语义评估。 Reflection 能读懂自由文本输出,发现逻辑漏洞、遗漏、前后不一致,并给出可执行的改进建议,这是规则做不到的。
③ 规则的边界。 格式、数值范围、必填字段这类确定性约束用规则;模糊的质量判断用 LLM。
④ 成本与混合。 LLM 反思有延迟和成本,所以常见做法是"规则做硬校验 + LLM 做软反思",分层兜底。
⑤ 游戏语境。 关卡或剧情"好不好玩"无法用规则定义,只能靠 LLM 评估,这也正是米哈游这类岗位看重反思模块的原因。
面试官想听的:反思模块不是炫技,是给没有标准答案的生成任务一个"会挑刺的评审",规则干不了这活。
03 长期记忆与游戏落地
Q5:如何设计 Agent 长期记忆的写回、衰减、冲突消解策略?
结论先行: 长期记忆要像"带时间戳和可信度的知识库"来管,写回、衰减、冲突是三个独立子系统。
① 写回。 会话或事件结束后,抽取 salient facts(entity-attribute-value,或把 episodic 对话蒸馏成 semantic 事实),去重后写入向量库;每条带 metadata:来源、时间戳、置信度、访问计数。触发上用"定时批量 + 关键事件即时写回",避免每次对话都写。
② 衰减。 基于时间衰减 + 访问频率(类似 TF-IDF / PageRank 思路),长期未访问或过期的信息降权;可上 TTL 或遗忘曲线。
③ 冲突消解。 同实体多源冲突时,按来源可信度 / 时间戳 / 置信度做加权投票;保留历史版本可追溯,并显式标记 uncertain,而不是静默覆盖。
面试官想听的:记忆不是存进去就完事,真正难的是"什么时候忘、冲突了听谁的",这两点答不出等于没设计。
Q6:Agent 在游戏AI产品开发中的作用?举例可能的应用模式。
结论先行: Agent 在游戏 AI 里的价值,是把"规则写不完的交互与内容"交给能自主决策的模型来补。
① NPC 动态对话。 基于角色设定和剧情记忆的对话 Agent,记住玩家关系与历史选择,对话不再是预设树。
② 自动化测试。 Agent 操控角色探索关卡、触发边界条件、发现 bug 并生成测试报告,比脚本覆盖率更高。
③ 内容生成与自检。 关卡、剧情、任务文案的辅助生成,并让 Agent 自己做质量自检(呼应 Q4 的反思模块)。
④ 玩家支持。 智能客服、攻略推荐、动态引导,按玩家进度给个性化提示。
⑤ 行为 AI。 LLM 驱动的 NPC 决策与情绪表达,让非玩家角色行为更自然。
举例:一个长期记忆 Agent 记住玩家在主线里的关键选择,后续剧情分支和 NPC 态度随记忆变化——这就是 Q5 记忆设计的直接落地。
面试官想听的:游戏 Agent 的卖点不是"更聪明的 NPC",是"能跨会话记住玩家、并据此改变体验"的长期陪伴感。
04 工程框架与多智能体
Q7:结合 LangGraph,Node 与 Edge 对应业务流程什么角色?长短期记忆落地差异?工具靠名称还是功能描述调用?
结论先行: LangGraph 里 Node 是"步骤"、Edge 是"流转",记忆分 checkpointer 和 store 两层,工具靠"功能描述"而非名字被选中。
① Node = 计算/动作单元。 LLM call、tool call、条件判断都是 Node,对应业务流程里的一个步骤。
② Edge = 控制流。 普通边顺序流转,条件边实现分支与循环——所谓的"反思循环"就是条件边把控制流拉回反思 Node。
③ 长短期记忆落地差异。 短期记忆用 checkpointer / state,thread 级、对话内、常驻 Redis 或内存、配滑动窗口,低延迟;长期记忆用 store,跨 session 持久化、落向量库,按需检索注入。
④ 工具调用靠什么。 靠功能描述(description)+ 参数 schema,LLM 按语义选择;名称只是个标识,description 写得好不好直接决定调用准确率。
面试官想听的:LangGraph 不神秘,Node/Edge 就是"步骤+流转",真正要分清的是 thread 内的短期 state 和跨会话的长期 store。
Q8:多智能体协作如何避免死锁?引入超时+优先级调度做兜底?
结论先行: 死锁来自"相互等待 + 无终止条件",超时和优先级调度是必要的兜底,但不是全部。
① 死锁来源。 循环依赖、相互等待、没有最大步数上限,三者任一都会卡死。
② 超时机制。 每轮 / 每步设 timeout,超时即中断该智能体,防止无限阻塞。
③ 最大轮次。 全局设最大轮次上限,到顶强制收敛,避免无限循环。
④ 优先级调度。 用 supervisor / manager 按优先级解决资源争用和决策分歧,优先级高的先拿发言权。
⑤ 协调模式。 黑板(共享状态)模式 + 明确的交接协议,让消息流可追溯;再配超时降级到单 Agent 或规则兜底。
⑥ 可观测。 记录消息流、检测环,死锁前就能预警。
面试官想听的:超时和优先级是兜底不是解法,真正防死锁的是"无环的依赖设计 + 明确的仲裁者",兜底只是保险丝。
05 检索增强三连
Q9:RAG 检索中 HyDE / Query Rewrite 怎么提升召回率?
结论先行: 二者都在解决"query 和文档用词不在同一分布"的问题,一个改 query 的语义表征,一个直接重写 query。
① HyDE(假设性文档嵌入)。 先让 LLM 生成一段"假设性答案文档",再对这段文档做 embedding 去检索。它弥合了短 query 与长文档之间的词面差异,让检索走语义而不是字面。
② Query Rewrite(查询改写)。 把口语化、模糊的 query 改写成规范、含关键术语的检索式;multi-query 生成多个子问题并行召回,step-back 则抽象到更高层的问题。
③ 本质。 让 query 的表征更贴近 corpus 的分布,从而召回更相关的 chunk。
面试官想听的:HyDE 和 Rewrite 是同一件事的两面——都为了让"问题侧"和"文档侧"说同一种语言。
Q10:Agent 短期记忆(滑动窗口/Redis)与长期记忆(向量库)如何配合检索?
结论先行: 短期保连贯、长期补知识,每轮把"长期检索片段 + 短期窗口"拼成 working memory,写回时再把短期精华蒸馏进长期。
① 短期记忆。 近期对话和状态走滑动窗口或 Redis 存 thread state,保证上下文连贯、低延迟。
② 长期记忆。 向量库存跨会话的知识和用户画像,按需语义检索注入。
③ 配合方式。 每轮先检索长期记忆的相关片段,再拼接短期窗口,构成当轮 working memory;重要信息在写回时蒸馏进长期库(呼应 Q5)。
④ 检索策略差异。 短期走精确 / 最近访问,长期走语义相似,两者互补。
面试官想听的:配合的关键在"每轮怎么拼、何时写回",不是各存各的——拼错一次上下文就串味了。
Q11:上下文压缩有哪些方法?摘要/剪枝/向量检索替代各适用什么?
结论先行: 三种方法对应三种"上下文太长的病因",按病因选手段。
① 摘要。 把历史对话压缩成摘要再拼接,适合长程多轮对话,保留语义但丢细节。
② 剪枝。 按重要性 / 相关性删除或截断低价值 token——只留最近 N 轮,或让 LLM 判哪些 turn 该留。适合冗余明确的场景。
③ 向量检索替代。 用检索替代完整上下文(RAG 式),只把相关片段拉进来,适合知识密集、上下文超大的情况。
④ 混合。 实际常用分层记忆:摘要保骨架 + 检索补细节,兼顾连贯与容量。
面试官想听的:压缩不是越短越好,是"该丢的丢、该留的留",摘要管连贯、检索管容量,别只会上截断。
06 体系收尾与手撕
Q12:大模型幻觉缓解:RAG / 约束解码 / 自我一致性 / 事实校验?
结论先行: 四者不是互斥的招式,是互补的四道防线,组合使用才稳。
① RAG。 锚定证据,治本,但质量上限受检索质量约束。
② 约束解码(constrained decoding)。 限制输出空间——强制引用、禁止未出现实体、grammar-constrained,硬保证不臆造格式和实体。
③ 自我一致性(self-consistency)。 多采样投票,减少随机性错误,但对事实性幻觉作用有限(投票投不出真知识)。
④ 事实校验。 生成后让 critic 验证 claim 与证据一致性,闭环纠偏。
⑤ 组合建议。 RAG 打底 + 约束解码保格式 + 事实校验兜底,自我一致性作为可选增强。
面试官想听的:单拎任一道防线都不够,面试想听的是你清楚"每道防线的盲区在哪、怎么互补"。
Q13:手撕:实现一个简单的向量检索(余弦相似度 + top-k 返回)。
题意确认: 输入一个 query 向量和若干 doc 向量,返回与 query 最相似的 k 个 doc 的索引和相似度(降序)。要兼容"是否已归一化",维度必须一致。
import numpy as np
def cosine_top_k(query, docs, k=5):
# query: 1-D array; docs: 2-D array, shape (n\_docs, dim)
q = query / (np.linalg.norm(query) + 1e-9)
d = docs / (np.linalg.norm(docs, axis=1, keepdims=True) + 1e-9)
sims = d @ q # 已归一化,点积即余弦相似度
idx = np.argsort(sims)[::-1][:k] # 降序取前 k
return [(int(i), float(sims[i])) for i in idx]
易错点:未归一化直接点积会偏向量大的向量;分母加 1e-9 防零向量。
① 复杂度。 单次检索 O(n·d),n 是文档数、d 是维度;海量文档要上 ANN(如 HNSW、IVF)。
② 被追问时。 说清余弦与内积的区别、为什么要归一化、怎么矩阵化支持批量 query,以及生产里用 FAISS / Milvus 做近邻检索。
面试官想听的:手撕考的不是 NumPy API,是你知不知道"先归一化再点积"这个坑,以及它和生产级 ANN 检索的关系。
07 收尾:这场面试到底在考什么
把 13 题串成一条线:从"怎么不让模型瞎说"(Q1 / Q12),到"Agent 到底是什么、怎么落地"(Q2 / Q3 / Q4 / Q7),再到"记忆怎么管"(Q5 / Q10 / Q11),“多智能体怎么不卡死”(Q8),“检索怎么更准”(Q9),最后"你真能写代码吗"(Q13)。
米哈游游戏 AI 岗要的,是能把 Agent 架构讲出一条自洽技术判断线的人,不是背术语的人。准备方向也很具体:拿自己项目里真实的 Agent / RAG 经历,按"背景 → 约束 → 备选方案 → 为什么选这个 → 代价是什么"五步讲,每一题都能接得住追问。
学AI大模型的正确顺序,千万不要搞错了
🤔2026年AI风口已来!各行各业的AI渗透肉眼可见,超多公司要么转型做AI相关产品,要么高薪挖AI技术人才,机遇直接摆在眼前!
有往AI方向发展,或者本身有后端编程基础的朋友,直接冲AI大模型应用开发转岗超合适!
就算暂时不打算转岗,了解大模型、RAG、Prompt、Agent这些热门概念,能上手做简单项目,也绝对是求职加分王🔋

📝给大家整理了超全最新的AI大模型应用开发学习清单和资料,手把手帮你快速入门!👇👇
学习路线:
✅大模型基础认知—大模型核心原理、发展历程、主流模型(GPT、文心一言等)特点解析
✅核心技术模块—RAG检索增强生成、Prompt工程实战、Agent智能体开发逻辑
✅开发基础能力—Python进阶、API接口调用、大模型开发框架(LangChain等)实操
✅应用场景开发—智能问答系统、企业知识库、AIGC内容生成工具、行业定制化大模型应用
✅项目落地流程—需求拆解、技术选型、模型调优、测试上线、运维迭代
✅面试求职冲刺—岗位JD解析、简历AI项目包装、高频面试题汇总、模拟面经
以上6大模块,看似清晰好上手,实则每个部分都有扎实的核心内容需要吃透!
我把大模型的学习全流程已经整理📚好了!抓住AI时代风口,轻松解锁职业新可能,希望大家都能把握机遇,实现薪资/职业跃迁~
这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】

更多推荐


所有评论(0)