发布时间:2026/6/23 1:59:32
Agent记忆模块系列:03存储与检索链路实测验证
上篇讲了全链路联调与生产踩坑这篇用真实测试数据验证存储检索链路是否跑通。系列索引01架构设计 02实现详解0. 前情提要前三篇讲了01 架构设计三层记忆模型 ADR 决策选 PGvector 不选 Milvus、混合检索三信号融合、HITL 分流02 实现详解PG 建表 StructuredMemoryService CRUD MemoryExtractService Redis 降级本篇聚焦一件事链路跑通了没有。1. 测试方案记忆模块上线前通过两套测试验证核心能力测试端点验证什么Full Suite/api/memory/full-suite语义检索、CRUD、Owner 隔离、HITLEnhanced Suite/api/memory/enhanced-suite混合检索增强验证、Pending 清理、Long ID 删除两套测试的核心区别Full Suite 验证基础能力Enhanced Suite 验证边界情况。2. Full Suite4/4 通过调用/api/memory/full-suite4 项测试一次性串行跑完traceId 贯穿全程 记忆模块综合功能测试开始 [Suite 1] 语义检索测试: hit_rate1.0, irrelevant_oktrue, passtrue [Suite 2] CRUD测试: facts1, rules1, statusoktrue, replacedtrue, deletedtrue, passtrue [Suite 3] 隔离测试: structOktrue, vecOktrue, passtrue [Suite 4] HITL测试: pendingtrue, approvedtrue, rejectedtrue, passtrue 综合功能测试完成 总耗时: 4025ms | 通过: 4/42.1 Suite 1语义检索质量写入 3 条不同表述的记忆用 3 种方式查询验证命中率// 测试数据 [我是一位Java开发者, 最近在开发Agent智能体, Java是最好的开发语言] // 查询与命中结果 {query: 你目前使用工作是什么, top_content: 我是一位Java开发者, top_score: 0.31, hit: true} {query: 最近在做什么, top_content: 最近在开发Agent智能体, top_score: 0.37, hit: true} {query: 什么开发语言是最好的, top_content: Java是最好的开发语言, top_score: 0.58, hit: true} // 无关查询验证 {query: 今天天气怎么样, irrelevant_results: 3, irrelevant_filtered: true}指标结果命中率hit_rate3/3 100%无关过滤irrelevant_ok✅ 正确过滤耗时2057ms向量检索占大头向量数据库实际记录-- structured_memory 表 id185, owner_idsuite-crud, memory_typerule, content新规则回答用英文 id188, owner_idsuite-user-A, memory_typefact, content用户A的秘密信息 id189, owner_idsuite-user-B, memory_typefact, content用户B的公开信息 -- vector_memory 表 id97, namespacesuite-semantic, content我是一位Java开发者, embedding[0.012...], metadata{category:preference} id98, namespacesuite-semantic, content最近在开发Agent智能体, embedding[-0.053...], metadata{category:preference} id99, namespacesuite-semantic, contentJava是最好的开发语言, embedding[-0.012...], metadata{category:preference}2.2 Suite 2结构化 CRUD 完整性验证 L1 StructuredMemoryService 的增删改查是否完整操作API验证方式结果CreateaddFactaddRuleupdateStatus写入后查询✅Readget(ownerId)读取内容匹配✅Updatereplace()全量替换后验证✅DeletedeleteRuledeleteFact按 ID 删除✅// 完整流程 structuredMemory.addRule(ownerId, 新规则回答用英文); structuredMemory.addFact(ownerId, 用户A的秘密信息); structuredMemory.updateStatus(ownerId, updated_at, 2026-06-22); MemorySnapshot snapshot structuredMemory.get(ownerId); // rules [新规则回答用英文], facts [用户A的秘密信息] structuredMemory.replace(ownerId, List.of(新规则2), null, Map.of()); structuredMemory.deleteRule(ownerId, ruleId); structuredMemory.deleteFact(ownerId, factId); // ✅ 全流程无报错2.3 Suite 3Owner 隔离多用户场景下数据必须严格隔离// 用户 A 和用户 B 各自写入 structuredMemory.addFact(suite-user-A, 用户A的秘密信息); structuredMemory.addFact(suite-user-B, 用户B的公开信息); vectorMemory.store(suite-user-A, 这是用户A的专属向量记忆, Map.of(owner,A)); vectorMemory.store(suite-user-B, 这是用户B的专属向量记忆, Map.of(owner,B)); // 查询时各自只看到自己的 MemorySnapshot snapA structuredMemory.get(suite-user-A); MemorySnapshot snapB structuredMemory.get(suite-user-B); // snapA 只含 A 的记录snapB 只含 B 的记录无交叉验证项结果结构化数据隔离structOk✅ A/B 互不可见向量数据隔离vecOk✅ namespace 维度隔离2.4 Suite 4HITL 流程验证置信度分流的完整链路// 中置信度 0.55 ≤ confidence 0.82 → 入 pending 队列 memoryExtract.enqueuePending(ownerId, fact, Map.of(value, 用户喜欢黑色), 0.40, 用户好像喜欢黑色); // 高置信度 ≥ 0.82 → 自动写入 memoryExtract.enqueuePending(ownerId, fact, Map.of(value, 用户是CTO), 0.95, 用户说自己是CTO);pending_memory 表实际数据idkindpayloadconfidencesource_snippetstatus9b78...fact{content:用户是CTO}0.95对话中用户accepted2ea8...rule{content:用户喜欢黑色}0.40推测rejected// 批准通过 → 写入正式表 memoryExtract.resolvePending(pendingId, true); // accepted_to_fact ✅ // 拒绝 → 标记拒绝 memoryExtract.resolvePending(pendingId, false); // rejected_removed ✅指标结果待确认创建pending_created✅批准写入approved_to_fact✅拒绝移除rejected_removed✅pending 表残留remaining_pending0 ✅3. Enhanced Suite3/3 通过调用/api/memory/enhanced-suite验证边界增强能力 增强能力测试开始 [Enhanced 1] HybridSearch: exactHittrue, semanticHittrue, irrelevantFilteredfalse, passtrue [Enhanced 2] CleanupPending: before2, deleted2, after0, passtrue [Enhanced 3] LongIdDelete: id141, deletedtrue, passtrue 增强能力测试完成 总耗时: 2554ms | 通过: 3/33.1 Enhanced 1混合检索增强验证混合检索三信号融合的实测结果{ weights: { vector: 0.6, keyword: 0.3, time: 0.1 }, exact_query: PostgreSQL, exact_results: 2, exact_hit: true, exact_max_score: 0.817, semantic_query: 编程语言, semantic_results: 1, semantic_hit: true, semantic_max_score: 0.378, irrelevant_query: 航空航班, irrelevant_results: 0, irrelevant_min_score: 0.5, irrelevant_filtered: true }查询类型查询词命中条数最高分结果精确查询PostgreSQL20.82✅ 精确匹配语义查询编程语言10.38✅ 语义召回无关过滤航空航班00.00✅ 过滤生效向量数据库实际记录id110, namespaceenhanced-user, content用户擅长Java编程, embedding[-0.060...], metadata{topic:lang} id111, namespaceenhanced-user, content用户习惯使用PostgreSQL数据库, embedding[-0.043...], metadata{topic:db} id112, namespaceenhanced-user, content用户正在开发Agent智能体, embedding[-0.021...], metadata{topic:ml}编程语言语义召回用户擅长Java编程topiclangPostgreSQL精确召回 id111——两条线互不干扰最终按混合得分排序。3.2 Enhanced 2Pending 清理验证过期 pending 记录的批量清理能力// 创建 2 条 pending 记录 pendingIds [ 1366adbc-211a-448c-81f4-c82aa458b715, c931b9d4-fe4d-4d14-bd58-ba7f4159e4ef ] // 批量清理 cleaned pendingMemoryMapper.deleteExpired(); -- before: 2, deleted: 2, after: 0指标结果清理前 pending 数2实际删除数2清理后 pending 数03.3 Enhanced 3Long 型 ID 删除验证 BigAutoGenerator 生成的长整型 ID 删除是否正常// 写入带显式 Long ID 的记忆 vectorMemory.storeWithId(113L, namespace, content, Map.of()); // 删除 deleted vectorMemory.deleteById(113L); // deleted true4. 关键参数配置测试中涉及的参数均通过 YAML 配置外部化ai: memory: # 混合检索权重Enhanced Suite 验证通过 vector-weight: 0.6 # 向量语义权重 keyword-weight: 0.3 # 关键词命中权重 time-weight: 0.1 # 时间衰减权重 # 权重说明初始经验值语义权重最高但不全占留30%给关键词精确召回 # 后续按线上检索命中率持续调优 # 三层去重阈值Suite 1 语义检索验证 dedup: similarity-threshold: 0.85 # 阈值说明cosine ≥ 0.85 判定为语义重复为初始经验值 # 需在标注测试集上验证精确率/召回率后固化 # HITL 置信度分流Suite 4 HITL 验证 pgvector: auto-apply-threshold: 0.82 # ≥ 0.82 自动写入 pending-threshold: 0.55 # 0.55 ~ 0.82 入 pending # 0.55直接跳过不写入 # 向量检索配置 dimensions: 1024 top-k: 3 # 向量召回 topK irrelevant-min-score: 0.5 # 无关结果过滤阈值Enhanced Suite 验证 namespace: dream-saas-memory参数当前状态汇总参数值来源验证状态vector_weight0.6经验值✅ Enhanced Suite 实测通过keyword_weight0.3经验值✅ 同上time_weight0.1经验值✅ 同上dedup_threshold0.85经验值✅ Suite 1 语义检索验证auto_apply_threshold0.82经验值✅ Suite 4 HITL 实测通过pending_threshold0.55经验值✅ Suite 4 同上irrelevant_min_score0.5经验值✅ Enhanced Suite 无关过滤验证所有阈值均为初始经验值需在真实用户数据上持续调优。5. 总结两套测试、7 项验证全部通过测试耗时结果Full Suite4025ms4/4 通过Enhanced Suite2554ms3/3 通过核心验证结论语义检索3 种查询方式均命中命中率 100%结构化 CRUD增删改查全流程无异常Owner 隔离多用户数据严格隔离HITL置信度分流链路完整审批通过/拒绝状态正确混合检索精确语义无关过滤三信号融合生效Pending 清理批量清理能力正常Long ID 删除BigAutoGenerator 生成的 ID 删除正常阈值参数均为初始经验值需在标注测试集和线上日志上验证后固化。有问题评论区见欢迎交流~项目入口dream-saas.com

