在90个模拟日内对比记忆系统与“发送完整对话历史”:上下文令牌减少23-62倍,个人事实召回效果相当或更优,以及记忆明显失败的一个地方(数字和方法)

Reddit r/AI_Agents 论文

摘要

本研究对比了AI代理中的记忆系统与完整对话历史在模拟天数内的表现,显示记忆系统可将上下文令牌减少23-62倍,在个人事实召回上效果相似或更好,但在数字数据和特定细节(如标识符)上表现不佳。

每个构建代理的人都会遇到同样的选择:保留一个记忆层,还是在每个请求中发送完整的对话历史。我运营一个记忆API,因此请相应地打折扣;这篇文章的重点是测量,而损失数据就包含在其中。 设置:三个带有真实标签的合成对话语料库(一个伴侣应用、一个客服支持、一个编码助手),每个语料库在7、30和90个模拟天后。事实被植入在已知的日子,干扰项(如他人的生日、同事的过敏信息、一个暂存端口)稍后植入。在最后一天后,每个语料库有6-8个需要旧事实的问题。两种策略使用相同的问题和答案模型(gpt-4o-mini):完整历史:整个对话作为上下文;记忆系统:每天提取事实,然后检索到600个令牌的预算中。 令牌精确计数(使用tiktoken o200k),非估算。成本表每格运行一次;记忆侧在伴侣应用上早期重复3次,运行间召回差异为0.12-0.17,因此小的召回差异视为噪声。 每个请求的上下文令牌,完整历史 -> 记忆系统:语料库30天 90天;伴侣应用 2,837 -> 169 (17x) 7,532 -> 122 (62x);支持 2,622 -> 278 (9x) 7,562 -> 331 (23x);编码 2,226 -> 201 (11x) 5,914 -> 186 (32x)。记忆系统的令牌保持平稳(120-330个),无论历史长度如何。 按每百万输入令牌0.15美元计算,1,000用户 x 每天20个请求:完整历史在90天时每月630美元,而记忆系统仅需19美元。仅上下文输入成本;提取和搜索成本不包括在内。 旧事实的召回率(完整历史 / 记忆系统):语料库30天 90天;伴侣应用 1.00 / 1.00 0.88 / 1.00;支持 0.62 / 0.25 0.38 / 0.75;编码 1.00 / 0.88 1.00 / 0.88。 三件我未预料到的事: - 完整历史并非免费午餐。在支持语料库的90天案例中,答案模型在7.5k个令牌的对话中仅38%的时间能找到一个月前的事实。记忆系统在此达到75%。 - “直接发送一切”也会随长度退化,只是你没有看到。 - 记忆系统在支持语料库的30天案例中表现很差(0.25)。我检查了存储的内容:提取器将“忠诚度编号LR-11560”转化为“有一个忠诚度编号”,从未提取取件办公室,并将客户的卡片归档在助手下。标识符、选项、命名实体:这正是产品终端用户记忆应承载的内容。这是我接下来要修复的地方,修复后我会发布数字,而不是之前。 测量在我发布前发现了我自己过滤器的两个错误。我本周发布的一个“不存储会话闲聊”门将“指出服务固定于Python 3.12”这样的间接引语丢弃了。修复后,编码召回从0.75提升到0.88。如果你编写显著性过滤器,请用言语表达的事实进行测试。 可重现:基准测试、语料库生成器(固定种子)、完整历史基线、OpenAI Agents沙箱记忆的复现,以及价格作为输入的成本报告都在仓库中;链接按子规则在评论中。每个实验的准则在运行前写好,结果被记录,包括被拒绝的。 问一下那些发布代理的人:你们现在发送什么,以及在什么历史长度下开始出现问题?
查看原文

相似文章