P50 内存检索的 15 毫秒对语音代理毫无作用
摘要
这篇文章讨论了语音代理中内存检索的关键挑战,强调了测量每轮 P99 延迟、使用预取以及预算内存令牌以减少延迟并改善用户体验的必要性。
我看到每个内存工具都用检索延迟来宣传,但这本身意义不大。我在将内存放入语音代理后发现了这一点。我面临的限制:语音轮次有一个硬性时间限制,从用户说话结束到第一个音频输出,如果耗时太长,用户会听到线路中断,他们开始再次说话,这会触发打断并搞乱下一个轮次。一个级联栈将时间分配到语音结束检测、TTFT、语音合成以及传输上,一旦这三者完成,剩下的时间很少,内存必须适应这个空间。问题 1:P50 不是正确的指标。一次呼叫是一系列轮次,而不是一个轮次,所以在几次呼叫中,你的 P99 绝对会显现出来。用户感受到你最差的轮次,听起来像代理在句子中间静默。我只在测量每个轮次而不是整体时发现了尾部延迟,主要是对具有数百个链接的实体进行图遍历。一个有 200 次交互的客户检索的内容与只有 5 次的客户完全不同,在干净测试存储上的 P50 中看不到任何这些。如果你在评估任何内存层,请要求在真实数据上并发下的 P99。问题 2:检索阻塞响应。基本流程是(语音结束 - 转录 - 检索 - 构建提示 - 调用模型),这将检索置于用户已经沉默的时期,每一毫秒都直接增加他们的感受。解决方案是预取,流式转录在用户仍在说话时发送部分结果,所以我根据部分结果进行检索,到语音结束时内存已经存在,一旦你预取,检索速度只在未命中时重要。问题 3:返回太多的快速检索更糟。注入的令牌在这些规模下大致线性地推高 TTFT,所以一个 15ms 的检索将几千个令牌转储到提示中,增加的延迟比检索节省的更多,因此你得到了一个好的基准但失去了轮次。我开始用令牌预算而不是 top k 来思考。跨存储排名并填充到预算,加上削减任何不值得令牌的内容,并从你的语音系统提示中移除 markdown,它会干扰合成,而且你还在为无用字符支付预填充。问题 4:用户在轮次中改变主意。例如“帮我预约周二,实际上不,周四并安排在下午。”这就是低检索延迟重要的地方,当猜测错误时作为恢复成本。我将每个预取视为推测性的,并在任何内容进入模型之前根据最终转录检查它。我的建议:对于任何在这个领域构建的人,测量每个轮次的 P99,在并发下,并在具有真实数据密度的存储上。在部分转录上预取。用令牌预算内存而不是结果,并计算你注入的任何东西的 TTFT 成本。在优化任何单一链接之前,对整个链进行检测。乐意回答任何问题,请提出你的问题:)
相似文章
我们的语音代理p99为280ms,竞争对手为450ms,但用户却觉得我们的更慢。我们测量了原因。
一个语音代理团队发现,尽管端到端延迟更低(280ms对比竞争对手的450ms),但由于糟糕的打断响应时间(380ms对比60ms),用户感知更慢。他们确定了三项修复措施——内存锁定、VAD阈值调整和更小的TTS块——将100ms阈值下的打断率从41%提升至89%,让用户感觉更快。
为服务型企业运行生产级语音代理6个月:延迟计算远比演示所暗示的复杂。
在为服务型企业运行语音AI代理6个月后,作者揭示了现实世界中的延迟是双峰的(中位数约800ms,p95约2.4s),而p95决定了用户的感知。诸如VAD误触发、长提示词下函数调用退化、以及TTS质量等问题比LLM的选择更重要,而多语言支持则增加了显著的成本。
@MSFTResearch: AI 智能体无法记住过去的对话。它们必须不断重新加载或检索上下文,随着任务变长和复杂,效率变得越来越低…
Memora 是一种为 AI 智能体设计的可扩展记忆系统,它将存储与检索分离,能够支持长周期任务,同时将上下文令牌减少多达 98%,并在基准测试上取得了新的最佳性能。该论文发表于 ICML 2026。
语音代理的最大延迟未必来自模型
语音代理常面临延迟问题,主要并非源于模型,而是端点检测等组件;优化VAD和采用合适的基准测试可有效降低轮次延迟。
AgentMemBench:评估对话式AI智能体长期记忆管理策略的系统性基准
AgentMemBench 是一个系统性基准,在三个数据集上评估对话式 AI 智能体的五种长期记忆管理策略,发现外部键值存储检索在质量上占优,但会带来更大的内存占用。