相关新闻

大语言模型社交支持策略审计:多轮模拟与压力感知框架
2026/6/23 1:59:32

大语言模型社交支持策略审计:多轮模拟与压力感知框架

1. 项目概述:当AI成为“树洞”,我们如何审计它的“共情”?最近和几个做心理咨询和社区运营的朋友聊天,他们不约而同地提到了一个现象:越来越多的人开始向ChatGPT、文心一言这类大语言模型倾诉烦恼、寻求建议。从学业压…

阅读更多
分布式图Transformer训练:自适应并行与稀疏计算优化实践
2026/6/23 1:59:32

分布式图Transformer训练:自适应并行与稀疏计算优化实践

1. 项目概述:当图神经网络遇上Transformer 最近几年,图神经网络(GNN)和Transformer架构无疑是AI领域的两大明星。前者擅长处理非欧几里得数据,比如社交网络、分子结构;后者则在序列建模上大放异彩&#xff…

阅读更多
Windows终极优化神器:3步搞定系统配置与软件安装的完整指南
2026/6/23 1:59:32

Windows终极优化神器:3步搞定系统配置与软件安装的完整指南

Windows终极优化神器:3步搞定系统配置与软件安装的完整指南 【免费下载链接】winutil Chris Titus Techs Windows Utility - Install Programs, Tweaks, Fixes, and Updates 项目地址: https://gitcode.com/GitHub_Trending/wi/winutil 你是否厌倦了每次重装…

