Agent-memory-召回设计里分段过滤的重要性

我们都知道,记忆存储后,怎么能够在用户提问时召回几个质量高的记忆是核心之一。

在实战中,我在记忆存储时,让agent给其分配我给定的几个类型,并在召回时设计为,匹配到对应的关键词,并进行综合打分(语义相似度+时间匹配+置信度),结果返回的记忆一塌糊涂。

特征分配

在教程中,我观察到给定的代码是给记忆分配对应类型,进而方便后续召回。但是实际上,我发现并不是每条记忆的信息都很简单,有的记忆有时间信息,有的记忆有任务信息,到这里为止用单一关键词分配记忆类型都没问题,但一旦记忆信息里不止一条,比如"昨天会议总结了项目经验"。

那问题就来了,究竟是分配哪个关键词好呢?分配了历史关键词,那如果召回的记忆里全部是昨天只有少数会议呢,agent根本无法分辨哪个关键词更重要,也无法预知后续召回时用户的意图。那么相对好的办法,其实就是让agent根据记忆信息,自动生成多个特征,先保证不遗漏信息。

那么也许有人会问,那么多个关键词,agent怎么判断哪个优先级高呢。

分段过滤

在RAG中,有粗排和精排。从这个角度出发,我们在召回后可以一个过滤来达到粗排的作用。具体做法是,来了一个用户问题,我们先用embedding+BM25,先召回一部分记忆,然后在这一步,结合用户问题做意图解析,做硬过滤。

以我们刚才的喝水为例,用户问的是昨天会议内容细节,一开始的召回记忆就是找出了与"昨天","会议"相关的记忆,然后我们在第二部做硬性筛选,只召回同时有"昨天"+"会议细节"的记忆内容,然后再进一步做综合得分,这样除了可以去掉上周领导喝水这类垃圾记忆,更关键的是,可以不需要我们去优化综合得分的评判公式,因为如果不这么做,我们需要纠结有些记忆没有时间权重,是否要做权重补偿,即缺失了时间维度的信息,会相对提高其他维度的信息,但这样做很难调整,容易出现质量不高但是综合得分被补偿权重拉上来出现在top-k里的场景

相关推荐
xiaoxue..1 小时前
浅聊ReAct:Agent 的执行框架
ai·面试·agent
Old Uncle Tom10 小时前
OpenClaw 记忆系统 -- 记忆预加载
java·数据结构·算法·agent
深海鱼在掘金10 小时前
深入浅出 LangChain —— 第三章:模型抽象层
人工智能·langchain·agent
KaneLogger11 小时前
三省六部 Agent 这条路不通
agent·ai编程
薛定谔的猫36912 小时前
LLM Agents: 从大语言模型到自主智能体的演进与架构解析
ai·llm·agent·machine learning·architecture
Cder16 小时前
用 React + Ink 在终端里「优雅搜索」:开源 CLI 设计与非交互模式实践
前端·agent
熊猫钓鱼>_>17 小时前
当“虾”遇上“马”:QClaw 融合 Hermes 背后的智能体进化论
人工智能·ai·腾讯云·agent·openclaw·qclaw·hermes
DigitalOcean18 小时前
DigitalOcean 打造 AI 原生云,帮助 AI 应用大幅降低成本与运维复杂度
llm·agent
后端小肥肠18 小时前
我把AI童装带货做成了一个Skill,一句话就能出视频
人工智能·aigc·agent