工程上最危险的不是完全不可用,而是在理想环境里正常、进入真实网络和真实数据量后悄悄失去边界。 纯关键词要求用户知道 ICE、TURN 等术语,纯向量又可能忽略精确错误码。混合检索用 BM25 找代码与名称,用语义找自然描述。
数据与模型只能在明确目的、最小输入和可重复评测下进入决策链。确定性规则负责权限和副作用,模型提供带证据与置信度的辅助结论,并允许安全拒答。
工程边界与取舍
实现之前先列出不可违反的不变量,再为性能与体验留出调节参数。参数可以灰度,身份、权限和终态规则不能在运行时随意漂移。
- 文章按一个问题/方案段落分块并保留标题、locale、updated 与 canonical;查询先识别语言和 errorCode,再融合分数和版本新鲜度。
- 把协议事实、用户意图和自动恢复分层;自动化只能恢复事实,不能推翻用户明确选择。
- 资源释放是协议的一部分:定时器、句柄、队列和临时数据都要在终态中可重复清理。
“技术帮助的语义搜索:用户说“卡住了”也能找到对应排查”的交付标准是正常路径可用、异常路径收敛、资源有界,并且用户能理解系统为何采用当前状态。 这样得到的不是演示代码,而是能解释、能降级、能回滚的生产能力。
生产环境会怎样出错
失败路径需要与成功路径共享同一套状态模型。只弹一个错误提示却不释放资源、不传播终态,下一次恢复就会继承脏状态。
- 把中英全文整篇 embedding 会让结果无法定位;生成式回答无引用可能编造不存在的设置或过时安全建议。
- 只修正界面状态而没有清理底层资源,下一次操作继承队列、锁或过期凭据并再次失败。
- 没有背压或配额时,慢消费者会把内存、队列长度与尾延迟一起推高,最后拖累无关用户。
把测试跑成闭环
验证需要先写预期状态轨迹,再执行故障注入。每个阶段同时核对用户可见结果、两端协议状态、持久记录和资源计数,才能证明闭环成立。
- 建立包含俗称、错别字、中英混输、精确错误和无答案的查询集,测 nDCG、首个可用结果、跨语种与正确拒答。
- 让刷新、取消、超时和远端完成在同一调度窗口发生,断言系统只产生一个终态和一次副作用。
- 用故障注入验证告警先于用户投诉触发,并确认值班人员能从有限证据定位到具体阶段。
完成并不等于主路径跑通,而是每个终态都能对账、每个自动动作都受用户意图约束、每个成本都有明确上限。