Agent Memory Techniques:5大记忆检索模式全对比——语义搜索、时间衰减、混合评分、MMR与重排序
【免费下载链接】Agent_Memory_TechniquesAgent memory for LLMs: 30 runnable Jupyter notebooks covering conversation buffers, vector stores, knowledge graphs, episodic and semantic memory, MemGPT, Mem0, Letta, Zep, Graphiti, LoCoMo benchmarks, and production patterns.项目地址https://gitcode.com/gh_mirrors/ag/Agent_Memory_Techniques点击查看免费下载Agent_Memory_Techniques 是收录 30 个 LLM Agent 记忆技术的开源项目本文核心是 5 大记忆检索模式全对比语义搜索、时间衰减、混合评分、MMR 与重排序。面向新手、几乎无代码帮你快速选型。 为什么检索决定 Agent Memory 的价值想象一位图书管理员回答研究问题他不会只查一个目录而是先按标题精确查找再按主题翻找书架最后请教同事补充不明显的关联。每种方法都能抓住其他方法漏掉的东西。存储记忆是容易的部分难的是检索——在 Agent 需要记忆的那一刻找到对的那条。最朴素的做法是把问题转成向量和所有记忆算余弦相似度取 Top-K。它对简单场景够用但实际会栽在三处精确术语抓不到问latest Python可能漏掉升级到 Python 3.11这条记忆结果重复多条记忆语义相近时返回的是同一件事的 5 个变体相关 ≠ 高度相关候选池一大沾边的也会混进 Top-K。开源项目 Agent_Memory_Techniques 用 30 个可运行的 Jupyter Notebook 系统演示了 Agent Memory 技术其中20 号模块Memory Retrieval Patterns和18 号模块Temporal Memory恰好覆盖本文要对比的 5 大记忆检索模式。先看全景分类 5大记忆检索模式一张表速览模式一句话原理擅长短板在检索流水线中的位置语义搜索向量 余弦相似度同义改写、语义理解精确关键词、缩写第一阶段几乎所有流水线的基础时间衰减越新的记忆得分越高半衰期最新状态类动态信息会误伤永久事实对相关性分数做时间加权混合评分BM25 关键词 语义RRF 融合版本号、缩写、领域术语每阶段都增加延迟两路检索之后MMR相关性 × 多样性的平衡选点去重、结果多样化λ 参数需要调取最终 Top-K 之前重排序Cross-encoder 逐对精读打分提升 Top-K 精度50-200ms 延迟/候选第二阶段的精筛下面逐个拆解。1️⃣ 语义搜索Semantic Search按意思找记忆它做了什么嵌入Embedding模型把一段文本变成一组数字向量意思相近的文本向量方向就相近。语义搜索的流程只有三步把查询文本和每条记忆都变成向量计算查询与每条记忆的余弦相似度-1 到 11 表示方向完全一致按分数排序取 Top-K 注入 Agent 的上下文窗口。项目里的公共工具函数就放在 utils/helpers.py 的cosine_similarity中语义搜索的完整演示在 06_vector_store_memory/vector_store_memory.ipynb。优点与坑✅优点能听懂换一种说法。问我们为什么选这个数据库即使没人说过一模一样的话也能命中技术决策那条记忆。⚠️坑 1精确关键词失灵。Redis cache TTL 这种术语型查询纯向量搜索容易漂移——这正是 20 号 Notebook 里用它做对比实验的原因。⚠️坑 2结果趋同。多条记忆说了类似的事Top-K 会被它们的变体占满。规模提示记忆少于 50 条时余弦相似度基本够用后面的进阶模式收益很小。2️⃣ 时间衰减Temporal Decay让 Agent 记住最新的它做了什么普通向量检索把所有记忆当成同样新鲜于是 Agent 可能引用三个月前的旧决定。18 号模块Temporal Memory的做法是给每条记忆盖上时间戳检索时按年龄打折。核心是衰减函数常用指数衰减分数 e^(−λ × 年龄)其中 λ ln2 / 半衰期。所谓半衰期就是记忆分数掉到一半所需的时间默认7 天半衰期168 小时一周前的记忆得分是今天的 50%线性衰减则匀速下降在 2 倍半衰期时归零最终分数是混合评分最终分 (1 − w) × 语义相似度 w × 新鲜度分新鲜度权重w代码里叫recency_weight默认 0.3。完整实现含 30 天项目跟踪示例在 18_temporal_memory/temporal_memory.ipynb。优点与坑✅优点回答项目最近什么状态上周发生了什么这类问题不再引用过时信息还能支持时间范围查询和as of还原某个历史时刻的认知。⚠️坑永久事实会被误伤——数学公式、API 文档、用户姓名这类常青信息不该随时间贬值需要豁免衰减或设很长的半衰期。⚠️坑每次查询都要给所有候选算衰减分10 万条以上的大记忆库会增加延迟。与 19 号模块的区别Forgetting and Decay 是永久删除低于阈值的记忆时间衰减只是降排名记忆还在需要时可重新激活。3️⃣ 混合评分Hybrid ScoringBM25 关键词 RRF 融合它做了什么语义搜索漏掉的词交给BM25补上。BM25Best Matching 25是信息检索领域的经典关键词算法按词频这个词出现多不多和逆文档频率这个词在全部记忆里稀不稀罕打分天生擅长版本号、缩写、罕见术语。两路检索各出一张排名榜后用RRFReciprocal Rank Fusion倒数排名融合合并成一张对每条记忆累加1 / (k 排名)k通常取 60。打个比方两位朋友各推荐一桌餐厅同时出现在两张榜单且排名都不差的餐厅最终得分最高。RRF 的美妙在于它只看排名、不看原始分——两路分数尺度不同也无所谓无需手动调权重。20 号 Notebook 里的演示查询 Redis cache TTL 正是 BM25 的主场词词都精确纯语义搜索反而容易偏。优点与坑✅优点同时抓住意思和用词官方 README 给出的典型收益是召回率提升 15-30%⚠️坑每多一个阶段就多一点延迟且k值、候选数量等参数需要按领域调小记忆库50 条基本白做。4️⃣ MMR最大边际相关性别让 5 条记忆说同一件事它做了什么想象做歌单你不会连排 5 首伤感情歌即使每首都好——你要的是多样性。MMRMaximal Marginal Relevance把同样的想法搬进检索每次从候选里挑一条标准是MMR 分 λ × 与查询的相关度 − (1 − λ) × 与已选结果的最大相似度λ 1.0只看相关性不管重复λ 0.0只看和已选的有多不同实践中 0.5 ~ 0.7 比较稳。20 号 Notebook 里专门做了 λ 扫描实验0.3 / 0.5 / 0.7 / 0.9可以直观看到结果从高度聚焦滑向高度多样。优点与坑✅优点Agent 最终看到的是一个更宽的认知面而不是同一件事的复读机⚠️坑λ 太偏多样会召回相关但不重要的记忆需要结合自己的数据调。5️⃣ 重排序Re-rankingCross-encoder 给头部结果二次面试它做了什么招聘面试分两轮简历筛选快但粗面谈慢但准。检索也一样——第一阶段语义搜索 / BM25比较的是预先算好的向量快但只是粗筛Cross-encoder 重排序器把查询记忆这对文本一起喂给模型逐词精读给出更准的相关性分。因为要把整个候选对通读一遍Cross-encoder 对全库跑太慢所以流水线里只让它审一小撮头部候选。20 号 Notebook 的实现是融合后取top_k × 3个候选送进去精筛后留top_k × 2。优点与坑✅优点Top-K 的精度明显提升能抓住嵌入相似度察觉不到的细微相关信号⚠️坑它是延迟最贵的一环每候选 50-200msHyDE 之类的查询改写还会再加一次完整 LLM 调用。全流水线约 200-500ms对比纯语义搜索的 20-50ms——实时聊天场景可能要砍掉这个阶段。 组合拳一条完整的记忆检索流水线五个模式不是单选题20 号模块把它们组装成了HybridRetriever五阶段流水线可选HyDE 查询改写让 LLM 先写一段假设答案再拿答案去搜。短问题和长记忆之间的词汇鸿沟就被这段答案搭成了桥。注意假设答案写错了搜索方向会跟着偏所以它只适合开放式问题并行双路检索语义搜索 BM25 同时跑RRF 混合评分两张榜单融成一张Cross-encoder 重排序精筛头部候选MMR 取 Top-K边保相关、边保多样。如果想加时间衰减把衰减乘数挂在重排序之后即可相关度 × 新鲜度20 与 18 两个模块是官方推荐的组合搭档。 怎么选5 大检索模式选型指南你的场景推荐组合理由简单聊天机器人记忆 50 条仅语义搜索余弦相似度够用别过度设计技术问答多缩写/版本号语义 BM25RRF关键词精确匹配是刚需要回答最新状态 / 最近变化再叠时间衰减新旧事实需要区分权重记忆内容大量相似、结果重复再叠 MMR去重、扩视野答案精度要求高客服、研究助手再叠重排序头部精度最值钱大记忆库数百~数千条完整五阶段流水线多阶段收益随候选池增大不想自己拼装24-27 号 Notebook 演示的框架大多内置了这些能力Zep 内部做混合检索Graphiti 对知识图谱做时间感知检索Mem0 提供托管式记忆检索。先看 25_mem0_patterns/mem0_patterns.ipynb 或 27_zep_memory/zep_memory.ipynb 感受一下开箱即用是什么体验 代码与文档在哪里资料路径检索模式完整 NotebookHybridRetriever 全流程memory_retrieval_patterns.ipynb检索模式讲解文档20_memory_retrieval_patterns/README.md时间衰减完整 Notebook衰减函数 时间线temporal_memory.ipynb时间衰减讲解文档18_temporal_memory/README.md语义搜索基础向量存储vector_store_memory.ipynb30 个技术横向对比总表docs/comparison.md术语表BM25、RRF、MMR 等docs/glossary.md关键词索引docs/topics.md学习路径docs/learning_path.md公共工具函数含余弦相似度utils/helpers.py示例对话数据data/sample_conversation.json依赖清单rank_bm25、sentence-transformers 等requirements.txt❓ 常见问题Q1记忆库多大时才值得上完整流水线候选池大到语义搜索开始明显漏才值得一般是数百条以上。50 条以内单路余弦相似度就是最优解——20 号模块的官方 FAQ 也明确说给 100 条的记忆库堆流水线属于过度工程。Q2时间衰减和重排序能一起用吗能而且是推荐组合。官方 FAQ 的写法是在重排序阶段之后乘上时间衰减系数得到相关度 × 新鲜度的最终排序配合 Semantic Memory 还可以给事实打 stable/volatile 标签让永久信息绕过衰减。Q3这和直接用向量存储06 号模块有什么区别06 号是单阶段语义检索是地基20 号是它的扩展版——在语义检索之上加了关键词检索、RRF 融合、重排序和 MMR。先学会 06再进 20是最顺的学习顺序两个模块难度均为 Intermediate分别约 40 分钟和 35 分钟。写在最后存下记忆只完成了 Agent Memory 的一半工作检索策略决定了另一半的价值从单路语义搜索起步等遇到漏关键词、结果重复、引用旧闻这些具体症状时再按需叠加 BM25 混合评分、重排序、MMR 或时间衰减——这正是 20 号 Notebook 里retrieve()方法把每个阶段都做成可开关参数的用意。跑一遍 memory_retrieval_patterns.ipynb五种模式在同一组项目记忆上的差异你十分钟就能看到。赞分享【免费下载链接】Agent_Memory_TechniquesAgent memory for LLMs: 30 runnable Jupyter notebooks covering conversation buffers, vector stores, knowledge graphs, episodic and semantic memory, MemGPT, Mem0, Letta, Zep, Graphiti, LoCoMo benchmarks, and production patterns.项目地址https://gitcode.com/gh_mirrors/ag/Agent_Memory_Techniques点击查看免费下载相关推荐OpenClaw 记忆搜索Memory Search完全指南混合检索、Embedding 供应商与排序调优OpenClaw 记忆搜索Memory Search完全指南混合检索、Embedding 供应商与排序调优 OpenClaw 的 memory_searcAI 应用AI Agent交互助手后端即时通讯网关OpenMemory性能优化终极指南记忆衰减、评分算法与检索动态全解析OpenMemory性能优化终极指南记忆衰减、评分算法与检索动态全解析 OpenMemory是一款为LLM应用打造的本地持久化记忆存储解决方案支持ClaudAgent 记忆人工智能大模型MCP 服务AI AgentRAG后端前端大麦抢票自动化完整指南从环境搭建到首次运行只需 10 分钟大麦抢票自动化完整指南从环境搭建到首次运行只需 10 分钟 还在开售瞬间刷新到手指抽筋却只看到已售罄三个字吗 ticket purchase 是一个基GUI 自动化RPA创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

