Zero-Mem/Zero-mem
Official code for "Zero-Mem: Zero-Token Memory Operations for LLM Agents".
什么是 Zero-Mem?
Zero-Mem 是一个为 AI 智能体提供记忆系统的框架——一种存储和检索过去交互的方式,以便它们能够回答相关问题。关键思想是,大多数记忆操作(构建、组织、查找和检查证据)完全不调用大型语言模型(LLM)。只有最后一步——实际生成答案——才使用 LLM。这使得记忆操作既便宜又快速。
工作原理
存储原始文本。 系统按原样保留原始交互轨迹(对话或文档)。它提取实体(人物、地点、事物)并将文本编码为向量,但不创建摘要或语义三元组。
构建两个互补结构:
- 一个实体-上下文图,展示实体之间的相互关系。
- 一个时间层次结构,保留局部上下文和时间顺序。
分析查询。 当问题到达时,系统识别诸如主题、答案类型、时间引用和来源边界等线索,以指导检索。
检索证据。 它从图和层次结构中提取候选,然后添加有界的支持上下文(关系或局部)。
校准并回答。 它过滤证据,将其发送给 reader LLM(例如 GPT-4o-mini),并对证据支持、答案类型和格式应用确定性检查。
“零 token”的含义
记忆构建、组织、路由、检索、证据闭合和校准不使用 LLM 调用,也不使用 LLM 输入/输出 token。然而,编码器(BGE-M3)、命名实体识别(spaCy)、存储以及最终的问答推理确实有成本。
组件
run.py— 生成答案的入口点。ZeroMem— 结合检索和 reader。ZeroMemConfig— 保存运行时设置。ZeroMemReaderClient— 管理最终 QA 请求和诊断。- 用于索引、嵌入、NER、查询分析、检索、证据、reader、校准和数据 I/O 的支持模块。
设置
- 安装依赖:
pip install -r requirements.txt并下载 spaCy 模型en_core_web_trf。 - 默认模型:BGE-M3 用于密集编码,gpt-4o-mini 作为最终 reader(可通过环境变量配置)。
- reader 使用 OpenAI 兼容的 Chat Completions 端点;您在 shell 中私下设置 API 密钥。
- GPU 支持需要兼容的 PyTorch 构建,以及用于 spaCy 的 CuPy。
数据格式
支持两种布局:
- LoCoMo 对话 — 仓库根目录下的单个 JSON 数组,包含对话/QA 数据(
locomo10.json)。 - 准备好的问题-语料库对 — 数据集目录下的两个 JSON 数组(
questions.json和chunks.json),例如dataset/hotpotqa56K/或dataset/hotpotqa224K/。
报告结果(来自手稿)
| 最终 QA reader | LoCoMo F1 | LoCoMo BLEU-1 | HotpotQA 56K F1 | HotpotQA 224K F1 | HotpotQA 448K F1 |
|---|---|---|---|---|---|
| GPT-4o-mini | 59.15 | 52.96 | 72.07 | 66.43 | 65.04 |
| Qwen2.5-14B-Instruct | 57.57 | 51.41 | 68.58 | 65.47 | 61.02 |
这些是手稿报告的数字,不是此版本的新测量值。手稿还报告了记忆操作时间比最快比较基线(LightMem)低 57.6%,在最终 QA 之外测量。
输出
对于融合模式,每次运行产生预测文件(紧凑和原始)、运行配置、性能统计、失败诊断(如果有)和日志。图和层次模式产生类似命名的文件。入口点仅生成答案——基准评分单独进行。
恢复运行
要恢复中断的运行,保留原始输出目录(包括 .jsonl 和 run_config.json 文件),将 OUT 设置为确切路径,并使用相同设置仅重新运行 Python 生成命令并加上 --resume。
注意事项
- reader 提示的 token 预算在证据构建期间使用近似的空白词计数;实际 token 使用量在提供者返回时单独报告。
- 数据集和 Qwen 服务环境不包含在内;您必须自行提供。
- 目录名
hotpotqa224K不会自动创建 224K token 上下文——您必须准备语料库和边界以匹配基准协议。
相关
- 项目
- 项目
- 项目
- 项目