AI 一面:Agent 系统设计 19 问(逻辑结构与分条回答)
这一组题目看起来很散,实际上都在考同一件事:你是不是把 Agent 当成一个可上线、可治理、可迭代的系统在做。
这篇先不急着逐条背题,而是先把总的逻辑结构立住,再按 19 个问题给出可复述的分条答案。
先立住总结构:这 19 题到底在考什么
可以先把整套系统拆成 5 层:
- 入口决策层(意图识别与路由):识别 query 类型,决定走哪些数据源和工具;
- 证据构建层(解析、切分、检索、重排):把可用知识变成可检索证据;
- 推理编排层(rewrite、工具调用、答案合成):把子结果拼成可用回答;
- 质量控制层(review、可解释、badcase 回流):保证正确率和可追溯;
- 稳定性与成本层(并发、版本、存储):保证线上 SLA 和长期可持续。
一个稳妥的答题策略是:
- 每题都回到 “所在层 + 关键权衡 + 兜底策略”;
- 少讲“某个模型多强”,多讲“冲突时怎么收敛”。
心智模型:三条主线
你可以把这套系统记成三句话:
- 路由不是单点分类,而是规则、模型、证据三方协同。
- 检索不是一次召回,而是多阶段漏斗(召回→重排→校验)。
- 生成不是终点,终点是可解释、可回放、可优化。
后面的 19 题,基本都能落在这三句话上。
分条回答(1-10)
1)混合意图怎么识别和拆分?
结论先说:不要做单标签分类,要做多标签 + 子问题拆分。
- 用多标签分类识别“知识问答 + 业务查询”共存;
- 做 query decomposition,把条款问题和行为数据问题拆开;
- 执行时并行:文档链路走 RAG,业务链路走 SQL/API;
- 汇总时保留来源标签,避免把静态知识和实时数据混在一起。
2)规则、模型、检索怎么协同?冲突怎么办?
结论:优先级要硬编码,不靠临场判断。
- 一般用:硬规则(权限/合规) > 模型建议 > 检索证据校验;
- 模型给“概率判断”,规则给“边界条件”,检索给“事实支持”;
- 冲突时走保守路径(只输出可验证结论);
- 冲突样本进入回放集,定期更新规则和提示词。
3)embedding 不稳定导致误判是否走 RAG,怎么处理?
结论:不要把单一相似度阈值当开关。
- 用多信号门控:向量分、关键词命中、query 类型、历史命中率;
- 低置信 query 走双路策略(RAG 与非 RAG 并行);
- 用离线回放做阈值分桶校准;
- 模型升级前后做相似度分布监控,防止线上突变。
4)混合检索权重怎么定?固定还是动态?
结论:基线固定,线上动态。
- 先有一个默认权重(例如向量 0.6,关键词 0.4);
- 短 query、实体名密集问题提高关键词权重;
- 语义问句、长问题提高向量权重;
- 通过离线 NDCG/Recall 与在线反馈持续调参。
5)rerank 是性能瓶颈,怎么平衡效果与延迟?
结论:级联重排 + 超时降级。
- 粗召回拿 topK,再只对小候选集做重排;
- 轻模型先筛,重模型只打 topN;
- 做缓存、并行、超时截断;
- 高峰期可切换“快但略保守”的策略,优先守 SLA。
6)query rewrite 如何避免语义偏移?
结论:改写要受控,且必须可回退。
- 只允许消歧、补全实体、结构化约束,不改核心意图;
- 做语义一致性校验,不通过就回退原 query;
- 多候选改写先试召回,再选最优;
- 保留原 query 分支兜底,避免“改写后变差”不可恢复。
7)复杂 PDF 解析如何保证稳定?
结论:文本抽取不够,要版面感知。
- 多解析器协同(OCR、layout、table);
- 保留页码、坐标、层级结构等中间信息;
- 对跨页表格做表头继承与列对齐规则;
- 建复杂文档回归集,升级解析器必须回归通过。
8)chunk 切分如何平衡完整性和粒度?
结论:结构优先切分,长度规则兜底。
- 按标题、段落、表格等结构切,再按 token 长度裁剪;
- 设 overlap 保连续性,但控制重复噪声;
- 定义类内容可偏大块,事实参数类可偏小块;
- 用离线评测找最优区间,而不是凭经验拍脑袋。
9)metadata 的作用?标注错误会怎样?
结论:metadata 决定了检索“能不能找对范围”。
- 用于过滤(时间、部门、权限、产品线);
- 用于排序加权与结果解释;
- 标错会带来漏召回、误召回,严重时出现权限越界;
- 需要校验规则、抽检、异常扫描与修复链路。
10)增量更新时如何保证 embedding 一致性?
结论:升级要过渡,不要硬切。
- 尽量保持同版本 embedding;
- 升级时双索引并行(old/new)逐步切流;
- 监控相似度分布、topK 重合率、命中率变化;
- 达标后再做全量重嵌入收敛。
分条回答(11-19)
11)block 级版本管理里,部分内容变化怎么更新?
结论:局部重算,不做全量重建。
- 以 block 维护 lineage;
- 仅重算受影响 chunk,未变 chunk 复用;
- 新旧版本用 active/inactive 切换;
- 查询默认只看 active,审计场景可查历史版本。
12)逻辑删除下数据持续增长,怎么控成本?
结论:分层存储 + 压缩 + 生命周期策略。
- 热数据与历史归档分层;
- 向量压缩与去重存储;
- 按业务价值配置保留周期;
- 定期 compaction 清理无引用数据。
13)是否支持跨版本对比查询?
结论:支持,核心是“同对象双快照 + diff”。
- 先抽取对象、时间窗、对比维度;
- 分别检索两个版本快照;
- 生成增删改对比(旧值/新值/生效时间/证据);
- 对低置信差异加提示,避免误导。
14)多 Agent 数据不一致(财务 vs 风险)怎么处理?
结论:先定义数据主权,再做冲突仲裁。
- 定义 source-of-truth 与优先级;
- 统一 schema 与时间戳;
- 冲突不可自动消解时触发仲裁流程;
- 最终回答披露采用依据与冲突信息。
15)Agent 调外部 API 失败或返回不完整怎么办?
结论:可靠性策略前置,不在生成阶段补锅。
- 设置超时、重试、熔断、降级;
- 做返回完整性校验,缺字段就标注“部分可用”;
- 关键接口提供缓存或备用源;
- 全链路打 trace id 便于排障。
16)如何保证可解释性(不止引用来源)?
结论:可解释要覆盖“决策过程 + 证据结构”。
- 给出路由原因摘要(为什么走这条链路);
- 输出证据卡(来源、版本、时间、置信度);
- 关键结论给不确定性提示;
- 支持回放,能复现实验输入与中间决策。
17)Reviewer 出错会影响系统吗?怎么优化?
结论:会,Reviewer 是质量阀。
- 错判会导致误放行或误拦截;
- 需要评估准确率、漏判率、误杀率与延迟;
- 对高风险样本做双 Reviewer 或人工复核;
- 持续加入 hard case 训练 Reviewer。
18)badcase 回流做 SFT,如何保证数据质量?
结论:先做归因,再做训练。
- 将问题分成模型问题、检索问题、数据问题、工具问题;
- 标注集做一致性检查与去重;
- 高噪声样本剔除,避免污染训练;
- 训练后必须在固定 badcase 集回放验证。
19)高并发下如何保证检索与生成稳定?
结论:服务分层 + 缓存 + 降级策略。
- 检索、重排、生成解耦,避免相互拖垮;
- 多级缓存(query、候选、答案);
- 限流、排队、优先级调度;
- 压力大时按策略降级,先保可用再保完整。
小结:一面里最该展示的不是“知道多少名词”
面试官更看重的是:
- 你能不能把一个复杂系统拆成层次;
- 你能不能说清楚每层的关键权衡和兜底方案;
- 你是否具备把 badcase 回流成改进闭环的工程意识。
简单说,回答这 19 题时,把焦点放在 系统可控性、可解释性、可迭代性,通过率会明显高于只背术语。