Opus 5低成本构建时序知识图谱记忆系统指南

0x_rody 发布于 2026-07-28 阅读 27

本文介绍如何利用 Anthropic Opus 5 模型的缓存和批处理特性,以低成本构建适用于 AI Agent 的时序知识图谱记忆系统。核心优化策略是将图谱操作分离为提取(ingestion)和查询(traversal)两个环节:提取时使用低 effort 模式并缓存固定前缀指令,使成本从 $5/M 降至 $0.50/M;查询时则使用高 effort 模式以保证推理质量。同时,利用批处理 API(50% 折扣)进行历史数据回填,并确保 effort 参数在会话间一致以避免缓存失效。文章提供了具体的 Python 代码、MCP 服务器配置以及 Neo4j 部署步骤,并对比了成本(5000 个 episode 的构建成本从 $35 降至约 $10.30),指出分离操作是控制成本的关键。

图像

图内存有一个致命的成本:你每次摄入的对话都会执行一次抽取调用,而简单的设置会按全额前沿模型费率来运行。Opus 5 正好提供了能大幅削减该成本的关键杠杆。

内部:抽取配置的费用为 0.50 美元而非 5 美元,摄入与查询之间的精力分配,以及完整的路由方案。

如果正确构建,时序图的喂料成本比向量存储的嵌入成本更低。

以下是完整设置 👇

图像

为什么图与 Opus 5 是绝配

知识图谱让你的智能体拥有在压缩后仍然存活的内存:实体、关系和时间戳,它可以遍历而非重新阅读。

代价始终在于构建成本。

你摄入的每段对话和每份文档都会执行一次抽取流程,按照前沿模型费率,成本会迅速累积。

Opus 5 恰好改变了这一步的成本算法:

  • 缓存读取每百万 token 0.50 美元,较 5 美元基准价优惠 90%。图摄入会在每次轮次中重新发送相同的 schema 和指令,而这个重复的前缀现在按原价的十分之一计费
  • 最小可缓存前缀降至 512 个 token,是 Opus 4.8 所需的一半。那些之前因太小而无法缓存的简短抽取提示,现在无需修改代码即可满足缓存条件
  • 批量 API 享 50% 折扣,可与缓存叠加。将一年的历史记录回填至图中,正是典型的批量任务:非时间敏感、高容量、完美可缓存

结果:曾经让图内存变得昂贵的唯一操作,如今成了 Opus 5 最便宜的功能。

图像

核心划分:廉价抽取与谨慎遍历

Graph工程包含两个与模型相关的任务,它们需要相互对立的设置。正确掌握这种区别就是全部技巧所在。

  • 抽取(高容量、低判断力): 从原始文本中提取实体和类型化的关系。每次轮次都运行,数千次。这需要低精力设置和稳定的缓存前缀
  • 遍历推理(低容量、高判断力): 通过遍历图并综合信息来回答多跳问题。很少运行,但非常重要。这需要高或最高精力设置

如果以最高精力运行抽取,你会把前沿模型的 token 浪费在机械性工作上。

如果以低精力运行遍历,你的多跳答案会变得敷衍。

费用和质量都取决于这个决策。

抽取配置(可直接复制使用)

保持 schema 和指令作为每次轮次的完全相同前缀,以便缓存实际命中:

import anthropic

client = anthropic.Anthropic()

## 稳定前缀:每次调用相同 = 每百万 token 缓存读取 0.50 美元
EXTRACTION_SYSTEM = """从文本中提取知识图谱。
仅返回 JSON:
{
  "entities": [{"name", "type", "description"}],
  "edges": [{"source", "target", "relation", "valid_from"}]
}
规则:
- 仅使用规范名称(将 "Buzz Aldrin" 解析为 "Edwin Aldrin")
- 如果文本隐含时间,每条边都需要 valid_from 日期
- 绝不发明文本中未提及的关系
"""

def extract(episode_text, occurred_at):
    return client.messages.create(
        model="claude-opus-5",
        max_tokens=2000,
        system=[{
            "type": "text",
            "text": EXTRACTION_SYSTEM,
            "cache_control": {"type": "ephemeral"},   # 缓存前缀
        }],
        messages=[{"role": "user", "content":
            f"reference_time: {occurred_at}\n\n{episode_text}"}],
        extra_headers={"effort": "low"},   # 机械工作,低精力
    )