C51单片机T9输入法:用4x4矩阵键盘实现中文输入

C51单片机T9输入法:用4x4矩阵键盘实现中文输入

简介:面向单片机开发者的C51平台T9输入法实现资源,适合在存储和算力有限的嵌入式设备上构建数字键高效文本输入方案。压缩包共21个文件,约116KB,包含主程序C源码、词库相关头文件、启动汇编、工程配置文件以及编译输出的HEX、LST、…

2026/10/15 18:20:31 阅读更多 →
常驻进程守护实战:从信号处理、多模块到崩溃自愈的完整方案

常驻进程守护实战:从信号处理、多模块到崩溃自愈的完整方案

简介:一个进程常驻与优先级控制的Android工程探索包,包含csdnactivity与servicelive1两个独立模块,适合对系统服务机制感兴趣的中高级开发者研究。内容覆盖守护进程模式、服务管理器注册、启动脚本设置及第三方工具等常见保活方案&#xff0c…

2026/10/15 18:20:31 阅读更多 →
IEC60870开源实现库实战:101/104规约选型、跑通与避坑指南

IEC60870开源实现库实战:101/104规约选型、跑通与避坑指南

简介:这是一款面向电力自动化、SCADA 系统及远程终端单元开发者的 IEC 60870 国际标准开源实现库,对应 lib60870 库的 2.0.1 版本。IEC 60870-5 系列定义了变电站与调度中心之间的通信规范,该库完整支持 101、102、104 三种常用协议&#xff…

