Storage 04

Vector Memory

用向量捕捉语义

交互

在空间中任意位置点击以移动 Query 点。拖动 Top-K 滑块改变返回结果数量。

3
用户喜欢 TypeScript喜欢简洁的代码风格用 VS Code 编辑器Query点击空间任意位置移动 Query · 拖拽 Top-K 滑块调整检索数量
#1偏好

用户喜欢 TypeScript

similarity: 0.976

#2偏好

喜欢简洁的代码风格

similarity: 0.976

#3工具

用 VS Code 编辑器

similarity: 0.946

将文本转化为坐标

核心思想:将每条记忆转换为一组数字向量(即 embedding),放置在高维空间中。语义相似的文本在空间中彼此接近。搜索时,将查询也转换为向量,然后找到最近的邻居。

原理

Embedding:神经网络将文本映射为 n 维向量(如 1536 维)。
Cosine similarity:两个向量之间的夹角越小,含义越相似。cos(0) = 1 表示完全相同。
Top-K:返回与查询向量最相似的 K 个结果。

Mem0:基准实现

Mem0(48K star)是最流行的 vector memory 框架。核心流程:

1. Extract —— 从对话中识别值得记忆的片段
2. Embed —— 将片段转换为向量
3. Dedup —— 与现有记忆比对,合并语义重复项
4. Store —— 写入 vector 数据库
5. Search —— 查询时,通过 cosine similarity 找到 Top-K

在 LoCoMo benchmark 上,Mem0 比 OpenAI 内置 Memory 高出 26%。差异不在搜索——而在 Extract + Dedup 的质量。

LangMem:存储无关的基础原语

LangMem(1.3K star)来自 LangChain 生态,定义了三种基础 memory 操作:

操作功能人类类比
Extract从对话中提取值得记忆的信息注意到重要的事
Consolidate合并相关记忆,消除重复整理思路
Reflect从现有记忆中推导新见解从经验中得出结论

Vector memory 解决了什么——没解决什么

解决了:无法搜索(vector 相似度取代全量扫描)和无法去重(embedding 比较 + LLM 判断)。
未解决:无法遗忘(没有时间维度,没有自动过期)。同时丢失了结构信息——它知道"张伟使用 Go"和"字节跳动使用 Go",但不知道"张伟在字节跳动工作"。要解决这个问题,你需要 graph memory。


下一节

Vector 解决了搜索但丢失了关系。下一节:graph memory——用 knowledge graph 保留结构。