阅读更多
写Python函数,什么时候该用全局变量?
2026/6/23 2:59:32

写Python函数,什么时候该用全局变量?

免费编程软件「pythonpycharm」 链接:https://pan.quark.cn/s/48a86be2fdc0一个让我被同事喷了一顿的PR上周我提交了一个PR,代码大概是这样的:# config.py DEBUG True API_URL "https://api.example.com" TIMEOUT 30 MAX_RETRIE…

阅读更多
第4节:我应该选择哪种Kafka?
2026/6/23 2:59:32

第4节:我应该选择哪种Kafka?

Kafka不再是一个单纯的消息引擎系统,而是能够实现精确一次(Exactly-once)处理语义的实时流处理平台。Apache KafkaApache Kafka是最“正宗”的Kafka,也应该是你最熟悉的发行版了。自Kafka开源伊始,它便在Apache基金会孵…

阅读更多
029、自定义命令开发:创建、参数化、共享与团队复用的最佳实践
2026/6/23 2:59:32

029、自定义命令开发:创建、参数化、共享与团队复用的最佳实践

029、自定义命令开发:创建、参数化、共享与团队复用的最佳实践上周五晚上十一点,我盯着终端里那条报错信息看了整整十五分钟——“Command not found: deploy-staging”。明明刚用CodeX的codex command create注册了自定义命令,重启终端后却死…

阅读更多
5分钟快速掌握:用Mermaid Live Editor让技术图表创作变得如此简单
2026/6/23 2:59:32

5分钟快速掌握:用Mermaid Live Editor让技术图表创作变得如此简单

5分钟快速掌握:用Mermaid Live Editor让技术图表创作变得如此简单 【免费下载链接】mermaid-live-editor Edit, preview and share mermaid charts/diagrams. New implementation of the live editor. 项目地址: https://gitcode.com/GitHub_Trending/me/mermaid-…

阅读更多
无名杀:开源三国杀网页版终极体验指南
2026/6/23 2:59:32

无名杀:开源三国杀网页版终极体验指南

无名杀:开源三国杀网页版终极体验指南 【免费下载链接】noname 项目地址: https://gitcode.com/GitHub_Trending/no/noname 无名杀是一款基于经典三国杀玩法打造的开源网页卡牌游戏,将策略对决与高度自定义完美结合。这款完全免费的项目让玩家无…