2026/10/15 18:20:31 阅读更多 →

最新新闻

SAP系统拆分:注意事项与规避做法(下篇)

SAP系统拆分:注意事项与规避做法(下篇)

上篇梳理了拆分项目的风险:模块集成带来的牵连、数据关联被切断、自开发处理工作量被低估、停机窗口受交易时间表约束、合规敞口放大、跨部门协同吃紧、测试被压缩,以及源系统遗留数据的处理。 本篇说明相应的规避做法,按启动前、执行中、上线…

2026/10/15 19:05:56 阅读更多 →
豆包工作上线新功能,支持跨AI产品一键导入已有配置

豆包工作上线新功能,支持跨AI产品一键导入已有配置

近期,豆包工作持续更新,上线“数据导入与同步”功能,支持从其他AI产品一键导入数据,并推出“在新对话中继续”、消息注释和对话摘要侧栏等能力,进一步优化工作任务中的对话体验。据介绍,豆包工作的“数据导…

2026/10/15 19:05:56 阅读更多 →
氧化锆陶瓷电极原理是什么?氧化锆陶瓷电极精密加工厂家

氧化锆陶瓷电极原理是什么?氧化锆陶瓷电极精密加工厂家

氧化锆陶瓷电极之所以能在氧传感器、固体氧化物燃料电池和高温电化学装置中发挥关键作用,根本原因在于其独特的氧离子导电机制。很多用户搜索“氧化锆陶瓷电极原理是什么”,同时也希望找到氧化锆陶瓷电极精密加工厂家。一、氧化锆陶瓷的晶体结构与氧空位…

