Skip to content
阅读进度0%
知识库待复核

系统设计

以企业制度问答为例,串联需求、数据流、权限、容量、评估和故障恢复的系统设计方法。

我的学习与文章检索 →
学习记录仅保存在当前浏览器,可随时取消标记。

系统设计 ​

系统设计题需要把模型放进完整的数据与执行链路。先明确用户、成功标准和约束,再讨论组件;每增加一层,都解释它解决哪个已经出现的问题。

常见题目 ​

场景必须讲清的边界建议先复习
企业知识库问答权限、更新、引用、无答案RAG 生产实践
客服 Agent查询与写入、审批、幂等、人工接管工具调用
代码助手仓库范围、命令执行、测试、变更审查Agent 安全
多模态文档审核OCR/图像证据、页码坐标、人工复核多模态 RAG
评估平台数据集版本、评分规则、复审、发布门禁训练评估

回答框架 ​

  1. 定义任务:服务谁,输入是什么,成功时留下什么可检查的结果。
  2. 列出约束:数据新鲜度、授权范围、延迟、预算、可接受失败和不可自动执行的动作。
  3. 画出数据流:区分离线接入和在线请求,说明每个组件读写的状态。
  4. 建立基线:先用最少组件跑通,再根据失败样本增加复杂度。
  5. 解释故障:每条关键路径说明超时、重试、结果未知和回滚策略。
  6. 给出验收:质量、权限、成本和性能分别如何衡量。

示例:企业制度问答系统 ​

下面的规模仅作为面试练习设定:有一万份制度文档,按部门授权,工作日更新;用户需要带来源的答案。先询问并确定更新时限、并发和延迟目标,不能从文档数量直接推算机器配置。

离线接入 ​

文档源 → 解析 → 去重与版本化 → 按结构切分 → 建立关键词/向量索引。每个片段绑定 document_id、版本、章节和权限关联标识。新版本索引构建完成后切换可见版本;删除与撤权应传播到检索、答案缓存和原文访问路径。

在线请求 ​

认证身份 → 服务端确定可访问范围 → 召回 → 重排与去重 → 组装上下文 → 生成带证据 ID 的回答 → 引用校验。查不到证据时返回明确的不足说明;不得把无权限片段交给模型后再让模型“不要说出来”。

答案缓存的键至少考虑规范化问题、权限范围和知识版本。查询相同不代表两个用户应收到相同答案。

评估与发布 ​

  • 检索:正确证据是否进入候选,分别看术语、语义、多跳和例外条款。
  • 生成:关键断言是否被证据支持,是否遗漏适用条件。
  • 权限:跨部门、撤权和旧缓存用例是否阻断泄露。
  • 体验:按相同负载测 P95 延迟、错误率和每个成功问题的成本。

先使用固定验证集选方案,再在独立测试集报告结果。发布保留文档索引、模型、提示和配置版本,以便回退。

追问角度 ​

故障先看什么止损与后续修复
更新后仍答旧制度文档、索引、缓存的版本暂停旧答案缓存;修复版本传播
P95 延迟突然升高分段耗时、队列等待、上游限流控制并发、预算内降级;压测定位瓶颈
工具超时却已经写入请求 ID、幂等键、业务状态查询结果后恢复;避免盲目重放
模型升级后引用失真同样上下文下的新旧模型输出回退版本;补入回归集
人工接管率上升按接管原因分桶区分授权不足、数据不足和能力失败

一个常见容量计算错误 ​

平均并发 ≈ 到达率 × 平均响应时间 只适用于满足稳定性等条件的同一系统边界,不能用平均值保证 P95/P99 服务目标。模型服务还受输入/输出长度、批处理和 token 限额影响。容量方案需要真实长度分布、到达模式和失败率的压测记录,相关练习见 部署推理。

自测 ​

在上述设计上加入“代用户提交报销申请”:指出新增的工具权限、确认内容、幂等记录和恢复路径。若架构图只多出一个 LLM 方框,说明执行边界还没有讲清。

基于 VitePress 构建