阅读更多
大语言模型社交支持策略审计:基于多轮模拟与压力感知的系统性方法
2026/6/23 1:59:32

大语言模型社交支持策略审计:基于多轮模拟与压力感知的系统性方法

1. 项目概述:当AI成为“社交顾问”,我们如何审计它的“真心”?最近在跟几个做心理咨询和社区运营的朋友聊天,他们不约而同地提到了一个现象:越来越多的人开始习惯性地向ChatGPT、Claude这类大语言模型倾诉烦恼、寻求建…

阅读更多
嵌入式语音编解码实战:G.726 ADPCM库集成与优化指南
2026/6/23 3:25:21

嵌入式语音编解码实战:G.726 ADPCM库集成与优化指南

1. 项目概述与G.726 ADPCM技术背景在嵌入式语音处理领域,带宽和存储资源往往是寸土寸金的。如果你做过对讲机、VoIP网关或者早期的数字录音设备,一定对如何在有限的比特率下保住语音可懂度这件事深有感触。我当年接手一个车载调度系统的项目,…

阅读更多
ITU656格式化器寄存器配置实战:VBI数据处理与VCR特技播放兼容性
2026/6/21 0:59:13

ITU656格式化器寄存器配置实战:VBI数据处理与VCR特技播放兼容性

1. 项目概述与核心挑战在数字视频处理领域,将原始的视频数据、同步时序以及各种辅助信息打包成一个标准、稳定的串行数据流,是确保设备间互联互通的基础。ITU-R BT.656标准(常简称为ITU656)正是为此而生的一套“交通规则”。它定义…

阅读更多
嵌入式GUI开发实战:emWin环境搭建、配置优化与性能调优指南
2026/6/23 0:40:11

嵌入式GUI开发实战:emWin环境搭建、配置优化与性能调优指南

1. 项目概述与emWin核心价值解析在嵌入式系统开发领域,人机交互(HMI)的设计正从简单的LED指示灯和按键,快速向全彩图形化界面演进。无论是智能家电上的触摸屏、工业PLC的操作面板,还是医疗设备的参数显示,一…

阅读更多
3分钟快速上手:Qwen3大语言模型本地部署完全指南
2026/6/23 0:59:31

3分钟快速上手:Qwen3大语言模型本地部署完全指南

3分钟快速上手:Qwen3大语言模型本地部署完全指南 【免费下载链接】Qwen1.5 Qwen3 is the large language model series developed by Qwen team, Alibaba Cloud. 项目地址: https://gitcode.com/GitHub_Trending/qw/Qwen1.5 阿里巴巴Qwen3大语言模型系列以其…

阅读更多
微信聊天记录备份指南:使用WeChatExporter轻松保存您的珍贵回忆
2026/6/23 0:59:31

微信聊天记录备份指南:使用WeChatExporter轻松保存您的珍贵回忆

微信聊天记录备份指南:使用WeChatExporter轻松保存您的珍贵回忆 【免费下载链接】WeChatExporter 一个可以快速导出、查看你的微信聊天记录的工具 项目地址: https://gitcode.com/gh_mirrors/wec/WeChatExporter 在数字时代,微信聊天记录承载着我…

阅读更多
Cortex-M指令集深度解析:饱和运算、位域操作与分支控制实战
2026/6/23 0:59:31

Cortex-M指令集深度解析:饱和运算、位域操作与分支控制实战

1. 从指令到效率:为什么Cortex-M指令集值得深挖如果你在嵌入式领域摸爬滚打了一段时间,尤其是跟ARM Cortex-M系列单片机打交道,那你肯定对“写寄存器”、“调库函数”这套流程熟得不能再熟了。但不知道你有没有过这样的感觉:项目代…

阅读更多
GIT修改用户名
2026/6/22 5:10:42

GIT修改用户名

在GIT中修改用户名可按以下步骤操作: 查看当前git的用户名,使用命令git config --list或git config user.name。修改git用户名,使用命令git config --global user.name "xxx(新的用户名)",将其中…

阅读更多
Win11Debloat:让你的Windows系统重获新生的终极优化工具
2026/6/22 10:07:50

Win11Debloat:让你的Windows系统重获新生的终极优化工具

Win11Debloat:让你的Windows系统重获新生的终极优化工具 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declutter and …

阅读更多
技术深度解析:m4s-converter实现原理与B站缓存视频转换最佳实践
2026/6/21 13:29:25

技术深度解析:m4s-converter实现原理与B站缓存视频转换最佳实践

技术深度解析:m4s-converter实现原理与B站缓存视频转换最佳实践 【免费下载链接】m4s-converter 一个跨平台小工具,将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter m4s-converter是一个…

阅读更多