Agent Server 自动处理存储
使用 Agent Server 时,您无需手动实现或配置存储。API 会在后台为您处理所有存储基础设施。
InMemoryStore 适用于开发和测试。对于生产环境,请使用
PostgresStore、MongoDBStore 或 RedisStore 等持久化存储。所有实现都扩展了 BaseStore,这是节点函数签名中应使用的类型注解。基本用法
以下代码片段展示了独立使用 InMemoryStore,而不使用 LangGraph:tuple 来划分命名空间,在以下示例中为 (<user_id>, "memories")。命名空间可以是任意长度并表示任何内容,不必特定于用户。
store.put 方法将记忆保存到存储中的命名空间。指定如上定义的命名空间,以及一个记忆的键值对:键只是记忆的唯一标识符 (memory_id),值(一个字典)就是记忆本身。
store.search 方法从您的命名空间中读取记忆,该方法返回给定用户的记忆列表,最多到 limit 参数(默认 10)。使用 InMemoryStore 时,项目按插入顺序返回,因此最新的记忆在列表末尾;其他后端可能以不同方式排序记忆(参见列出命名空间中的项目)。
-
value: 此记忆的值 -
key: 此记忆在此命名空间中的唯一键 -
namespace: 字符串的元组,此记忆类型的命名空间虽然类型是tuple,但在转换为 JSON 时可能会序列化为列表(例如['1', 'memories'])。 -
createdAt: 此记忆创建的时间戳 -
updatedAt: 此记忆更新的时间戳
列出命名空间中的项目
调用store.search 时,不带 query 和 filter 参数,将返回存储在命名空间前缀下的项目,最多返回 limit 个。当您不需要语义排序时,使用此方法来枚举命名空间中的所有内容。
namespace_prefix通过前缀匹配,不是精确匹配。("alice",)也会返回("alice", "memories")、("alice", "preferences")等下的项目。要限制到单个级别,请传递完整的命名空间或在客户端根据item.namespace过滤返回的项目。- 超过
limit的结果将被静默截断。 没有溢出信号——将limit设置为高于您预期的最大值,或使用offset进行分页。 - 默认排序取决于存储后端。
PostgresStore和AsyncPostgresStore返回按updated_at降序排列的结果(最近更新的在前)。InMemoryStore返回按插入顺序排列的结果(最近插入的在最后)。不要依赖特定实现间的顺序;如果顺序重要,请在客户端根据item.updated_at进行排序。
store.listNamespaces:
语义搜索
除了简单的检索,存储还支持语义搜索,允许您根据含义而不是精确匹配来查找记忆。要启用此功能,请使用嵌入模型配置存储:fields 参数或在存储记忆时指定 index 参数来控制记忆的哪些部分被嵌入:
在 LangGraph 中使用
memoryStore 与检查点保存器协同工作:检查点保存器将状态保存到线程(如上所述),而 memoryStore 允许您存储任意信息以便跨线程访问。如下所示,同时使用检查点保存器和 memoryStore 来编译图。
thread_id 调用图,同时也使用 user_id,如前所述,它充当此特定用户的记忆的命名空间。
runtime 参数从任何节点访问存储和 userId。您可以使用它来保存记忆:
store.search 方法获取记忆。记忆以对象列表形式返回,可以转换为字典。
user_id 相同,您仍然可以访问相同的记忆。
langgraph.json 文件中配置索引设置。例如:
后续步骤
- 向 Agent Server 添加自定义存储 — 部署您的实现
- 检查点保存器 — 线程范围的状态持久化
Connect these docs to Claude, VSCode, and more via MCP for real-time answers.

