Storage 04
Vector Memory
用向量捕捉语义
交互
在空间中任意位置点击以移动 Query 点。拖动 Top-K 滑块改变返回结果数量。
用户喜欢 TypeScript
similarity: 0.976
喜欢简洁的代码风格
similarity: 0.976
用 VS Code 编辑器
similarity: 0.946
将文本转化为坐标
核心思想:将每条记忆转换为一组数字向量(即 embedding),放置在高维空间中。语义相似的文本在空间中彼此接近。搜索时,将查询也转换为向量,然后找到最近的邻居。
原理
Embedding:神经网络将文本映射为 n 维向量(如 1536 维)。
Cosine similarity:两个向量之间的夹角越小,含义越相似。cos(0) = 1 表示完全相同。
Top-K:返回与查询向量最相似的 K 个结果。
Mem0:基准实现
Mem0(48K star)是最流行的 vector memory 框架。核心流程:
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 保留结构。