AI 一面:Agent 系统设计 19 问(逻辑结构与分条回答)

这一组题目看起来很散,实际上都在考同一件事:你是不是把 Agent 当成一个可上线、可治理、可迭代的系统在做。
这篇先不急着逐条背题,而是先把总的逻辑结构立住,再按 19 个问题给出可复述的分条答案。

可以先把整套系统拆成 5 层:

  1. 入口决策层(意图识别与路由):识别 query 类型,决定走哪些数据源和工具;
  2. 证据构建层(解析、切分、检索、重排):把可用知识变成可检索证据;
  3. 推理编排层(rewrite、工具调用、答案合成):把子结果拼成可用回答;
  4. 质量控制层(review、可解释、badcase 回流):保证正确率和可追溯;
  5. 稳定性与成本层(并发、版本、存储):保证线上 SLA 和长期可持续。

一个稳妥的答题策略是:

  • 每题都回到 “所在层 + 关键权衡 + 兜底策略”
  • 少讲“某个模型多强”,多讲“冲突时怎么收敛”。

你可以把这套系统记成三句话:

  • 路由不是单点分类,而是规则、模型、证据三方协同。
  • 检索不是一次召回,而是多阶段漏斗(召回→重排→校验)。
  • 生成不是终点,终点是可解释、可回放、可优化。

后面的 19 题,基本都能落在这三句话上。

结论先说:不要做单标签分类,要做多标签 + 子问题拆分。

  • 用多标签分类识别“知识问答 + 业务查询”共存;
  • 做 query decomposition,把条款问题和行为数据问题拆开;
  • 执行时并行:文档链路走 RAG,业务链路走 SQL/API;
  • 汇总时保留来源标签,避免把静态知识和实时数据混在一起。

结论:优先级要硬编码,不靠临场判断。

  • 一般用:硬规则(权限/合规) > 模型建议 > 检索证据校验;
  • 模型给“概率判断”,规则给“边界条件”,检索给“事实支持”;
  • 冲突时走保守路径(只输出可验证结论);
  • 冲突样本进入回放集,定期更新规则和提示词。

结论:不要把单一相似度阈值当开关。

  • 用多信号门控:向量分、关键词命中、query 类型、历史命中率;
  • 低置信 query 走双路策略(RAG 与非 RAG 并行);
  • 用离线回放做阈值分桶校准;
  • 模型升级前后做相似度分布监控,防止线上突变。

结论:基线固定,线上动态。

  • 先有一个默认权重(例如向量 0.6,关键词 0.4);
  • 短 query、实体名密集问题提高关键词权重;
  • 语义问句、长问题提高向量权重;
  • 通过离线 NDCG/Recall 与在线反馈持续调参。

结论:级联重排 + 超时降级。

  • 粗召回拿 topK,再只对小候选集做重排;
  • 轻模型先筛,重模型只打 topN;
  • 做缓存、并行、超时截断;
  • 高峰期可切换“快但略保守”的策略,优先守 SLA。

结论:改写要受控,且必须可回退。

  • 只允许消歧、补全实体、结构化约束,不改核心意图;
  • 做语义一致性校验,不通过就回退原 query;
  • 多候选改写先试召回,再选最优;
  • 保留原 query 分支兜底,避免“改写后变差”不可恢复。

结论:文本抽取不够,要版面感知。

  • 多解析器协同(OCR、layout、table);
  • 保留页码、坐标、层级结构等中间信息;
  • 对跨页表格做表头继承与列对齐规则;
  • 建复杂文档回归集,升级解析器必须回归通过。

结论:结构优先切分,长度规则兜底。

  • 按标题、段落、表格等结构切,再按 token 长度裁剪;
  • 设 overlap 保连续性,但控制重复噪声;
  • 定义类内容可偏大块,事实参数类可偏小块;
  • 用离线评测找最优区间,而不是凭经验拍脑袋。

结论:metadata 决定了检索“能不能找对范围”。

  • 用于过滤(时间、部门、权限、产品线);
  • 用于排序加权与结果解释;
  • 标错会带来漏召回、误召回,严重时出现权限越界;
  • 需要校验规则、抽检、异常扫描与修复链路。

结论:升级要过渡,不要硬切。

  • 尽量保持同版本 embedding;
  • 升级时双索引并行(old/new)逐步切流;
  • 监控相似度分布、topK 重合率、命中率变化;
  • 达标后再做全量重嵌入收敛。

结论:局部重算,不做全量重建。

  • 以 block 维护 lineage;
  • 仅重算受影响 chunk,未变 chunk 复用;
  • 新旧版本用 active/inactive 切换;
  • 查询默认只看 active,审计场景可查历史版本。

结论:分层存储 + 压缩 + 生命周期策略。

  • 热数据与历史归档分层;
  • 向量压缩与去重存储;
  • 按业务价值配置保留周期;
  • 定期 compaction 清理无引用数据。

结论:支持,核心是“同对象双快照 + diff”。

  • 先抽取对象、时间窗、对比维度;
  • 分别检索两个版本快照;
  • 生成增删改对比(旧值/新值/生效时间/证据);
  • 对低置信差异加提示,避免误导。

结论:先定义数据主权,再做冲突仲裁。

  • 定义 source-of-truth 与优先级;
  • 统一 schema 与时间戳;
  • 冲突不可自动消解时触发仲裁流程;
  • 最终回答披露采用依据与冲突信息。

结论:可靠性策略前置,不在生成阶段补锅。

  • 设置超时、重试、熔断、降级;
  • 做返回完整性校验,缺字段就标注“部分可用”;
  • 关键接口提供缓存或备用源;
  • 全链路打 trace id 便于排障。

结论:可解释要覆盖“决策过程 + 证据结构”。

  • 给出路由原因摘要(为什么走这条链路);
  • 输出证据卡(来源、版本、时间、置信度);
  • 关键结论给不确定性提示;
  • 支持回放,能复现实验输入与中间决策。

结论:会,Reviewer 是质量阀。

  • 错判会导致误放行或误拦截;
  • 需要评估准确率、漏判率、误杀率与延迟;
  • 对高风险样本做双 Reviewer 或人工复核;
  • 持续加入 hard case 训练 Reviewer。

结论:先做归因,再做训练。

  • 将问题分成模型问题、检索问题、数据问题、工具问题;
  • 标注集做一致性检查与去重;
  • 高噪声样本剔除,避免污染训练;
  • 训练后必须在固定 badcase 集回放验证。

结论:服务分层 + 缓存 + 降级策略。

  • 检索、重排、生成解耦,避免相互拖垮;
  • 多级缓存(query、候选、答案);
  • 限流、排队、优先级调度;
  • 压力大时按策略降级,先保可用再保完整。

面试官更看重的是:

  • 你能不能把一个复杂系统拆成层次;
  • 你能不能说清楚每层的关键权衡和兜底方案;
  • 你是否具备把 badcase 回流成改进闭环的工程意识。

简单说,回答这 19 题时,把焦点放在 系统可控性、可解释性、可迭代性,通过率会明显高于只背术语。