决定费用的三个细节:

  • cache_control 作用于系统块,正是它将每次重复调用的 5 美元变为 0.50 美元;没有它,你每次轮次都按全价付费
  • effort: low 因为抽取是模式匹配而非推理。将思考预算留给遍历
  • 可变部分放在最后。轮次文本和时间戳每次调用都会变化;schema 则从不变化。稳定优先、可变在后,是保持前缀可缓存的关键

遍历配置(另一半)

当智能体回答真实问题时,将两个设置同时翻转:

### 图路由(CLAUDE.md)

摄入(写入图):
- 模型:Opus 5,精力低
- 始终缓存抽取 schema 前缀
- 批量处理历史回填,绝不同步运行

遍历(查询图):
- 模型:Opus 5,精力高(针对深度多跳设为最高)
- 强制执行检索步骤:先提取相关子图,然后仅基于这些事实进行推理
- 每个答案引用其使用的具体边

绝对不要:
- 以高精力运行抽取(在机械工作上浪费 token)
- 以低精力运行遍历(产生懒惰的多跳答案)
- 在会话中途更改精力(会使缓存失效)

最后一条规则在 Opus 5 上是一个真正的陷阱:精力是提示缓存键的一部分。

在会话中途切换后,下一次交互将以未缓存的完整价格重新读取整个上下文。

将摄入和遍历设为独立会话,而不是在一个会话中切换精力。

接入 Claude Code

Graphiti 提供了一个 MCP 服务器,因此 Claude Code 无需胶水代码即可读写图。

在配置中将抽取指向廉价设置:

{
  "mcpServers": {
    "graphiti": {
      "command": "uvx",
      "args": ["graphiti-mcp"],
      "env": {
        "NEO4J_URI": "bolt://localhost:7687",
        "NEO4J_PASSWORD": "${NEO4J_PASSWORD}",
        "MODEL_NAME": "claude-opus-5",
        "MODEL_EFFORT": "low"
      }
    }
  }
}

Neo4j 在单个 Docker 容器中运行,用于开发图。

现在,Claude Code 拥有了在每次压缩、每次重启和每次新会话后依然存活的内存,而为其提供喂料的抽取以缓存读取费率计费。

费用计算示例

一个现实场景:回填 5000 个轮次,每个轮次文本约 800 token,对应约 600 token 的缓存 schema 前缀。

原始设置(全价、无缓存、高精力):
  5000 × 1400 token × $5/M = 输入费用 $35.00
  加上高精力推理输出的 $25/M

正确使用 Opus 5(缓存前缀、低精力、批量):
  schema:600 token × 每百万缓存读取 $0.50
  文本:800 token × 每百万批量输入 $2.50
  ≈ 输入费用约 $10.30,低精力下输出费用极少

同样的图,构建成本不到原始方式的三分之一,而批量回填在你睡觉时即可完成。如今,为时序图喂料的成本甚至低于将相同语料嵌入向量存储。

常见错误

  • 以高精力进行抽取。 这是最昂贵的习惯。实体抽取是机械性的,低精力足以处理,你应该将推理预算留给需要它的查询
  • 没有在 schema 上设置 cache_control。 你在每次轮次中重复发送相同的指令。没有缓存,每次都按全价付费;有缓存,只需十分之一价格
  • 同步回填。 一次阻塞调用加载历史记录,放弃了 50% 的批量折扣且没有任何好处。没人会等待回填完成
  • 在会话中途切换精力。 它是缓存键的一部分。一次切换后,下一次交互将按全价重新读取所有内容。请将摄入和查询分成独立会话
  • 跳过 reference_time。 没有时间戳意味着没有时序图,只有一个会腐烂的静态本体。与嵌入相比,构建它的全部理由就在于时间层

20 分钟设置指南

  • 在 Docker 中运行 Neo4j,添加 Graphiti MCP 块,精力设置为低(5 分钟)
  • 将抽取 schema 设为缓存前缀,可变文本放在最后(5 分钟)
  • 通过批量 API 回填历史记录,而非同步方式(4 分钟)
  • 在 CLAUDE.md 中添加遍历路由,查询时使用高精力(3 分钟)
  • 提出一个多跳问题,检查它是否引用了真实的边(3 分钟)

前沿模型变得更便宜,图获得了缓存。大多数人会以最高精力运行抽取,然后奇怪为什么他们的记忆层比模型本身还贵。区分任务、缓存 schema、批量回填,时序图将成为智能体可以获得的最便宜的升级。

感谢阅读!

图像

  • 原文链接: x.com/0x_rody/status/208...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~

相关文章

0 条评论