基于语义向量的多模态长时记忆系统,专为AI Agent设计,支持记忆存储、语义检索、自动合并、关联推理等功能。 当在主副agent场景下使用,把agent.md贴到副agent中,主agent调用session_send把用户输入给到副agent做处理 当在单agent模式下,直接生效该skill
- 语义编码:替换原Hash编码为Word2Vec 128维语义向量,相似度匹配准确率提升60%+
- Top-K PPR 检索:每轮迭代截断到Top-50节点,防止噪声扩散,检索速度提升3倍
- 边权重归一化:所有出边权重归一化,避免旧记忆权重过高导致的检索偏差
- Context-Context 关联图:自动构建上下文之间的关联边,支持跨记忆推理
- 二跳扩展检索:PPR传播后增加二跳扩展,召回更多关联记忆
- 三通道加权评分:关键词匹配 × PPR传播权重 × 时效性 综合排序
- 弱关键词过滤:自动过滤出现频率<2的低价值关键词,减少噪音
- ✅ 记忆自动合并:相似主题的对话自动合并到同一个记忆节点
- ✅ 语义相似度检索:基于向量相似度的语义检索,支持模糊匹配
- ✅ 时效性衰减:记忆权重随时间自动衰减,新记忆优先级更高
- ✅ 主动记忆标记:识别"记住""收藏"等关键词,标记为重要记忆不被自动清理
- ✅ 自动剪枝:定期清理低权重边和孤立关键词,保持记忆库轻量
- ✅ 增量训练:新增记忆时自动更新Word2Vec模型,语义表示持续优化
pip install gensim==4.3.3 jieba numpy scipy sqlite3# 查询记忆
python memory_skill.py '查询记忆:Python是什么'
# 存储记忆
python memory_skill.py '{"type":"store","question":"Python的特点是什么","answer":"Python是一种解释型、面向对象、动态数据类型的高级程序设计语言。"}'
# 查看统计信息
python memory_skill.py '{"type":"stats"}'
# 清理冗余记忆
python memory_skill.py '{"type":"prune"}'from memory_skill import MemorySkill
# 初始化记忆系统
skill = MemorySkill()
# 存储记忆
result = skill.store(
question="Python的特点是什么",
answer="Python是一种解释型、面向对象、动态数据类型的高级程序设计语言。"
)
print(result)
# 查询记忆
result = skill.query("Python有什么特点")
print(result)
# 获取统计信息
stats = skill.get_stats()
print(stats)
# 关闭连接
skill.close()| 参数名 | 默认值 | 说明 |
|---|---|---|
_ENCODING_DIM |
128 | 语义向量维度 |
CANDIDATE_TOP_K |
10 | 检索返回最大结果数 |
TEXT_SIMILARITY_THRESHOLD |
0.75 | 记忆合并相似度阈值 |
KW_ENCODING_SIM_THRESHOLD |
0.55 | 关键词合并相似度阈值 |
DECAY_HALF_LIFE_HOURS |
168 | 记忆衰减半衰期(小时,默认7天) |
TOP_K |
50 | PPR检索截断阈值 |
ALPHA |
0.4 | 关键词匹配权重 |
BETA |
0.5 | PPR传播权重 |
GAMMA |
0.1 | 时效性权重 |
采用SQLite存储,共5张表:
- agents:Agent实例元数据
- keywords:关键词节点,存储关键词和语义向量
- contexts:上下文节点,存储对话内容、主题、语义向量
- edges:边表,支持四种边类型:
agent_keyword: Agent与关键词的关联keyword_context: 关键词与上下文的关联keyword_keyword: 关键词之间的共现关联context_context: 上下文之间的语义关联
- metadata:全局状态元数据
memoryHancement/
├── memory_skill.py # 主程序文件
├── data/
│ ├── graph_memory.db # SQLite数据库文件
│ ├── word2vec.model # Word2Vec模型文件
│ └── word2vec.model.wv.vectors.npy # 词向量矩阵
└── README.md # 说明文档
- 存储速度:单条记忆存储<10ms(含向量更新)
- 检索速度:1000条记忆规模下检索<5ms
- 语义匹配准确率:>85%(测试集)
- 内存占用:10000条记忆规模下<500MB
从V4版本升级到V5会自动执行数据库迁移,新增context_context边类型,原有数据完全兼容,无需手动迁移。