2026/10/15 19:05:56 阅读更多 →
Java UDP网络编程实战:从原理到C/S通信案例

Java UDP网络编程实战:从原理到C/S通信案例

1. 为什么我选择用UDP做这个C/S通信案例1.1 从一次局域网调试说起前阵子帮一个做物联网设备的朋友排查问题,他的设备端每隔一秒往服务器发一次状态心跳,用的是TCP长连接。设备数量一上来,服务器端就出现大量连接堆积,资源占用高得…

2026/10/15 19:05:56 阅读更多 →
C# USB摄像头稳定录制方案:AForge+FFmpeg工业级实践

C# USB摄像头稳定录制方案:AForge+FFmpeg工业级实践

简介:本资源是一份面向C#初学者与桌面应用开发者的USB摄像头调用实战项目,聚焦于Windows平台下视频录制与单帧图像保存的核心功能实现。资源提供DirectShow与Media Foundation双框架的代码实践路径,涵盖设备枚举、滤镜图构建、媒体流捕获、文…

2026/10/15 19:05:56 阅读更多 →
【ESP32笔记】ESP中的分区表

【ESP32笔记】ESP中的分区表

本节目标:看懂分区表 CSV 的每一列,会给工程添加自定义分区,并用 esp_partition API 完成擦除、写入、读取一、本节要解决的问题 ESP32 的程序不是"整个 bin 一股脑烧到某个固定地址",而是把整块 flash 划分成多个分区&…

2026/10/15 19:04:55 阅读更多 →

日新闻

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

1. 为什么选择容器化方式部署 LoRa 网络服务LoRa 物联网项目落地时,网络服务器是整个链路的核心枢纽。它负责接收网关上报的数据包、完成去重与解密、再把有效载荷分发给上层应用。早期大家习惯把网络服务器直接装在物理机上,依赖一堆系统库和特定版本的…

2026/10/15 0:00:46 阅读更多 →
共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

1. 共享推理服务里,扩缩容到底难在哪做过大模型推理服务部署的人,大概都经历过这样的场景:一个团队共用一套推理集群,A 业务跑的是 7B 的小模型,B 业务跑的是 72B 的大模型,C 业务白天流量高、晚上几乎归零…

2026/10/15 0:00:46 阅读更多 →
Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

1. 引子:一次内核恐慌引发的追查先从一个真实场景说起。某次我给一台老旧的嵌入式设备折腾系统裁减,为了把启动时间压进两秒以内,我手贱地把一串自认为“没用”的 systemd 服务给 disable 了,其中就包括systemd-remount-fs.servic…

2026/10/15 0:00:46 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/15 16:18:54 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/14 16:30:29 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/15 13:48:15 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 0:14:36 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 9:49:14 阅读更多 →