跳到正文

高并发 Agent 延迟卡在哪?

召回与生成阶段架构设计、算法、工程三角度策略

原题:在高并发查询的Agent系统中,如何优化召回阶段和生成阶段的延迟?请从架构设计、算法优化和工程实现等角度阐述具体策略。

评估与监控 · 高德真题

回答与解析

先拆瓶颈

高并发 Agent 的召回和生成是两类不同瓶颈,应分别测量排队、计算、存储和网络时间,再做端到端预算。

召回阶段

  • 用元数据或 BM25 做安全的候选过滤,再用稠密检索补充语义召回;过滤规则必须通过召回回归,避免提前丢失正确文档。
  • HNSW 通过搜索宽度在延迟与召回间取舍;IVF 通过桶数和探测数取舍;PQ 可减少向量存储与带宽,但会引入量化误差。
  • 热点 query、embedding 和结果可以按语料与模型版本缓存;更新后必须正确失效。
  • 检索服务独立扩缩容,并记录 Recall@K、P95/P99、缓存命中和资源使用。

生成阶段

  • continuous batching 提高 GPU 利用率,但要按长度或截止时间调度,避免长请求拖累短请求。
  • KV Cache 避免重复计算历史 token,同时需要容量、隔离和淘汰策略。
  • speculative decoding 是否有收益取决于草稿模型接受率与额外开销,必须在目标流量上验证。
  • 可用上下文压缩、路由小模型或提前拒答降低无效计算,但必须做质量回归。

假设实验

固定 query 集、语料、模型、硬件和并发曲线,逐项改变索引参数、缓存、批处理或解码策略;同时报告端到端任务成功率、召回、首 token、每 token、P95/P99、吞吐和单请求成本。预设降级路径:检索超时走受控缓存或拒答,生成过载走限流或低成本模型,不能静默返回未经验证的结果。

口语版讲法(约4分钟)

  • 召回阶段:多级索引与量化取舍
  • 生成阶段:投机解码与批处理
  • 架构解耦与降级兜底
  • 监控指标与落地风险

这道题讨论的是工程方案,不需要编造“曾经在某业务提升了多少”。

第一步先把端到端 trace 拆成排队、召回、重排、上下文组装、prefill、decode 和工具等待。召回与生成使用的资源不同,应该独立定位和扩缩容。

召回侧可以先做安全的元数据或关键词过滤,再做向量召回,但必须验证过滤不会漏掉正确证据。HNSW 的搜索宽度、IVF 的桶与探测数都在召回和延迟之间取舍;PQ 能节省存储与带宽,但会带来量化误差。热点 query、embedding 和结果缓存要绑定语料、模型和权限版本,否则会返回过期或越权内容。

生成侧重点是批处理和重复计算。continuous batching 能提升设备利用率,但要考虑请求长度差异和截止时间;KV Cache 能复用历史 token,需要容量、租户隔离和淘汰策略;speculative decoding 的收益取决于接受率,不能直接承诺固定倍数。上下文压缩、小模型路由和提前拒答也要做质量回归。

验证时固定 query、语料、模型、硬件和并发曲线,每次只改一个变量。报告 Recall@K、任务成功率、首 token、每 token、P95/P99、吞吐、显存和成本。最后设计过载降级:检索超时用受控缓存或拒答,生成过载限流或路由,但不能用未经验证的结果假装成功。

高并发优化还要关注排队论和背压。单个阶段平均很快,不代表尾延迟可控;到达率接近服务能力时,队列会迅速增长。入口应有并发上限、优先级、截止时间和拒绝策略,下游将剩余时间继续传递,避免父请求已超时而子任务仍消耗资源。动态批处理也要限制等待窗口,防止为吞吐牺牲交互请求。

缓存必须包含正确的隔离维度。检索结果通常依赖 query、语料版本、embedding、过滤条件和租户权限;生成缓存还依赖模型、Prompt、上下文与安全策略。漏掉任一维度都可能返回过期或越权答案。KV Cache 是请求级计算状态,也要考虑不同会话之间的隔离与释放。

压测不能只用等长的随机请求。应复现目标流量中的输入长度、输出长度、工具等待、热门与长尾 query、突发和故障注入,并同时观察 GPU 利用率、显存、CPU、网络、队列与错误。优化上线前设置质量和安全回归门槛,避免通过更多截断、超时或拒答换取表面延迟。

最后,所有参数、阈值和方案优劣都应绑定目标数据、硬件、流量与错误预算。没有回放或对照实验时,只能说明机制和预期风险,不能承诺固定收益。上线结论还要同时满足质量、尾延迟、成本、安全和可回滚,不能只优化一个平均指标。

关键一句:Agentic RAG 在降低无效召回与引入决策延迟之间的平衡问题

面试官还可能这样问

  1. 问法 1 · 场景切入

    假设我们做一个电商客服Agent,双十一高峰期每秒几千个查询,用户问“我的订单到哪了”召回物流信息,然后生成回复。现在召回和生成都慢,你怎么优化这两个阶段的延迟?

  2. 问法 2 · 层层追问

    高并发查询下Agent系统的延迟怎么优化?……先说说召回阶段,如果向量库扛不住怎么办?……那生成阶段呢,模型推理慢怎么解决?……架构上还有没有其他手段?

  3. 问法 3 · 直球架构

    设计一个高并发Agent系统,要求召回P99小于50ms,首Token延迟小于200ms。请从召回和生成两个阶段,分别给出架构设计、算法优化和工程实现的策略。

同模块相关题目