Zero-Mem/Zero-mem

Official code for "Zero-Mem: Zero-Token Memory Operations for LLM Agents".

什么是 Zero-Mem?

Zero-Mem 是一个为 AI 智能体提供记忆系统的框架——一种存储和检索过去交互的方式,以便它们能够回答相关问题。关键思想是,大多数记忆操作(构建、组织、查找和检查证据)完全不调用大型语言模型(LLM)。只有最后一步——实际生成答案——才使用 LLM。这使得记忆操作既便宜又快速。

工作原理

  1. 存储原始文本。 系统按原样保留原始交互轨迹(对话或文档)。它提取实体(人物、地点、事物)并将文本编码为向量,但不创建摘要或语义三元组。

  2. 构建两个互补结构:

    • 一个实体-上下文图,展示实体之间的相互关系。
    • 一个时间层次结构,保留局部上下文和时间顺序。
  3. 分析查询。 当问题到达时,系统识别诸如主题、答案类型、时间引用和来源边界等线索,以指导检索。

  4. 检索证据。 它从图和层次结构中提取候选,然后添加有界的支持上下文(关系或局部)。

  5. 校准并回答。 它过滤证据,将其发送给 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。

数据格式

支持两种布局:

  1. LoCoMo 对话 — 仓库根目录下的单个 JSON 数组,包含对话/QA 数据(locomo10.json)。
  2. 准备好的问题-语料库对 — 数据集目录下的两个 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 上下文——您必须准备语料库和边界以匹配基准协议。

相关

  • 项目
  • 项目
  • 项目
  • 项目