按位置查找机器人记忆

机器人经验检索的空间搜索
2026 年 3 月 · 阅读约 4 分钟

"只显示位置 [1.3, 0.7, 0.42] 附近的成功抓取。"

这是你可以对机器人记忆执行的真实查询。不是"查找关于抓取的文档" — 而是查找发生在特定物理位置附近的实际抓取经验,且只返回成功的那些。

现有的记忆系统都做不到这一点。文本记忆系统(Mem0、Zep、Letta)通过语义相似度搜索 — "什么文本与我的查询最相似。"当你的机器人需要知道的是:在这里、在这个位置、在工作空间的这个区域,什么有效?这种搜索就毫无用处了。

为什么空间搜索很重要

机器人在物理空间中工作。在 [1.3, 0.7, 0.42] 处抓取物体的最佳策略,很可能与在 [1.3, 0.7, 0.40] 处有效的策略相似 — 而不是在桌子另一边 [0.5, 1.2, 0.8] 处有效的策略。

当你将空间接近性与结构化过滤结合时,就能获得精确的经验检索:

这就是空间经验检索 — 据我们所知,在任何现有的机器人记忆系统中都没有先例实现。

API

三行 Python 代码。就这么简单。

from robotmem import recall

memories = recall(
    "grasp object",
    context_filter={"task.success": True},
    spatial_sort={"field": "spatial.target", "target": [1.3, 0.7, 0.42]}
)

这同时完成三件事:

  1. 语义搜索 — 使用 BM25 + 向量混合搜索,找到与"grasp object"相关的记忆
  2. 上下文过滤 — 只保留 task.successTrue 的记忆(结构化 JSON 路径查询)
  3. 空间排序 — 按与 [1.3, 0.7, 0.42] 的欧几里得距离排序结果

结果:你的机器人获得最相关的成功经验,按与当前任务的物理距离排名。

结构化上下文过滤

context_filter 参数支持对每条记忆存储的结构化上下文进行 JSON 路径查询。一些示例:

# 只返回成功的经验
context_filter={"task.success": True}

# 只返回力大于 10N 的经验
context_filter={"params.force_peak": {"$gt": 10}}

# 只返回 FetchPush 的经验
context_filter={"env": "FetchPush-v4"}

上下文在保存感知时以 JSON 格式存储,robotmem 在检索时解析并过滤。这意味着你可以为记忆附加任何结构化元数据,稍后再查询 — 无需构建自定义数据库 schema。

试一试

pip install robotmem

python -c "
from robotmem import learn, recall

# 存储带有空间上下文的抓取经验
learn(
    insight='Grasped red cup: force=12.5N, 28 steps',
    context='{\"task\": {\"success\": true}, \"spatial\": {\"target\": [1.3, 0.7, 0.42]}}'
)

# 按位置检索
result = recall('grasp', spatial_sort={'field': 'spatial.target', 'target': [1.3, 0.7, 0.40]})
print(result['memories'][0]['content'])
"

按位置搜索机器人记忆

空间查询 + 结构化过滤。开源。

pip install robotmem